2013-04-26 18 views
0

У меня есть экземпляр MYListCtrl, который является производным классом от CListCtrl в пределах CTabCtrl экземпляра. Я внедрил метод onSize для MYCListCtrl и сопоставил его с сообщением WM_SIZE.Как уведомить все элементы управления в CTabCtrl о том, что их нужно перерисовать (должен изменить их размер)?

Я хочу изменить размер MYListCtrl при изменении размера окна CTabCtrl, изменение размера должно основываться на размерах CTabCtrl. Как я могу уведомить MYListCtrl о том, какое изменение размера необходимо?

ответ

3

Вам необходимо реализовать onsize для родительского элемента, то есть элемента управления вкладкой. Когда вызывается элемент управления tab.onresize, он должен, в свою очередь, изменять размер элемента управления списком. С помощью setwindopos вы можете изменить размер элемента управления списком. Что-то вроде этого:

void MyTabControl::OnSize(UINT nType, int cx, int cy) 
{ 
    m_ListControl.SetWindowPos(/*various parameters */); 
} 
+0

У меня нет m_list .. как участник MyTabControl. Я получаю Tabcontrol из листа свойств –

+0

Родитель, который на самом деле изменяется, требует вызова setwindowpos на его дочерних элементах. И, в свою очередь, каждый дочерний элемент управления, который хочет изменить размер/положение своих детей, должен вызвать setwindopos на своих дочерних элементах и ​​т. Д. И т. Д. Вам, вероятно, придется начать обработку onsize из содержащего окна до последнего дочернего элемента управления, который вы хотите изменить или изменить. – Rich