如何通知 CTabCtrl 中的所有控件它们应该重绘啥(应该改变它们的大小)?
Posted
技术标签:
【中文标题】如何通知 CTabCtrl 中的所有控件它们应该重绘啥(应该改变它们的大小)?【英文标题】:How to notify all controls within CTabCtrl what they should be redrawn(should change their size)?如何通知 CTabCtrl 中的所有控件它们应该重绘什么(应该改变它们的大小)? 【发布时间】:2013-04-26 10:30:46 【问题描述】:我得到了一个 MYListCtrl 实例,它是从 CTabCtrl
实例中的 CListCtrl
派生的类。
我已经为 MYCListCtrl 实现了onSize
方法,并将其映射到WM_SIZE
消息。
我想在调整包含 CTabCtrl 的窗口大小时更改 MYListCtrl 的大小,调整大小应基于 CTabCtrl 的尺寸。 如何通知 MYListCtrl 需要调整大小?
【问题讨论】:
【参考方案1】:您需要为父级实现 onsize,即选项卡控件。当标签控制时调用它又应调整列表控件的大小。使用 setwindopos,您可以调整列表控件的大小。像这样的:
void MyTabControl::OnSize(UINT nType, int cx, int cy)
m_ListControl.SetWindowPos(/*various parameters */);
【讨论】:
我没有 m_list.. 作为 MyTabControl 的成员。我从属性表中得到 Tabcontrol 实际调整大小的父级需要在其子级上调用 setwindowpos。反过来,每个想要调整其子控件大小/位置的子控件都需要在其子控件上调用 setwindopos 等。您可能必须从包含窗口开始处理 onsize 到要调整大小或重新定位的最后一个子控件。以上是关于如何通知 CTabCtrl 中的所有控件它们应该重绘啥(应该改变它们的大小)?的主要内容,如果未能解决你的问题,请参考以下文章
MFC 中 CTabCtrl 与 CPropertySheet 哪个更受欢迎?