MFC:创建控件后的通知

时间:2018-12-18 01:12:22

标签: mfc controls

我是MFC的新手。我选择通过VS2017中的向导创建一个办公风格的MFC应用程序。现在,我想扩展CMFCShellTreeCtrl,所以我创建了另一个类作为基类。基础很好。我的问题是我想做类似的事情:

whatever MyClass::FuncitonCalledAfterControlCreated(...)
{
  SetFlags(GetFlags() | SHCONTF_NONFOLDERS);
  ModifyStyle(0x0, TVS_CHECKBOXES);
}

但是我在弄清楚要覆盖哪个虚拟函数时遇到麻烦,还是应该执行其中的一种消息映射?我想这是什么,对所有控件来说都是相同的吗?无论如何,合适的功能是什么?

TIA !!

1 个答案:

答案 0 :(得分:1)

如果控件是从CWnd派生的,则发出WM_CREATE,可以通过以下消息映射将其定向到控件:

ON_WM_CREATE()

和成员函数:

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

如果在对话框资源上,则不会发生WM_CREATE。有人说您可以使用PreSubClassWindow,但是在测试Create()的情况下,该调用是在CreateWindowEx调用之前进行的,因此无法用于设置TVS_CHECKBOX样式。我没有尝试使用带有树控件的CDialog并检查调用堆栈。