MFC学习笔记--消息映射机制

MFC将大部分的Windows消息及其处理函数封装进类,采用一套适合面向对象的机制--消息映射来处理消息;
消息映射实质上是一张消息及处理消息的函数相互关联的表,以及分析处理这张表的应用框架内部的一些程序代码;
MFC的框架结构中消息处理函数以类的成员函数的形式存在,每个特定的消息都有对应的消息处理函数。

消息映射包括了三部分:
    1.在类的声明头文件.h中加上一行宏调用:
        afx_msg int OnCreate();
        DECLARE_MESSAGE_MAP()        //声明消息处理函数
    2.在类的实现文件中(.cpp)中加上消息映射表:
        BEGIN_MESSAGE_MAP(类名,父类名)
            ON_WM_CREATE()        //消息映射入口项
        END_MESSAGE_MAP
    3.在类的实现文件(.cpp)最后加上消息处理函数的函数体:
        void 类名::OnCreate()    {...}
MFC应用程序对消息的处理大致分为两个阶段。
    第一个阶段,使用应用程序类的Run()函数把消息从应用程序的消息队列提取出来,并且发送到目标类对象,即主框架窗口类对象;
    第二个阶段,因为所有消息的最终目标并不一定是主窗口类对象,也可能是其他类,所以主窗口类对象在MFC消息映射处理机制的协助下继续寻找消息处理函数。
                
Visual Studio添加消息映射方式:
    1.自动添加。    a.首先找到类视图和属性窗口,(类视图,非解决方案视图)
                    b.在类视图中选中需要在哪个类中添加消息映射,属性窗口会出现相对应的属性,在属性窗口中选择消息按钮,找到你想添加的消息,例如LBUTTONDOWN,下拉添加,
                    c.添加完成后,会在头文件.h中显示该消息处理函数的声明、执行文件.cpp的消息映射表中看到消息入口、在.cpp最底下看到消息处理函数代码。


    2.手动添加。    a.在头文件中,添加消息映射的声明;例如 afx_msg int OnLButtonDown();
                    b.在cpp文件消息映射表处,添加消息映射,例如添加ON_WM_CREATE();
                    c.在cpp文件中,添加消息处理函数的函数体,实现消息需要执行的流程。
VS开发MFC程序时字符集默认是使用Unicode字符集(Unicode字符集是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求)
如果发现使用MessageBox函数弹出对话框的时候有关汉字部分报错:无法将参数“const char[12]”转换为“LPCTSTR”,只需要将原先默认使用的Unicode字符集换成“使用多字节字符集”

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值