请教消息反射的简单问题——
重载一个CButton类,处理反射消息如下:
.h文件——
protected:
//...
afx_msg BOOL OnClicked();
//...
.cpp文件——
BEGIN_MESSAGE_MAP(CMyButton, CButton)
//{{AFX_MSG_MAP(CMyButton)
ON_CONTROL_REFLECT_EX(BN_CLICKED, OnClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CMyButton::OnClicked()
{
//...
return FALSE;
}
在某个Dialog中,有成员变量CMyButton* m_btn,并申明成员函数
afx_msg void OnModeChange(),企图在m_btn的OnClick事件中调用,
该dialog实现文件中相关代码如下:
IMPLEMENT_DYNCREATE(CICAUnitTestView, CFormView)
BEGIN_MESSAGE_MAP(CICAUnitTestView, CFormView)
ON_BN_CLICKED(IDB_AUTO_MODE,OnModeChange)
END_MESSAGE_MAP()
void CICAUnitTestView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_btn = new CMyButton;
m_Radio1->Create("自动模式",WS_VISIBLE|WS_CHILD,CRect(100,100,200,130),this,IDB_AUTO_MODE);;
}
void CICAUnitTestView::OnModeChange()
{
//...
}
结果点击m_btn之后,只执行了CMyButton中的OnClick事件,而并没有执行
CICAUnitTestView::OnModeChange()函数!
请问可能是什么原因?