如何通知 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 哪个更受欢迎?

使 MFC CTabCtrl 不使用绘图选项卡的完整控件宽度

如何调整 CTabCtrl 的大小以适合其内容

MFC中TabCtrl怎么用??

在 ListView 中列出所有激活的通知

AEJoy —— 如何使用 AE 中的表达式控件预设