子例化需要继承WTL中的CWindowImpl,例如
class CEditImpl : public CWindowImpl<CEditImpl, CEdit>
{
BEGIN_MSG_MAP(CEditImpl)
MSG_WM_CONTEXTMENU(OnContextMenu)
END_MSG_MAP()
void OnContextMenu ( HWND hwndCtrl, CPoint ptClick )
{
MessageBox("Edit control handled WM_CONTEXTMENU");
}
};
使用时m_MyEdit.SubclassWindow(GetDlgItem(IDC_EDIT2));
子例化Attach和SubclassWindow的区别:
Attach其实就是将CWindow的m_hWnd赋值。
SubclassWindow比Attach多一步,就是子例化。
除此之外,还可以使用,如DDX_CONTROL宏
DDX_CONTROL(IDC_TREE, m_wndTree)
因为DDX_CONTROL宏里面包括了SubclassWindow。