MFC消息映射机制+SendMessage和PostMessage区别(非常详细)

本文深入解析MFC消息映射机制,揭示类间函数调用本质。通过实例展示如何添加消息响应函数,包括消息映射表的创建与使用。对比PostMessage与SendMessage,阐述两者在消息处理上的异同。

消息映射机制原理

消息映射的实质其实是类A对类B的一种函数调用,类似于qt中的信号与槽机制。
MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,也就是所说的消息映射表。在消息映射表中,消息与对应的消息处理函数指针是绑定在一起的。各个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类所对应的静态对照表中。当有消息需要处理时,程序只要搜索这个消息静态表,查看表中是否含有该消息ID,就可以知道该类能否处理此消息。如果能处理该消息,则同样依照静态表找到并调用对应的消息处理函数。
Windows程序是基于消息机制来编程处理的。

举例

假设我们给类添加一个打开文件的消息响应函数,MFC会在四处添加代码:

1)类头文件中

// 生成的消息映射函数
protected:
DECLARE_MESSAGE_MAP()
protected:
//afx_msg宏表示声明的是一个消息响应函数。
afx_msg LRESULT OpenFile(WPARAM wParam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Minuw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值