派生控件从标准控件
与任何 CWnd派生类,您可以通过派生新类修改控件行为从现有控件类。
创建派生的控件类
从现有的控件类派生您的类并可以选择重写 创建 成员函数,以便提供必要的参数传递给的基类 创建 功能。
提供消息处理程序成员函数和消息映射项修改控件行为以响应特定窗口的消息。 请参见将消息映射到函数。
提供新成员函数扩展控件的功能 (可选)。
使用对话框中的派生控件需要额外的工作。 控件的类型和位置在对话框在对话框模板资源来指定。 如果您创建从派生的控件类,可以在对话框模板不能指定它,因为资源编译器没有知道您的派生类。
将派生的控件在对话框
嵌入派生的控件类的对象在派生的对话框类的声明。
重写在您的对话框类的 OnInitDialog 成员函数调用派生的控件的 SubclassDlgItem 成员函数。
SubclassDlgItem “动态子类”从对话框模板创建的控件。 当控件动态子类时,将挂钩到窗口,处理在应用程序中的某些消息,然后传递其余的消息到窗口。 有关更多信息,请参见类 CWnd 的 SubclassDlgItem 成员函数在 MFC 的引用。 下面的示例演示如何编写调用 SubclassDlgItem的 OnInitDialog 重写:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
由于该派生的控件在对话框类嵌入,它将构造,在对话框中,构造,并将销毁它,当销毁对话框。 与 手动添加控件的示例比较此代码。