搞了很久,才發現原來是自己多事造成的問題。總之,先大致解釋一遍好了:
如果動態產生了一個物件,例如CBotton,把它的click event 接來parents的流程應該是這樣:
1. 當然要定義一個ID
#define IDC_BUTTON_UNICODE 1077
2. 利用這個ID去create它
m_Unicode.Create(_T("My Unicode Button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, rect, this, IDC_BUTTON_UNICODE);
this是parents,message 應該會傳去給parents
3. 再來就是在message map 中加入它
BEGIN_MESSAGE_MAP(CRulerRichEditCtrlDemoDlg, CDialog)
//{{AFX_MSG_MAP(CRulerRichEditCtrlDemoDlg)
ON_BN_CLICKED(IDC_BUTTON_UNICODE, OnButtonUnicode)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
4. 最後就是定義函式
void CRulerRichEditCtrlDemoDlg::OnButtonUnicode()
我搞砸的部份在於,我定義了一個
class WUnicodeButton : public CButton
原來照上面的做也就OK了,但我多事在這個class內部又去收click event,結果外面就收不到了,真是畫蛇添足呀!
相關的做法可以參考這裡:
沒有留言:
張貼留言