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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC中消息映射实例
1、MFC中用DECLARE_MESSAGE_MAP宏声明消息映射函数; 2、MFC中用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏实现消息映射; 3、每个MFC应用程序中都存在一个消息响应链表,这个表由DECLARE_MESSAGE_MAP定义,并 由BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏之间的代码填充内容。这样,取得消息后,MFC
VS2013/MFC编程入门之四(MFC消息映射机制概述)
上一讲为大家简单分析了MFC应用程序框架,这一讲是关于MFC消息映射机制的内容。        前面已经说过,Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。        什么是消息        窗
VC----MFC消息映射机制详解
Windows程序和MFC程序是靠消息驱动的,他们对于消息的处理本质上是相同的。只是Windows程序对于消息处理的过程十分清晰明了,MFC程序则掩盖了消息处理的过程,以消息映射的方式呈现在开发者面前,使得开发消息的处理十分简单。用多了mfc就想对它的消息映射机制有一个本质的了解,下面将对消息映射做详细的分析。当然,在分析MFC消息映射之前首先对Windows程序的消息处理过程进行一个简单的描述。
MFC消息映射笔记
大家有没有思考过当一个消息出现,应用程序框架是如何将消息与对象建立关系的?1.消息宏\quad为了支持消息映射,MFC提供了3种宏。1.1消息映射的声明和分解宏消息映射的声明和分界宏包含在CCmdTarget类中,如下表: 就是这3个宏组织了一张庞大的消息映射网络。所有继承与CCmdTarget类的派生类均具有这种特性。下面分别说说这个宏1)DECALRE_MESSAGE_MAP宏这个宏的定义
MFC中手动添加消息映射
1.在.cpp源文件中 BEGIN_MESSAGE_MAP,END_MESSAGE_MAP之间添加映射,比如这里的添加一个我们自定义的消息WM_RECVDATA,就在这映射表中添加ON_MESSAGE(WM_RECVDATA,OnRecvData),其中ON_MESSAGE是自定义消息的映射方式,如果你添加的是系统消息,比如是WM_LBUTTONDOWN,就添加ON_WM_LBUTTONDOWN
MFC中ON_COMMAND_RANGE()消息映射
本文转载自: ON_COMMAND_RANGE多个按钮响应一个函数 ON_COMMAND_RANGE()使用注意事项 来源:ON_COMMAND_RANGE多个按钮响应一个函数 很久没来写博客了,都收到官方的邮件提醒再不写就不是专家会员,没办法只能再写一篇完成任务。 今天主要介绍一下ON_COMMAND_RANGE的用法 第一次用这个方法还是刚毕业那会,那时写过一个
MFC六大机制之三:消息映射机制
上篇我们通过重写WindowProc函数来处理消息,今天我们采用下面的方法实现同样的功能  1.建一个win32简单应用程序,不要认为这样就不能写出MFC程序,因为是不是MFC程序取决于调没调MFC函数。 2. 删除入口函数,只留下#include "stdafx.h" 3.将stdafx.h中的头文件 更改为 。 4.Project-->Settings菜单项中设置使用MFC库
MFC消息映射宏
<br /> <br />MFC消息映射宏 <br />消息的传递与发送是Windows应用程序的核心所在,任何事件的触发与响应均要通过消息的作用才能得以完成。在SDK编程中,对消息的获取与分发主要是 通过消息循环来完成的,而在MFC编程中则是通过采取消息映射的方式对其进行处理的。相比而言,这样的处理方式要简单许多,这也是符合面向对象编程中尽可 能隐含实现细节的原则。一个完整的MFC消息映射包括对消息处理函数的原型声明、实现以及存在于消息映射中的消息入口。这几部分分别存在与类的头文件和实现文件中。一般情况下
VS2013如何在MFC工程中定义自己的消息映射函数
VS2013环境下,在创建的MFC工程ThreadSendMSG中自定义消息映射函数
MFC之消息映射机制实现方法
本文分析了完成消息映射的的应有步骤以及消息映射机制的原理性分析。