非窗口消息

本文详细介绍了非窗口消息的三种类型:命令消息、通知消息和反射消息。命令消息通过菜单、按钮触发,由ID号标识。通知消息在控件间传递事件,如WM_COMMAND和WM_NOTIFY。反射消息使子窗口更加独立,处理函数与通知消息类似,但发送者ID设为0。
摘要由CSDN通过智能技术生成

通常将与窗口相关的消息统称为窗口消息(区别于线程消息),但窗口消息还可以细分为窗口消息、命令消息、通知消息、反射消息。其中通知消息时从命令消息中衍生出来的。窗口消息直接针对某个窗口,它或者是由系统发送给窗口的系统事件,或者是在用户操作该窗口时产生的窗口事件。对大部分窗口消息,MFC都为其定义了默认的处理函数,并为这些处理函数规定了原型和名称。但非窗口消息(命令,通知,反射消息)就显得有些繁杂,而且一个费窗口消息可以在不同的对象之间转发。大部分非窗口消息处理函数的名称是随意的,但函数原型只有几种。

-

命令消息

命令消息就是菜单、按钮向窗口发送的,要求执行某个功能操作的消息。每个命令都是有一个16位的ID号来标识的,命令的ID号就是命令发送者的ID号。所以,具有相同ID号的两个发送者,产生相同的命令。不同的ID号值域标识不同的命令类型,如【0x8000,0xf000】范围标识可传递的全局命令,即命令可由不同的对象处理。菜单默认是全局命令,每个菜单项的ID值都在这个范围内;按钮默认为局部命令,其ID值小于0x8000。所以,如果对话框附加了一个菜单,所有菜单项命令可传递到其父窗口和应用类,在父窗口是主框架的情况下,还可以传递视图和文档对象。而按钮命令只能在对话框中处理。当然这只是默认的情况,通常该写resurce.h头文件,将菜单项变为局部命令,或将按钮变为全局命令都是可以的。如果希望一个按钮命令被命令路由中其他的对象处理,除该写其命令ID值外,还必须在这个对象中手工添加映射消息。

通知消息

在WIN3.x中,通知消息是子控件通过发送WM_COMMAND命令消息实现的,这种命令消息包含

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值