我有一个自CWnd派生的MFC控制,它的工作原理是这样的:定制MFC控件包含其他控件 - 没有得到消息通过
- 控制有其自身的OnPaint,和黑色的背景
- 点击控件上的任何位置都会导致编辑控件出现在该位置,无边框和黑色背景,因此它会混合在此框中的用户类型并点击输入,框消失并且控件的自定义绘画功能呈现相同文字在背景上的相同位置。
因此,我们的控制拥有CCustomEdit,当你点击控件创建或移动的背景,可见:
CCustomEdit::Show(Rect &rc,CCustomControl *pParent)
{
if (!::IsWindow(m_hWnd))
{
Create(ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | ES_NOHIDESEL | ES_CENTER | ES_UPPERCASE, rc, pParent, 999);
}
else
MoveWindow(&rc);
}
主要部件的实际工作OK(我们就完蛋了与方法)。但有一件事情不起作用,CCustomEdit
自行注册EN_CHANGE
事件等等。当CCustomEdit
被创建为普通对话框控件(对话框模板上的CEdit
,DDX绑定到CCustomEdit
变量)这些工作,但在CCustomControl
他们不是。
CCustomEdit::PreSubclassWindow()
调用SetEventmask()
和是被调用。 CCustomEdit
的ON_CHAR
处理程序也被称为编辑框中的按键,但编辑框消息如EN_CHANGE
的处理程序不是。
是否有任何明显的事情,如改变风格标志?否则,为什么我的自定义控件停止这些事件到达包含的编辑控件?