情况是这样的:在对话框中有一个自定义组合框控件CMyComboBox,它继承自MFC类CComboBox。在自定义的组合框中,要处理这样一种情况,如果用户没有改变CMyComboBox的值,则不给父窗口发消息,如果改变了,则通知父窗口以进行其它的更新工作。解决方案如下:
//
CMyComboBox.h
class CMyComboBox : public CComboBox
{
afx_msg BOOL OnSelchange();
}
class CMyComboBox : public CComboBox
{
afx_msg BOOL OnSelchange();
}
//
CMyComboBox.cpp
BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
ON_CONTROL_REFLECT_EX(CBN_SELCHANGE, OnSelchange)
END_MESSAGE_MAP()
BOOL
CMyComboBox::OnSelchange()
{
if(值发生改变)
{
//注意:返回“假”时会通知父窗口
return FALSE;
}
//注意:返回“真”时不通知父窗口
return TRUE;
}
BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
ON_CONTROL_REFLECT_EX(CBN_SELCHANGE, OnSelchange)
END_MESSAGE_MAP()
BOOL
CMyComboBox::OnSelchange()
{
if(值发生改变)
{
//注意:返回“假”时会通知父窗口
return FALSE;
}
//注意:返回“真”时不通知父窗口
return TRUE;
}