zoukankan      html  css  js  c++  java
  • 2014.7.23MFC中,WM_CMMAND与WM_NOTIFY的区别?

    [转载]

    对这几个消息的理解要先了解一下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最好就不要互换了! 

    2014夏季女装:http://shop64812415.taobao.com  

  • 相关阅读:
    明明的随机数
    字符串大小写转换
    字符串合并处理
    【数据结构】c语言实现集合的交并差运算
    【数据结构】一元多项式
    【保存】
    {【保存】数据结构
    【java】关键字this怎么用?
    【数据结构】顺序表
    【JAVA】【作业向】第一题:本学期一班级有n名学生,m门课程。现要求对每门课程的成绩进行统计:平均成绩、最高成绩、最低成绩,并统计考试成绩的分布律。
  • 原文地址:https://www.cnblogs.com/showtiny/p/3862173.html
Copyright © 2011-2022 走看看