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