Subclass(子类化)是MFC中最常用的窗体技术之一。子类化完成两个工作:一是把窗体类对象attach到一个windows窗体实体中(即把一个窗体的hwnd赋给该类)。另外就是把该类对象的消息加入到消息路由中,使得该类可以捕获消息。
让edit能够消息路由
if (m_pEdit == NULL)
{
m_pEdit = new CEdit();
m_pEdit->SubclassWindow(GetDlgItem(1001)->GetSafeHwnd());
}
-
通知消息(Notification Messages):
CEdit
控件会发送各种通知消息给其父窗口,例如EN_CHANGE
(当文本改变时)、EN_KILLFOCUS
(当控件失去焦点时)等。这些通知消息不是WM_COMMAND
消息,但你可以通过消息映射来处理它们,就像处理WM_COMMAND
消息一样。
这行代码将之前创建的CEdit
对象与实际的编辑控件窗口关联起来。SubclassWindow
函数是MFC中用于子类化窗口的函数,它将CEdit
对象的消息处理机制附加到现有的窗口上。这样,当窗口接收到消息时,CEdit
对象的消息处理函数就会被调用。