【转】WM_MESSAGE、WM_COMMAND、WM_NOTIFY等消息有什么不同
转自: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等消息有什么不同相关推荐
- 分析与理解通知消息-WM_NOTIFY (转)
分析与理解通知消息-WM_NOTIFY (转)[@more@] 郑力群 前言 近来,有几个网友发妹儿问了我一些关于WM_NOTIFY通知消息的使用问题,为此,我写了这篇文章,将我对WM_NOTIFY消 ...
- 转MFC消息映射梳理
http://blog.csdn.net/phunxm/article/details/5640766 一.CWnd消息处理 一切从窗口(HWND)的创建说起,在MFC中,CWnd::CreateEx ...
- Windows消息机制要点
1. 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wP ...
- windows消息机制深入详解-1
Windows 是一个事件驱动的操作系统.事件驱动围绕着消息的产生与处 理展开,事件驱动是靠消息循环机制来实现的.也可以理解为消息是一种报告有关事件发生 的通知,消息是Windows 操作系统的灵魂. ...
- MFC消息映射机制概述
消息 窗口消息一般由三个部分组成: 1)一个无符号整数,是消息值: 2)消息附带的 WPARAM 类型的参数: 3)消息附带的 LPARAM 类型的参数.其实我们一般所说的消息是狭义上的消息值,也就是 ...
- 窗口发送消息参数详解
窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg ...
- MFC 教程【4_消息映射的实现】
消息映射的实现 Windows消息概述 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows. 消息的 ...
- Windows的消息定义大全
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了. 例如:单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序. 消息本身是作为 ...
- Windows消息类型及说明
WM_ Window Message 窗口消息,一般用在SendMessage,PostMessage这样的消息函数中 SM_ Static Message 静态标签消息 SS_ Static Sty ...
最新文章
- 按下开机键,计算机背后的故事
- js 将线性数据转为树形
- JSONObject和JSONArray(json-lib-2.4)的基本用法
- 华为最新系统鸿蒙的意思,EMUI官微正式更名为HarmonyOS!华为鸿蒙系统的推出有何意义?...
- BF,KMP,BM三种字符串匹配算法性能比较
- java classes.jar_classes.jar
- 查询数据库占用磁盘大小
- clion 插件_IDEA必备插件系列-Rainbow
- 力扣438.找到字符串中所有字母异位词(JavaScript)
- 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】
- 日本乐天要求员工学编程,AI 进中小学课堂,全民编程时代来了!
- 看我如何发现开源 WAF引擎ModSecurity 中的DoS 漏洞
- ARM指令集--相关指令的功能
- 通过串口波特率计算bit时间
- 【Android】仿淘宝商品详情页
- 锂电池基本原理解析:充电及放电机制
- [Python高效编程] - 统计元素出现频度
- Hazelcast IMDGJet详解
- 《流浪方舟》- 废土世界的冒险之旅
- 哪个一键重装电脑系统工具好用些?
热门文章
- win2012 ad用户和计算机,Server2012R2搭建AD域服务器并添加登录用户
- 查找工具locate和find
- oracle数据库查看用户相关语句
- 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
- jwPlayer为js预留的回调方法
- 【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
- 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)
- 150 Evaluate Reverse Polish
- 1276A. As Simple as One and Two
- linux 管道文件上机总结,[转载]LINUX 管道 fifo 等总结