我有一個自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
的處理程序不是。
是否有任何明顯的事情,如改變風格標誌?否則,爲什麼我的自定義控件停止這些事件到達包含的編輯控件?