MFC消息映射机制实现
MFC消息映射机制实现
Amamatthew 发表于3年前
MFC消息映射机制实现
  • 发表于 3年前
  • 阅读 42
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中,定义一个消息和消息函数对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类对应的静态表中。当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。如果能处理该消息,则同样依照静态表很容易找到并调用对应的消息处理函数。

AFX_MSG:ClassWizard和AppWizard在源代码文件中可以写在你的文件中插入特殊格式的注释分隔符标记的地方。

AFX_MSG用于在你的头文件(. h)中标记消息映射相关的ClassWizard条目的开始和结束:

BEGIN_MESSAGE_MAP 是定义:用来说明什么事件发生时,应该执行哪个函数子程序。

BEGIN_MESSAGE_MAP( theClass, baseClass )

参数

theClass

用来指定消息映射所属的类的名字。

baseClass

用来指定theClass的基类的名字。

使用BEGIN_MESSAGE_MAP宏开始你的消息映射的定义。用来说明什么事件发生时,应该执行父对象的哪个子程序。

在你的类的成员函数的实现文件(.CPP)中,使用BEGIN_MESSAGE_MAP宏开始消息映射,然后为每个消息处理函数加入一个入口,最后用END_MESSAGE_MAP宏结束消息映射。

每个消息映射入口的格式如下:

ON_Notification(id, memberFxn)

其中id指定了发送通知的控件的子窗口的ID,而memberFxn指定了处理该通知的父对象中的成员函数名。

父对象的函数原型格式如下:

afx_msg void memberFxn( );

可能的消息映射入口如下:

映射入口

何时向父对象发送消息

ON_BN_CLICKED

用户单击按钮时

ON_BN_DOUBLECLICKED

用户双击按钮时


共有 人打赏支持
粉丝 66
博文 719
码字总数 76443
×
Amamatthew
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: