MFC消息映射

想请问一下,MFC的消息映射是建立在多态的基础上的么? 有没有比较易懂的讲解。
谢谢

所谓多态是继承间的性质,而消息映射是系统处理消息的方法和过程,2者没什么关系。
建立消息映射在MFC中是比较简单的,完全可以自己定义消息,步骤如下:
1,#define UM_MYMESSAGE WM_USER+1
2,afx _msg void MyMessage();//声明函数原型
3,ON_MESSAGE(UM_MYMESSAGE,MyMessage)//添加消息映射
4,void CMainFrame::MyMessage(0
{
//添加处理过程
}
5,在需要发送消息的地方SendMessage(UM_MYMESSAGE);
或PostMessage(UM_MYMESSAGE);
我知道说了可能你也不懂,具体可参考孙鑫的MFC视频教程,百度一下就能找到,视频通俗易懂。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-25
不是。简单说它是通过为每个窗体建立一张消息映射表,表的内容是一个消息对应一个处理函数,当某个窗口收到一个消息时即查表找到相应的处理函数完成回调。这张表的构建可由MFC提供的几个宏完成。
多态的机制是需要建立一张虚函数表,由于MFC的类函数比较多,继承的层级也比较大,如果用多态的话需要建立很多很大的虚函数表,占用空间较多,查找效率也很差,所以为了避免这种糟糕的设计,MFC采用了消息机制的方式巧妙地解决了该问题。
第2个回答  2010-09-25
两位网友说的很清楚,不用我再补充什么了。

MFC 消息映射原理是什么?
消息映射就是建立一个消息和函数的对应表,当收到消息时查找表,如果表中有相应的消息,就将消息交给相应的函数处理。通俗点讲,消息映射表就是一个记录了消息号和相应处理函数的数组。当然表中还有其他信息,这里先说矛盾的主要方面了。其中消息映射表中的每个元素都是一个结构体变量,他的成员很多,最...

DECLARE_MESSAGE_MAP()是什么意思啊?
DECLARE_MESSAGE_MAP()是一个宏,用于在MFC(Microsoft Foundation Classes)应用程序中声明消息映射。在MFC中,消息映射是一种机制,用于将Windows消息(如鼠标点击、键盘按键等)映射到特定的成员函数。这使得开发者可以方便地处理各种用户输入和系统事件。DECLARE_MESSAGE_MAP()宏用于在类的实现文件中声明一...

MFC中消息映射函数和普通成员函数有什么区别
我认为最大的一个区别就是消息映射函数不是由你调用,而是当消息被触发时由MFC框架进行调用的,普通的成员函数则肯定是由你自己来调用啦。譬如你为鼠标左键映射了一个消息函数,那么当鼠标左键消息触发时,你肯定不用理会响应函数啦,系统会帮你调用该函数。有道理的话,请采纳。

在mfc中的消息映射中,有这样几种:on_command(id号,函数),on_wm_lbu...
on_command(id号,函数)是将菜单,或工具栏命令映射到指定的函数上 ON_WM_LBUTTONDOWN 是映射WM_LBUTTONDOWN (鼠标左键按下) 到成员函数 OnLButtonDown(UINT nFlags,CPoint point );

刚学MFC这是什么意思,不太明白?
BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间的就是传说中的消息映射。ON_WM_CREATE()表示映射关系,参数有消息和处理该消息的响应函数。这么说吧,你以后会自定义很多消息,这些消息的处理就是通过这个部分来实现的,使用的大致流程如下(我不用windows半年了,具体函数的拼写可能有误,但思路没问题,你见谅...

VC++ MFC 中的消息映射宏都有哪些
消息映射宏的种类 为了简化程序员的工作, MFC定义了一系列的消息映射宏和像AfxSig_vv这样的枚举变量,以及标准消息处理函数,并且具体地实现这些函数。这里主要讨论消息映射宏,常用的分为以下几类。用于 Windows消息的宏,前缀为“ON_WM_”。这样的宏不带参数,因为它对应的消息和消息处理函数的函数名称...

VC++的MFC中关于消息映射,BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间...
BEGIN_MESSAGE_MAP和END_MESSAGE_MAP 这两个宏表示这个类的消息映射开始和结束,中间的宏定义定义了此类的所有的消息映射。前面的afx_msg void OnPaint();只是声明OnPaint()函数是一个消息处理函数,然后是OnPaint()函数的定义,但是函数定义在那儿是不会自己去执行的,ON_WM_PAINT()宏是一个系统消息...

vc++ mfc当中怎么来添加添加消息映射?
如果自定义的消息 define WM_MY_MSG WM_USER + 1 头文件里声明:void Fun(WPARAM wParam, LPARAM lParam);cpp里:BEGIN_MESSAGE_MAP(CSubclass, CBaseclass)ON_MESSAGE(WM_UPDATE_ITEMS, Fun)END_MESSAGE_MAP()void CSubclass::Fun(WPARAM wParam, LPARAM lParam){ ...} ...

什么是消息映射?它的作用是什么?
消息映射简单来说 就是一张表, 上面有两列,一列是 “消息”名称,另一列是 “处理函数”名字。它的作用是,当 甲事件发生,消息甲 到达,查映射表,找出 消息甲 对应的 处理函数,调用 此 处理函数处理。其它 事件发生,有相应消息到达,查映射表,找出处理函数,处理。例如下面就是一张CXxx...

MFC中 消息映射之后,不能调用相关处理函数
这是因为CMainWnd多半被CView的窗口挡住了,接收不到鼠标左键的点击消息(鼠标消息发给了CView窗口)改用你的CView派生类来接收鼠标消息就行了。

相似回答
大家正在搜