WM_COMMAND和WM_NOTIFY有什么区别
来源:互联网 发布:vb len函数的使用方法 编辑:程序博客网 时间:2024/04/29 21:29
对这几个消息的理解要先了解一下Window消息的背景。
在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件的句柄包含在lParam中。由于wParam和 lParam已经满了,当控件要向父窗口发送其它特殊消息同时附带很多信息的时候就没有地方可以存放它们了。所以Windows3.1中定义了许多其它的消息种类,比如WM_VSCROLL, WM_CTLCOLOR等等,每种消息wParam,lParam中附带的信息是不同的。
当到了Win32后,控件的种类越来越多,当然不可以为每一个控件都定义一套消息,这样也不利于系统的扩充。所以在Win32中定义了唯一一个强大的消息WM_NOTIFY。当然WM_NOTIFY也遵守原来的消息规则,既只带参数wParam和lParam。唯一不同处在于,此时的lParam中传送的是一个NMHDR指针。不同的控件可以按照规则对NMHDR进行扩充,因此WM_NOTIFY消息传送的信息量可以相当的大,这个可以看看MSDN中的相关说明,TreeControl中就有很多这种消息。
现在就可以知道为什么有ON_MESSAGE ,ON_COMMAND, , ON_NOTIFY了。
ON_MESSAGE是处理所有的Windows的消息的,因为所有的消息都以相同的格式传送,也就是ID, WPARAM, LPARAM.
ON_COMMAND是专门处理WM_COMMAND消息的,这样我们就不用自己解开WM_COMMAND中wParam和lParam中传送的控件ID, 事件种类…,所有的都在MFC内部解决了:),当然方便了。
ON_NOTIFY更是不用说了,看看他的处理函数,是不是把NMHDR解出来了。
这样一样就一目了然了,ON_COMMAND和ON_NOTIFY都可以用ON_MESSAGE来处理,只不过自己要多做很多事情。ON_COMMAND和ON_NOTIFY最好就不要互换了!
- WM_COMMAND和WM_NOTIFY有什么区别
- WM_COMMAND和WM_NOTIFY有什么区别?
- WM_COMMAND和WM_NOTIFY区别
- WM_COMMAND 和 WM_NOTIFY 区别
- WM_COMMAND 和 WM_NOTIFY 的区别
- WM_COMMAND 和 WM_NOTIFY 的区别
- WM_COMMAND 和 WM_NOTIFY 的区别
- WM_COMMAND 和 WM_NOTIFY 的区别
- WM_COMMAND 和 WM_NOTIFY 的区别
- WM_COMMAND和WM_NOTIFY消息的区别
- WM_MESSAGE、WM_COMMAND、WM_NOTIFY等消息有什么不同
- WM_COMMAND和WM_NOTIFY比较
- 关于WM_Notify和WM_Command
- WM_COMMAND,WM_NOTIFY等消息
- WM_COMMAND与WM_NOTIFY
- WM_COMMAND,WM_NOTIFY等消息
- 关于WM_COMMAND与WM_NOTIFY
- WM_COMMAND,WM_NOTIFY等消息
- 统计出每个编号对应离当前日期最近第一条记录
- ASP.NET - Web 服务器控件概述
- VS2005定制Windows CE6.0系统烧写NK.exe出错:BIN image type unknow!OEMVERIFYMEMORY: Invalid image
- 三层的浅显分析
- Discuz!NT与asp.net整合集成实例教程
- WM_COMMAND和WM_NOTIFY有什么区别
- ASP.NET十个有效性能优化的方法
- T-Sql 根据出生日期按年龄段统计
- c#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值
- P2V, 迈出虚拟化的第一步
- jquery笔记
- java中 最常用的String 的用法
- Bapi Return说明
- 添加一个自己的工程到openWrt