转自:https://blog.csdn.net/newstarao/article/details/3775690

WM_MESSAGE是最普通的WINDOWS消息,对于这种类型的消息没什么好说的。那WM_COMMAND和WM_NOTIFY消息都是WINDOWS CONTROL给它的父窗体发的消息,那这两种消息有什么不同呢?WM_COMMAND消息其实是早期的(WIN3.X时代)子窗体消息,子窗体给父窗体发送消息,父窗体就捕获WM_COMMAND来处理子窗体的消息。但是这个消息只包括了有限的信息,例如wParam包括了子窗口ID和通知码,lParam则包括了子窗口句柄,就这点信息了,如果想知道一些额外的信息的话(例如,鼠标点在了子控件的什么位置)就要借助于其他的WM_*消息。所以对于新型的WIN32控件,微软就增加了一个新的NOTIFICATION消息,这个消息的参数是这样的:wParam包含了控件ID,而lParam则包含了一个结构体的指针,这个结构体是NMHDR结构或者以NMHDR结构为第一项的一个更大的结构体。这样就可以包含了很多的子控件想给父窗体提供的信息了,甚至可以自己去定义这种的结构体。
     这就是这几种消息的差别点了。

控件的自画:
     首先在创建控件的时候增加BS_OWNERDRAW选项,这个STYLE是告诉控件,别自己处理外观,让主程序来处理你的外观,这时你就有权决定这个控件是画成什么样子了。然后就是处理WM_DRAWITEM的消息,利用 LPDRAWITEMSTRUCT pdis = (LPDRAWITEMSTRUCT) lParam; 来取得一些必要的信息,如按钮的DC,位置等,通过这些参数实现对这个DC的内容进行绘画。COMMON Ctronller的STYLE都在COMMCTRL.H头文件里。

按钮在以下状态时会对它的父窗口发送WM_COMMAND的消息:
按了一次(BN_CLICKED),取得焦点(BN_SETFOCUS),失去焦点(BN_KILLFOCUS)等。
这个是按钮的发送WM_COMMAND的条件,其他的控件什么时候会发送WM_COMMAND消息可查看该控件的通知码(在wParam的高位HIWORD)。例如,滚动条控件在被滚动的时候会向它的父窗体发送消息,但是不是WM_COMMAND消息,而是WM_VSCROLL和WM_HSCROLL消息。这只是为了说明凡是子控件,都会在适当的条件下向它的父窗体发送消息。无论是WM_COMMAND还是WM_NOTIFY或是WM_VSCROLL消息等。

另外,MoveWindow会产生WM_SIZE消息。

【转】WM_MESSAGE、WM_COMMAND、WM_NOTIFY等消息有什么不同相关推荐

  1. 分析与理解通知消息-WM_NOTIFY (转)

    分析与理解通知消息-WM_NOTIFY (转)[@more@] 郑力群 前言 近来,有几个网友发妹儿问了我一些关于WM_NOTIFY通知消息的使用问题,为此,我写了这篇文章,将我对WM_NOTIFY消 ...

  2. 转MFC消息映射梳理

    http://blog.csdn.net/phunxm/article/details/5640766 一.CWnd消息处理 一切从窗口(HWND)的创建说起,在MFC中,CWnd::CreateEx ...

  3. Windows消息机制要点

    1. 窗口过程     每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wP ...

  4. windows消息机制深入详解-1

    Windows 是一个事件驱动的操作系统.事件驱动围绕着消息的产生与处 理展开,事件驱动是靠消息循环机制来实现的.也可以理解为消息是一种报告有关事件发生 的通知,消息是Windows 操作系统的灵魂. ...

  5. MFC消息映射机制概述

    消息 窗口消息一般由三个部分组成: 1)一个无符号整数,是消息值: 2)消息附带的 WPARAM 类型的参数: 3)消息附带的 LPARAM 类型的参数.其实我们一般所说的消息是狭义上的消息值,也就是 ...

  6. 窗口发送消息参数详解

    窗口发送消息参数详解 //    窗口.发送消息    函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg ...

  7. MFC 教程【4_消息映射的实现】

    消息映射的实现 Windows消息概述 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows. 消息的 ...

  8. Windows的消息定义大全

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了. 例如:单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.           消息本身是作为 ...

  9. Windows消息类型及说明

    WM_ Window Message 窗口消息,一般用在SendMessage,PostMessage这样的消息函数中 SM_ Static Message 静态标签消息 SS_ Static Sty ...

最新文章

  1. 按下开机键,计算机背后的故事
  2. js 将线性数据转为树形
  3. JSONObject和JSONArray(json-lib-2.4)的基本用法
  4. 华为最新系统鸿蒙的意思,EMUI官微正式更名为HarmonyOS!华为鸿蒙系统的推出有何意义?...
  5. BF,KMP,BM三种字符串匹配算法性能比较
  6. java classes.jar_classes.jar
  7. 查询数据库占用磁盘大小
  8. clion 插件_IDEA必备插件系列-Rainbow
  9. 力扣438.找到字符串中所有字母异位词(JavaScript)
  10. 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】
  11. 日本乐天要求员工学编程,AI 进中小学课堂,全民编程时代来了!
  12. 看我如何发现开源 WAF引擎ModSecurity 中的DoS 漏洞
  13. ARM指令集--相关指令的功能
  14. 通过串口波特率计算bit时间
  15. 【Android】仿淘宝商品详情页
  16. 锂电池基本原理解析:充电及放电机制
  17. [Python高效编程] - 统计元素出现频度
  18. Hazelcast IMDGJet详解
  19. 《流浪方舟》- 废土世界的冒险之旅
  20. 哪个一键重装电脑系统工具好用些?

热门文章

  1. win2012 ad用户和计算机,Server2012R2搭建AD域服务器并添加登录用户
  2. 查找工具locate和find
  3. oracle数据库查看用户相关语句
  4. 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
  5. jwPlayer为js预留的回调方法
  6. 【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
  7. 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)
  8. 150 Evaluate Reverse Polish
  9. 1276A. As Simple as One and Two
  10. linux 管道文件上机总结,[转载]LINUX 管道 fifo 等总结