MFC 消息映射表 及 相关宏定义

MFC相关技术说明:<可参阅MSDN MFC TNO 5>
MFC 中通过通过不同于SDK的switch的方法来处理WINDOWS消息,
由消息映射表(Message Map)和虚函数多态来处理指定的窗体消息
 
1 声明一个消息映射表(Message Map)
在能处理消息的类中中添加宏
DECLARE_MESSAGE_MAP()
 
注 深入浅出 MFC中有更详尽系统的概述 这里只介绍几个宏定义
这个宏实现了3个功能 :
1 私有数据成员声明   AFX_MESSAGEMAP_ENTRY _messageEntries;数组
2 保护数据成员声明   AFX_MESSAGE_MAP _messageMap指向_messageEntrie数组
3声明并定义虚保护成员函数  GetMessageMap()用于得到 _messageMap的地址 
宏的实现及相关的成员变量
 
注意 具有消息处理得类必须从 CCmdTarget派生而来
CCmdTarget派生的类至少可以处理 WM_COMMAND消息而只有消息的派发可以参看
CMDTARG.CPP中的函数实现 AFX_STATIC BOOL AFXAPI _AfxDispatchCmdMsg()派发消息的函数)
类具有处理窗体的消息必须要从 CWnd类中派生
以下是 CWnd及其派生类处理并派发消息的成员函数
CWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
 
2实现一个消息映射表
在类的实现文件中添加消息映射表
表头宏  BEGIN_MESSAGE_MAP(CMyClass, CBaseClass)
 
表未宏  END_MESSAGE_MAP()
 
在表中添加相关的宏可以实现过滤 拦截处理消息 否则消息会顺着消息映射表在类的派生结构中流向基类
 
 
2.1处理标准 WINDOW消息宏
(AfxMsg_.h的头文件中找到相关宏定义 )
在消息映射表中添加 ON_WM_xxx(xxx为消息名称
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值