Windows消息分为三大类

标准消息:

所有WM_开头的消息 WM_COMMAND除外

命令消息:

来自菜单,工具条按钮或者加速键(快捷键)的消息,以WM_COMMAND呈现

通告消息:

由控件产生的消息 例如按钮的单击,列表框的选择,等 均产生此类消息,为的是向其父窗口通知事件的发生

以下是分别对这三种消息的介绍:

标准消息:

WM_NULL    空消息,此消息将被接收窗口忽略

WM_CREATE    应用程序创建一个窗口

WM_DESTROY    一个窗口被销毁

WM_MOVE    移动一个窗口

WM_SIZE    改变一个窗口的大小

WM_ACTIVATE    一个窗口被激活或失去激活状态

WM_SETFOCus    获得焦点后

WM_PAINT    要求一个窗口重绘自己

WM_CLOSE    当一个窗口或应用程序要关闭时发送一个信号

WM_QUIT    用来结束消息循环,可调用PostQuitMessage()函数来产生此消息

WM_ERASEBKGND    当窗口背景必须被擦除时(例如在窗口改变大小时)

WM_MOUSEMOVE    鼠标移动

WM_LBUTTONDOWN    按下鼠标左键

WM_LBUTTONDBLCLK    双击鼠标左键

WM_RBUTTONDOWN    按下鼠标右键

WM_SIZING    调整窗口大小时发送此消息给窗口,通过此消息应用程序可以监视或修改窗口大小和位置

WM_MOVING    移动窗口时发送此消息给窗口,通过此消息应用程序可以监视或修改窗口大小和位置

WM_MDICREATE    发送此消息给多文档的客户窗口来创建一个MDI子窗口

WM_MDIDESTROY    发送此消息给多文档的客户窗口来关闭一个MDI子窗口

WM_MDIACTIVATE    发送此消息给多文档的客户窗口通知客户窗口激活另一个MDl子窗口

WM_MDINEXTMDI    客户窗口激活下一个或前一个窗口

WM_HOTKEY    当用户按下由RegisterHotKey()注册的热键时产生此消息

Windows消息远远不止这些,可以查询WM_开头的常量

为了防止用户定义的消息id与系统的消息id冲突,微软定义了一个宏,WM_USER,小于WM_USER的id被系统使用,大于WM_USER的id被用户使用

#define WM_USER 0x0400 //(十进制是1024)

所以假如需要自定义消息,id必须大于这个值

以下是消息编号的范围:

0~WM_USER-1    消息保留,仅供系统使用

WM_USER 到 0x7FFF    用于私有窗口类的整数型消息

WM_APP(0x80000) 到 0xFFFF 字符串供应应用程序使用

大于0xFFFF    系统保留

命令消息

以WM_COMMAND表示,来自菜单,或加速键(快捷键)或工具栏按钮的消息

#define    WM_COMMAND 0x0111 //(十进制273)

备注:

LOWORD(wParam)是菜单或加速键的ID,菜单的分隔条的ID为0。对于系统菜单的菜单

项和加速键,点击后,Windows会向所属的窗体发送WM_SYSCOMMAND,而不是WM_COMMAND消息。

通告消息:

以WM_COMMAND或WM_NOTIFY形式呈现的。表示,由各种控件产生的消息,

例如,按钮的单击等,为的是向其父窗口(通常是对话框)通知事件的发生。

备注

LOWORD(wParam)是控件ID,HIWORD(wParam)是notification code,比如BN_CLICKED,BN_DBLCLK等

标志用户对控件的操作,双击,单击之类。

件ID,通过IParam知道控件句柄。


WM_COMMAND消息:

当我们按下一个菜单选项,或者一个控件需要通知父窗口一个事件发生(如鼠标单击、双击等),或者快捷键被按下时,Windows将会发送一个WM_COMMAND消息给父窗口。并通过wParam高位置1或O区分菜单、快捷键、或者控件事件Code,通过wParam低位可知道菜单ID或控件ID,通过IParam知道控件句柄。

QQ截图20200905051908.jpg

WM_NOTIFY消息

WM_COMMAND可携带的信息较少,WM_NOTIFY比YWM_COMMAND功能更强大,可以存储一些额外的信息,

Edit,Button,ListBox等发送WM_COMMAND消息,

而ListView,Toolbar,Tree等控件发送WM_NOTIFY消息,因为需要提供的信息更多。因为有些控件功能和事件比较多

QQ截图20200905052156.jpg

QQ截图20200905052545.jpg

QQ截图20200905052657.jpg

Notification Code根据不同控件的命名规律:

Button按钮:    BN_XXX

ListBox列表框:    LBN_XXX

ComboBox组合框:    CBN_XXX

Tab框:    TBN_XXx

EN XXX :   Edit编辑框:

Static静态文本:    STN XXX


扩展阅读:msg结构:

	//msg结构:
	//HWND        hwnd;		主窗口句柄
	//UINT        message;	消息名称
	//WPARAM      wParam;	附加消息 键盘消息
	//LPARAM      lParam;	附加消息 鼠标消息(按键消息)
	//DWORD       time;		消息产生的时间
	//POINT       pt;		附加消息 鼠标消息(位置xy)
	MSG msg;




相关推荐

windows APi数据命名规律 常用windows 数据

WindowsAPI数据类型的命名规律基本数据来袭包括:BYTE 字节CHAR 字符WORD 单字SHORT 短整型INT 整型指针的类型命名方式一般都在对象名前面加 LP 或者 P /*字

windows F1到F10别是什么快捷键 奇淫技巧快捷键

F1:帮助功能。在windows系统中,在程序中或者资源管理器中按下F1,一般都会出现帮助界面,还有一个小技巧,假如正在对某个程序进行操作,需要查看系统帮助,可以同时按win加F1。F2:重命名功能。

vmware12虚拟机安装windows server 2003系统教程图解

windows APi获取当前进程内存使用情况 内存占有率 PPRoCEss_MEMoRY_CoUnTERs

易语言 可以直接使用精易模块 进程_内存使用 (, )API:BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMO

windows 无法安装到这个磁盘 windows需要设备 标准nvm express 控制器驱动 请单击加载驱动程序 然后加载所需要驱动程序

windows 无法安装到这个磁盘 windows需要设备 标准nvm express 控制器的驱动 请单击加载驱动程序 然后加载所需要的驱动程序

输入法管理器(iMM)函数大全(windows CE 5.0)

imm好像要被弃用了 还是研究 TSF输入法 吧 ,虽然没啥鸟用了 但是还是搬运一下下吧EnumRegisterWordProc此函数是与一起使用的应用程序定义的回调函数ImmEnumRegister

windows控件之 富文本编辑器控件

富文本编辑控件不仅能输入,编辑,打印和保存文本,还可以设置文本、段落格式等,并可包含嵌入式组件对象模型(COM)对象。富文本编辑控件支持几乎所有用于多行编辑控件的消息和通知代码,因此已使用编辑控件的应

windows资源文件.rc文件

Windows应用程序中,图标、菜单、位图、工具条、对话框等是以资源的形式存在的。在win32编程中,为方便项目中的资源统一管理,提供了一个格式统一的资源文件,对各种资源进行管理。资源文件的扩展名是.

c++ 中 charwchar_t区别 windows中APi函数后面带A和w区别

C++基本数据类型中表示字符的有两种: char、wchar_t。char叫多字节字符,一个char占1个字节,之所以叫多字节字符是因为它表示一个英文字符时是一个字节,而中文字符时是多个字节。wcha

c++ windows应用程序 入口函数winMain详解

入口函数WinMain详解类似于C程序的main函数,Win32应用程序也有一个入口函数WinMain,该函数被系统自动调用函数原型:int WINAPI WinMain( HINSTANCE hI