2 jujiawu1024 jujiawu1024 于 2016.04.01 23:01 提问

MFC中关于消息映射函数定义的问题
mfc

MFC中有那么多的消息,每个消息都要定义一个消息映射函数么?能不能简化到一个函数中定义,消息函数和普通函数的区别是什么?

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.01 23:01
已采纳
stadyhungry
stadyhungry   2016.04.02 00:33

消息映射的作用就是告诉系统我们关心哪一些消息,当这样的消息产生时就调用我们自己写的的消息响应函数,比如下面的消息映射:

BEGIN_MESSAGE_MAP(MessageMapDlg, CDialogEx)
    ON_BN_CLICKED(IDC_BTN_1, OnBnClicked_Hello)
    ON_BN_CLICKED(IDC_BTN_2, OnBnClicked_Hello)
END_MESSAGE_MAP()

我们自己的消息响应函数:

 void MessageMapDlg::OnBnClicked_Hello()
{
    // TODO: 在此添加控件通知处理程序代码
    MessageBox(_T("Hello!"));
}

当我们点击按钮1(IDC_BTN_1)或者按钮2(IDC_BTN_2)时就会发送_BN_CLICKED消息,而这个消息正是我们通过消息映射ON_BN_CLICKED告诉系统我们关心的也是这个消息,系统检测到这个消息后就会调用我们的OnBnClicked_Hello函数,从而弹出一个消息框显示“Hello!”。
消息响应函数(OnBnClicked_Hello)和普通函数没有什么区别,前者是产生特定消息后被执行的函数,后者是我们想调用的时候自己调用的。

CSDNXIAON
CSDNXIAON   2016.04.01 23:12

MFC 关于回调函数定义问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!