[C#菜鸟]C# Hook (三) Windows常用消息大全

表A-1  Windows消息分布

消息范围

说 明

0 ~ WM_USER – 1

系统消息

WM_USER ~ 0x7FFF

自定义窗口类整数消息

WM_APP ~ 0xBFFF

应用程序自定义消息

0xC000 ~ 0xFFFF

应用程序字符串消息

> 0xFFFF

为以后系统应用保留

表A-2  常用Windows消息

消息名称

说  明

WM_NULL 

0x0000

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

WM_CREATE 

0x0001

应用程序创建一个窗口

WM_DESTROY

0x0002

一个窗口被销毁

WM_MOVE

0x0003

移动一个窗口

WM_SIZE

0x0005

改变一个窗口的大小

WM_ACTIVATE

0x0006

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

WM_SETFOCUS

0x0007

获得焦点后

WM_KILLFOCUS

0x0008

失去焦点

WM_ENABLE

0x000A

应用程序Enable状态改变时产生

WM_SETREDRAW

0x000B

设置窗口是否能重画

WM_SETTEXT

0x000C

应用程序发送此消息来设置一个窗口的文本

WM_GETTEXT

0x000D

应用程序发送此消息来复制对应窗口的文本到缓冲区

WM_GETTEXTLENGTH

0x000E

得到与一个窗口有关的文本的长度(不包含空字符)

WM_PAINT

0x000F

要求一个窗口重绘自己

WM_CLOSE

0x0010

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

WM_QUERYENDSESSION

0x0011

用户选择结束对话框或应用程序自己调用ExitWindows()函数

WM_QUIT

0x0012

用来结束程序运行或应用程序调用Postquitmessage()函数来产生此消息

WM_QUERYOPEN

0x0013

当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

WM_ERASEBKGND

0x0014

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

WM_SYSCOLORCHANGE

0x0015

当系统颜色改变时,发送此消息给所有顶级窗口

WM_ENDSESSION

0x0016

当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序

WM_SHOWWINDOW

0x0018

当隐藏或显示窗口是发送此消息给这个窗口

WM_ACTIVATEAPP

0x001C

当某个窗口将被激活时,将被激活窗口和当前活动(即将失去激活)窗口会收到此消息,发此消息给应用程序哪个窗口是激活的,哪个是非激活的

WM_FONTCHANGE

0x001D

当系统的字体资源库变化时发送此消息给所有顶级窗口

WM_TIMECHANGE

0x001E

当系统的时间变化时发送此消息给所有顶级窗口

WM_CANCELMODE

0x001F

发送此消息来取消某种正在进行的操作

WM_SETCURSOR

0x0020

如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,发消息给该窗口

WM_MOUSEACTIVATE

0x0021

当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

WM_CHILDACTIVATE

0x0022

发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活、移动、改变大小

WM_QUEUESYNC

0x0023

此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的Hook程序分离出用户输入消息

WM_GETMINMAXINFO

0x0024

当窗口要将要改变大小或位置时,发送此消息给该窗口

WM_PAINTICON

0x0026

当窗口图标将要被重绘时,发送此消息给该窗口

WM_ICONERASEBKGND

0x0027

在一个最小化窗口的图标在重绘前,当图标背景必须被重绘时,发送此消息给该窗口

WM_NEXTDLGCTL

0x0028

发送此消息给一个对话框程序以更改焦点位置

WM_SPOOLERSTATUS

0x002A

当打印管理列队增加或减少一条作业时发出此消息

WM_DRAWITEM

0x002B

当Button,ComboBox,Listbox,Menu控件的外观改变时,发送此消息给这些控件的所有者

WM_MEASUREITEM

0x002C

当Button,ComboBox,list box,ListView,Menu 项被创建时,发送此消息给控件的所有者

WM_DELETEITEM

0x002D

当ListBox 或 ComboBox 被销毁或当某些项通过发送LB_DELETESTRING、LB_RESETCONTENT、 CB_DELETESTRING、CB_RESETCONTENT 消息被删除时,发送此消息给控件的所有者

WM_VKEYTOITEM

0x002E

一个具有LBS_WANTKEYBOARDINPUT风格的ListBox控件发送此消息给它的所有者,以此来响应WM_KEYDOWN消息

WM_CHARTOITEM

0x002F

一个具有LBS_WANTKEYBOARDINPUT风格的ListBox控件发送此消息给它的所有者,以此来响应WM_CHAR消息

WM_SETFONT

0x0030

应用程序绘制控件时,发送此消息得到以何种字体绘制控件中的文本

WM_GETFONT

0x0031

应用程序发送此消息得到当前控件绘制文本的字体

WM_SETHOTKEY

0x0032

应用程序发送此消息让一个窗口与一个热键相关联

WM_GETHOTKEY

0x0033

应用程序发送此消息来判断热键与某个窗口是否有关联

WM_QUERYDRAGICON

0x0037

此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序就返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

WM_COMPAREITEM

0x0039

发送此消息来判定ComboBox或ListBox新增加的项的相对位置

WM_COMPACTING

0x0041

显示内存已经很少了

WM_WINDOWPOSCHANGING

0x0046

当调用SetWindowPos()函数改变窗口的大小和位置后,发送此消息给该窗口

WM_POWER

0x0048

当系统将进入挂起状态时发送此消息给所有进程

WM_COPYDATA

0x004A

当一个应用程序传递数据给另一个应用程序时发送此消息

WM_CANCELJOURNAL

0x004B

当某个用户取消程序日志激活状态,发送此消息给应用程序

WM_NOTIFY

0x004E

当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

WM_INPUTLANGCHANGEREQUEST

0x0050

当用户选择某种输入语言,或输入语言的热键改变

WM_INPUTLANGCHANGE

0x0051

当应用程序输入语言改变后发送此消息给受影响的最顶级窗口

WM_TCARD

0x0052

当应用程序已经初始化Windows帮助例程时发送此消息给应用程序

WM_HELP

0x0053

当用户按下了F1,如果某个菜单是激活的,就发送此消息给此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

WM_USERCHANGED

0x0054

当用户已经登录或退出后发送此消息给所有的窗口,当用户登录或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息

WM_NOTIFYFORMAT

0x0055

公用控件和它们的父窗口通过此消息来判断在WM_NOTIFY消息中是使用ANSI还是UNICODE形式的结构,使用此控件能使某个控件与它的父控件进行相互通信

WM_CONTEXTMENU

0x007B

当用户在某个窗口中点击右键,则发送此消息给该窗口

WM_STYLECHANGING

0x007C

当将要调用SetWindowLong()函数窗口的一个或多个风格时,发送此消息给该窗口

WM_STYLECHANGED

0x007D

当调用SetWindowLong()函数改变了窗口的一个或多个风格后,发送此消息给该窗口

WM_DISPLAYCHANGE

0x007E

当显示器的分辨率改变后发送此消息给所有的窗口

WM_GETICON

0x007F

发送此消息给某个窗口,返回与某个窗口有关联的大图标或小图标的句柄

WM_SETICON

0x0080

应用程序发送此消息让一个新的大图标或小图标与某个窗口关联

WM_NCCREATE

0x0081

当某个窗口第一次被创建时,此消息在WM_CREATE消息被发送前发送

WM_NCDESTROY

0x0082

此消息通知某个窗口,正在销毁非客户区

WM_NCCALCSIZE

0x0083

当计算某个窗口的客户区大小和位置时发送此消息

WM_NCHITTEST

0x0084

移动鼠标,按住或释放鼠标时产生此消息

WM_NCPAINT

0x0085

当某个窗口的框架必须被绘制时,应用程序发送此消息给该窗口

WM_NCACTIVATE

0x0086

通过改变某个窗口的非客户区来表示窗口是处于激活还是非激活状态时,此消息被发送给该窗口

WM_NCMOUSEMOVE

0x00A0

当光标在窗口的非客户区(窗口标题栏及边框)内移动时发送此消息给该窗口

WM_NCLBUTTONDOWN

0x00A1

当光标在窗口的非客户区并按下鼠标左键时发送此消息

WM_NCLBUTTONUP

0x00A2

当光标在窗口的非客户区并释放鼠标左键时发送此消息

WM_NCLBUTTONDBLCLK

0x00A3

当光标在窗口的非客户区并双击鼠标左键时发送此消息

WM_NCRBUTTONDOWN

0x00A4

当光标在窗口的非客户区并按下鼠标右键时发送此消息

WM_NCRBUTTONUP

0x00A5

当光标在窗口的非客户区并释放鼠标右键时发送此消息

WM_NCRBUTTONDBLCLK

0x00A6

当光标在窗口的非客户区并双击鼠标右键时发送此消息

WM_NCMBUTTONDOWN

0x00A7

当光标在窗口的非客户区并按下鼠标中键时发送此消息

WM_NCMBUTTONUP

0x00A8

当光标在窗口的非客户区并释放鼠标中键时发送此消息

WM_NCMBUTTONDBLCL

0x00A9

当光标在窗口的非客户区并双击鼠标中键时发送此消息

WM_KEYDOWN

0x0100

按下一个非系统键(按下键时未按下“ALT”键)

WM_KEYUP

0x0101

释放一个非系统键

WM_CHAR

0x0102

按下某键,当TranslateMessage()转发WM_KEYDOWN后发送本消息

WM_DEADCHAR

0x0103

释放某键,当TranslateMessage()转发WM_KEYUP后发送本消息

WM_SYSKEYDOWN

0x0104

当按住ALT键同时按下其他键时发送此消息给拥有键盘焦点的窗口

WM_SYSKEYUP

0x0105

当释放一个键同时按住ALT键时发送此消息给拥有键盘焦点的窗口

WM_SYSCHAR

0x0106

当TranslateMessage()转发WM_SYSKEYDOWN后发送此消息给拥有键盘焦点的窗口

WM_SYSDEADCHAR

0x0107

当TranslateMessage()转发WM_SYSKEYUP后发送此消息给拥有键盘焦点的窗口

WM_INITDIALOG

0x0110

在被显示前发送此消息对话框,通常用此消息初始化控件和执行其他任务

WM_COMMAND

0x0111

选择窗口菜单项或某个控件发送一条消息给它的父窗口或按下一个快捷键时产生此消息

WM_SYSCOMMAND

0x0112

选择窗口菜单项或选择最大化或最小化时,发送此消息给该窗口

WM_TIMER

0x0113

发生了定时器事件

WM_HSCROLL

0x0114

当窗口水平滚动条产生一个滚动事件时发送此消息给该窗口和滚动条的所有者

WM_VSCROLL

0x0115

当窗口垂直滚动条产生一个滚动事件时发送此消息给该窗口和滚动条的所有者

WM_INITMENU

0x0116

当一个菜单将要被激活时发送此消息,它发生在按下菜单项或按下菜单快捷键时,它允许程序在显示前更改菜单

WM_INITMENUPOPUP

0x0117

当一个下拉菜单或子菜单将要被激活时发送此消息,它允许显示前在修改菜单而不必更改整个菜单

WM_MENUSELECT

0x011F

选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

WM_MENUCHAR

0x0120

当菜单已被激活且用户按下了某个键(非快捷键),发送此消息给菜单的所有者

WM_ENTERIDLE

0x0121

当一个有模式对话框或菜单进入空闲状态时发送此消息给它的所有者,空闲状态指在处理完一条或几条先前的消息后,消息列队为空

WM_MENURBUTTONUP

0x0122

当光标位于菜单项上时,释放鼠标右键产生此消息

WM_MENUDRAG

0x0123

当拖动菜单项时,发送此消息给拖放菜单的所有者

WM_MENUGETOBJECT

0x0124

当光标移入菜单项或者从菜单项中心移到菜单项顶部或底部时,发送此消息给拖放菜单的所有者

WM_UNINITMENUPOPUP

0x0125

当下拉菜单或者子菜单被销毁时产生此消息

WM_MENUCOMMAND

0x0126

当用户选择菜单项时产生此消息

WM_CHANGEUISTATE

0x0127

应用程序发送此消息表明用户界面(UI)状态应当被改变

WM_UPDATEUISTATE

0x0128

应用程序发送此消息改变指定窗口及其子窗口的用户界面(UI)状态

WM_QUERYUISTATE

0x0129

应用程序发送此消息得到某个窗口的用户界面(UI)状态

WM_CTLCOLORMSGBOX

0x0132

绘制消息框前发送此消息给它的父窗口,通过响应这条消息,父窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

WM_CTLCOLOREDIT

0x0133

绘制编辑型控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORLISTBOX

0x0134

绘制列表框控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORBTN

0x0135

绘制按钮控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORDLG

0x0136

绘制对话框前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORSCROLLBAR

0x0137

绘制滚动条控件前发送此消息给它的父窗口,可用来设置滚动条控件的文本和背景颜色

WM_CTLCOLORSTATIC

0x0138

绘制静态控件前发送此消息给它的父窗口,可用来设置静态控件的文本和背景颜色

WM_MOUSEMOVE

0x0200

鼠标移动

WM_LBUTTONDOWN

0x0201

按下鼠标左键

WM_LBUTTONUP

0x0202

释放鼠标左键

WM_LBUTTONDBLCLK

0x0203

双击鼠标左键

WM_RBUTTONDOWN

0x0204

按下鼠标右键

WM_RBUTTONUP

0x0205

释放鼠标右键

WM_RBUTTONDBLCLK

0x0206

双击鼠标右键

WM_MBUTTONDOWN

0x0207

按下鼠标中键

WM_MBUTTONUP

0x0208

释放鼠标中键

WM_MBUTTONDBLCLK

0x0209

双击鼠标中键

WM_MOUSEWHEEL

0x020A

当鼠标滚轮转动时发送此消息给当前获得焦点的窗口

WM_PARENTNOTIFY

0x0210

当MDI子窗口被创建或被销毁,或当光标位于子窗口上且用户按了一下鼠标键时,发送此消息给它的父窗口

WM_ENTERMENULOOP

0x0211

发送此消息通知应用程序的主窗口进程已经进入了菜单模式循环

WM_EXITMENULOOP

0x0212

发送此消息通知应用程序的主窗口进程已经退出了菜单模式循环

WM_SIZING

0x0214

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

WM_CAPTURECHANGED

0x0215

当窗口设定为不捕获鼠标事件时,发送此消息给该窗口

WM_MOVING

0x0216

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

WM_POWERBROADCAST

0x0218

发送此消息给应用程序通知它有关电源管理事件

WM_DEVICECHANGE

0x0219

当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

WM_MDICREATE

0x0220

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

WM_MDIDESTROY

0x0221

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

WM_MDIACTIVATE

0x0222

应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)来激活它

WM_MDIRESTORE

0x0223

应用程序发送此消息给MDI客户窗口通知子窗口恢复到原来大小

WM_MDINEXT

0x0224

应用程序发送此消息给MDI客户窗口激活下一个或前一个窗口

WM_MDIMAXIMIZE

0x0225

应用程序发送此消息给MDI客户窗口以最大化一个MDI子窗口

WM_MDITILE

0x0226

应用程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

WM_MDICASCADE

0x0227

应用程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

WM_MDIICONARRANGE

0x0228

应用程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

WM_MDIGETACTIVE

0x0229

应用程序发送此消息给MDI客户窗口以找到激活的子窗口的句柄

WM_MDISETMENU

0x0230

应用程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

WM_ENTERSIZEMOVE

0x0231

当窗口进入移动或改变大小模式循环时,发送此消息给该窗口

WM_EXITSIZEMOVE

0x0232

当窗口退出移动或改变大小模式循环时,发送此消息给该窗口

WM_DROPFILES

0x0233

当用户在应用程序窗口中拖动某个文件时,产生此消息

WM_MDIREFRESHMENU

0x0234

应用程序发送此消息给MDI客户窗口以刷新窗口菜单

WM_MOUSEHOVER

0x02A1

当光标在窗口客户区悬停超过TrackMouseEvent()指定的时间时,发送此消息给该窗口

WM_MOUSELEAVE

0x02A3

当光标离开窗口客户区超过TrackMouseEvent()指定的时间时,发送此消息给该窗口

WM_CUT

0x0300

应用程序发送此消息给一个编辑框或ComboBox以删除当前选择的文本

WM_COPY

0x0301

应用程序发送此消息给一个编辑框或ComboBox以复制当前选择的文本到剪贴板

WM_PASTE 

0x0302

应用程序发送此消息给一个编辑框或ComboBox以从剪贴板中得到数据

WM_CLEAR

0x0303

应用程序发送此消息给一个编辑框或ComboBox以清除当前选择的内容

WM_UNDO

0x0304

应用程序发送此消息给一个编辑框或ComboBox以撤消最后一次操作

WM_DESTROYCLIPBOARD

0x0307

当调用EmptyClipboard()清空剪贴板时,发送此消息给剪贴板所有者

WM_DRAWCLIPBOARD

0x0308

当剪贴板的内容变化时发送此消息给剪贴板观察链中的第一个窗口,它允许用剪贴板观察窗口来显示剪贴板的新内容

WM_PAINTCLIPBOARD

0x0309

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口的客户区需要重绘时,发送此消息给剪贴板所有者

WM_VSCROLLCLIPBOARD

0x030A

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口发生垂直滚动条事件时,剪贴板观察窗口发送此消息给剪贴板所有者

WM_SIZECLIPBOARD

0x030B

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口的客户区域的大小已经改变时,剪贴板观察窗口发送此消息给剪贴板的所有者

WM_ASKCBFORMATNAME

0x030C

剪贴板观察窗口发送此消息给剪贴板所有者以获得CF_OWNERDISPLAY剪贴板格式的名字

WM_CHANGECBCHAIN

0x030D

当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链中的第一个窗口

WM_HSCROLLCLIPBOARD

0x030E

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口发生水平滚动条事件时,剪贴板观察窗口发送此消息给剪贴板所有者

WM_QUERYNEWPALETTE

0x030F

发送此消息给将要获得键盘焦点的窗口,此消息使窗口在获得焦点时同时有机会实现它的逻辑调色板

WM_PALETTEISCHANGING

0x0310

应用程序将要实现它的逻辑调色板时发送此消息通知所有应用程序

WM_PALETTECHANGED

0x0311

获得焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此

来改变系统调色板

WM_HOTKEY

0x0312

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

WM_PRINT

0x0317

应用程序发送此消息给窗口,要求窗口在指定设备环境中绘制自己,一般情况下是打印机设备环境

WM_PRINTCLIENT

0x0318

应用程序发送此消息给窗口,要求窗口在指定设备环境中绘制窗口客户区,一般情况下是打印机设备环境

WM_APP

0x8000

帮助用户自定义消息,自定义消息可以为WM_APP+X,X为正整数

WM_USER

0x0400

帮助用户自定义消息,自定义消息可以为WM_USER+X,X为正整数

  表A-3  通知消息-按钮

消息名称

说 明

BN_CLICKED

单击按钮

BN_DISABLE

按钮被禁止

BN_DOUBLECLICKED

双击按钮

BN_HILITE

加亮按钮

BN_PAINT

按钮应当重画

BN_UNHILITE

加亮应当去掉

表A-4  通知消息-组合框

消息名称

说 明

CBN_CLOSEUP

组合框的列表框被关闭

CBN_DBLCLK

用户双击了一个字符串

CBN_DROPDOWN

组合框的列表框被拉下

CBN_EDITCHANGE

用户修改了组合框中的文本

CBN_EDITUPDATE

组合框内的文本即将更新

CBN_ERRSPACE

组合框内存不足

CBN_KILLFOCUS

组合框失去输入焦点

CBN_SELCHANGE

在组合框中选择了一项

CBN_SELENDCANCEL

用户的选择将被忽略

CBN_SELENDOK

用户的选择将被执行

CBN_SETFOCUS

组合框获得输入焦点

表A-5  通知消息-编辑框

消息名称

说 明

EN_CHANGE

编辑框中的文本己更新

EN_ERRSPACE

编辑框内存不足

EN_HSCROLL

用户点击了水平滚动条

EN_KILLFOCUS

编辑框失去输入焦点

EN_MAXTEXT

插入的内容被截断

EN_SETFOCUS

编辑框获得输入焦点

EN_UPDATE

编辑框中的文本将要更新

EN_VSCROLL

用户点击了垂直滚动条

表A-6  通知消息-列表框

消息名称

说 明

LBN_DBLCLK

用户双击了一项

LBN_ERRSPACE

列表框内存不足

LBN_KILLFOCUS

列表框正在失去输入焦点

LBN_SELCANCEL

用户选择被取消

LBN_SELCHANGE

用户选择将改变

LBN_SETFOCUS

列表框获得输入焦点

Windows消息大全

 

  Windows是一消息(Message)驱动式系统,Windows消息提供了应用程序与应用程序之间、应用程序与Windows系统之间进行通讯的手段。应用程序要实现的功能由消息来触发,并靠对消息的响应和处理来完成。Windows系统中有两种消息队列,一种是系统消息队列,另一种是应用程序消息队列。计算机的所有输入设备由 Windows监控,当一个事件发生时,Windows先将输入的消息放入系统消息队列中,然后再将输入的消息拷贝到相应的应用程序队列中,应用程序中的消息循环从它的消息队列中检索每一个消息并发送给相应的窗口函数中。一个事件的发生,到达处理它的窗口函数必须经历上述过程。值得注意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),这就使得一些外部实时事件可能得不到及时的处理。

 

  由于Windows本身是由消息驱动的,举一个例子来说明这个问题。打开记事本程序,该程序有一个File菜单,那么,在运行该应用程序的时候,如果用户单击了File菜单里New命令时,这个动作将被Windows (而不是应用程序本身!)所捕获,Windows经过分析得知这个动作应该由上面所说的那个应用程序去处理,既然是这样,Windows就发送了个叫做WM_COMMAND的消息给应用程序,该消息所包含信息告诉应用程序:"用户单击了New菜单",应用程序得知这一消息之后,采取相应的动作来响应它,这个过程称为消息处理。Windows为每一个应用程序(确切地说是每一个线程)维护了相应的消息队列,应用程序的任务就是不停的从它的消息队列中获取消息,分析消息和处理消息,直到一条接到叫做WM_QUIT消息为止,这个过程通常是由一种叫做消息循环的程序结构来实现的。

 

  消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做T M s g,它在Wi n d o w s单元中是这样声明的:

 

type

TMsg = packedrecord

hwnd: HWND / /窗口句柄

message: UINT / /消息常量标识符

wParam: WPA R AM  // 32位消息的特定附加信息

lParam: LPA R AM  // 32位消息的特定附加信息

time: DWORD / /消息创建时的时间

pt: TPoint / /消息创建时的鼠标位置

end

 

消息中有什么?

是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:

hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。

message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。

wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。

lParam 通常是一个指向内存中数据的指针。由于WParm、lParam和Pointer都是32位的,因此,它们之间可以相互转换。

 

WM_NULL = 0

WM_CREATE = 1

应用程序创建一个窗口

WM_DESTROY = 2

一个窗口被销毁

WM_MOVE = 3

移动一个窗口

WM_SIZE = 5

改变一个窗口的大小

WM_ACTIVATE = 6

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

WM_SETFOCUS = 7

获得焦点后

WM_KILLFOCUS = 8

失去焦点

WM_ENABLE = 10

改变enable状态

WM_SETREDRAW = 11

设置窗口是否能重画

WM_SETTEXT = 12

应用程序发送此消息来设置一个窗口的文本

WM_GETTEXT = 13

应用程序发送此消息来复制对应窗口的文本到缓冲区

WM_GETTEXTLENGTH =14

得到与一个窗口有关的文本的长度(不包含空字符)

WM_PAINT = 15

要求一个窗口重画自己

WM_CLOSE = 16

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

WM_QUERYENDSESSION= 17

当用户选择结束对话框或程序自己调用ExitWindows函数

WM_QUIT = 18

用来结束程序运行或当程序调用postquitmessage函数

WM_QUERYOPEN = 19

当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

WM_ERASEBKGND = 20

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

WM_SYSCOLORCHANGE =21

当系统颜色改变时,发送此消息给所有顶级窗口

WM_ENDSESSION = 22

当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,

通知它对话是否结束

WM_SYSTEMERROR = 23

WM_SHOWWINDOW = 24

当隐藏或显示窗口是发送此消息给这个窗口

WM_ACTIVATEAPP = 28

发此消息给应用程序哪个窗口是激活的,哪个是非激活的;

WM_FONTCHANGE = 29

当系统的字体资源库变化时发送此消息给所有顶级窗口

WM_TIMECHANGE = 30

当系统的时间变化时发送此消息给所有顶级窗口

WM_CANCELMODE = 31

发送此消息来取消某种正在进行的摸态(操作)

WM_SETCURSOR = 32

如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口

WM_MOUSEACTIVATE =33

当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

WM_CHILDACTIVATE =34

发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小

WM_QUEUESYNC = 35

此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序

分离出用户输入消息

WM_GETMINMAXINFO =36

此消息发送给窗口当它将要改变大小或位置;

WM_PAINTICON = 38

发送给最小化窗口当它图标将要被重画

WM_ICONERASEBKGND =39

此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画

WM_NEXTDLGCTL = 40

发送此消息给一个对话框程序去更改焦点位置

WM_SPOOLERSTATUS =42

每当打印管理列队增加或减少一条作业时发出此消息

WM_DRAWITEM = 43

当button,combobox,listbox,menu的可视外观改变时发送

此消息给这些空件的所有者

WM_MEASUREITEM = 44

当button,combo box,list box,list view control,or menu item 被创建时

发送此消息给控件的所有者

WM_DELETEITEM = 45

当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING,LB_RESETCONTENT,CB_DELETESTRING,or CB_RESETCONTENT 消息

WM_VKEYTOITEM = 46

此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息

WM_CHARTOITEM = 47

此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息

WM_SETFONT = 48

当绘制文本时程序发送此消息得到控件要用的颜色

WM_GETFONT = 49

应用程序发送此消息得到当前控件绘制文本的字体

WM_SETHOTKEY = 50

应用程序发送此消息让一个窗口与一个热键相关连

WM_GETHOTKEY = 51

应用程序发送此消息来判断热键与某个窗口是否有关联

WM_QUERYDRAGICON =55

此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能

返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

WM_COMPAREITEM = 57

发送此消息来判定combobox或listbox新增加的项的相对位置

WM_GETOBJECT = 61

WM_COMPACTING = 65

显示内存已经很少了

WM_WINDOWPOSCHANGING= 70

发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

WM_WINDOWPOSCHANGED= 71

发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数

WM_POWER = 72(适用于16位的windows)

当系统将要进入暂停状态时发送此消息

WM_COPYDATA = 74

当一个应用程序传递数据给另一个应用程序时发送此消息

WM_CANCELJOURNAL =75

当某个用户取消程序日志激活状态,提交此消息给程序

WM_NOTIFY = 78

当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

WM_INPUTLANGCHANGEREQUEST= 80

当用户选择某种输入语言,或输入语言的热键改变

WM_INPUTLANGCHANGE= 81

当平台现场已经被改变后发送此消息给受影响的最顶级窗口

WM_TCARD = 82

当程序已经初始化windows帮助例程时发送此消息给应用程序

WM_HELP = 83

此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就

发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

WM_USERCHANGED = 84

当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体

设置信息,在用户更新设置时系统马上发送此消息;

WM_NOTIFYFORMAT =85

公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构

在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信

WM_CONTEXTMENU =123

当用户某个窗口中点击了一下右键就发送此消息给这个窗口

WM_STYLECHANGING =124

当调用SETWINDOWLONG函数将要改变一个或多个 窗口的风格时发送此消息给那个窗口

WM_STYLECHANGED =125

当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口

WM_DISPLAYCHANGE =126

当显示器的分辨率改变后发送此消息给所有的窗口

WM_GETICON = 127

此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;

WM_SETICON = 128

程序发送此消息让一个新的大图标或小图标与某个窗口关联;

WM_NCCREATE = 129

当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;

WM_NCDESTROY = 130

此消息通知某个窗口,非客户区正在销毁

WM_NCCALCSIZE = 131

当某个窗口的客户区域必须被核算时发送此消息

WM_NCHITTEST =132//移动鼠标,按住或释放鼠标时发生

WM_NCPAINT = 133

程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;

WM_NCACTIVATE = 134

此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;

WM_GETDLGCODE = 135

发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件

通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它

WM_NCMOUSEMOVE =160

当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗

的边框体

WM_NCLBUTTONDOWN =161

当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息

WM_NCLBUTTONUP =162

当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;

WM_NCLBUTTONDBLCLK= 163

当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息

WM_NCRBUTTONDOWN =164

当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息

WM_NCRBUTTONUP =165

当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息

WM_NCRBUTTONDBLCLK= 166

当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息

WM_NCMBUTTONDOWN =167

当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_NCMBUTTONUP =168

当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_NCMBUTTONDBLCLK= 169

当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_KEYFIRST = 256

WM_KEYDOWN = 256

//按下一个键

WM_KEYUP = 257

//释放一个键

WM_CHAR = 258

//按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息

WM_DEADCHAR = 259

当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口

WM_SYSKEYDOWN = 260

当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;

WM_SYSKEYUP = 261

当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口

WM_SYSCHAR = 262

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口

WM_SYSDEADCHAR =263

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口

WM_KEYLAST = 264

WM_INITDIALOG = 272

在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务

WM_COMMAND = 273

当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译

WM_SYSCOMMAND = 274

当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息

WM_TIMER = 275 //发生了定时器事件

WM_HSCROLL = 276

当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件

WM_VSCROLL = 277

当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件 WM_INITMENU = 278

当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许

程序在显示前更改菜单

WM_INITMENUPOPUP =279

当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要

改变全部

WM_MENUSELECT = 287

当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

WM_MENUCHAR = 288

当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;

WM_ENTERIDLE = 289

当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待

WM_MENURBUTTONUP =290

WM_MENUDRAG = 291

WM_MENUGETOBJECT =292

WM_UNINITMENUPOPUP= 293

WM_MENUCOMMAND =294

WM_CHANGEUISTATE =295

WM_UPDATEUISTATE =296

WM_QUERYUISTATE =297

WM_CTLCOLORMSGBOX =306

在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

WM_CTLCOLOREDIT =307

当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色

WM_CTLCOLORLISTBOX= 308

当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色

WM_CTLCOLORBTN =309

当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

WM_CTLCOLORDLG =310

当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色

WM_CTLCOLORSCROLLBAR=311

当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色

WM_CTLCOLORSTATIC =312

当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色

WM_MOUSEFIRST = 512

WM_MOUSEMOVE = 512

// 移动鼠标

WM_LBUTTONDOWN =513

//按下鼠标左键

WM_LBUTTONUP = 514

//释放鼠标左键

WM_LBUTTONDBLCLK =515

//双击鼠标左键

WM_RBUTTONDOWN =516

//按下鼠标右键

WM_RBUTTONUP = 517

//释放鼠标右键

WM_RBUTTONDBLCLK =518

//双击鼠标右键

WM_MBUTTONDOWN =519

//按下鼠标中键

WM_MBUTTONUP = 520

//释放鼠标中键

WM_MBUTTONDBLCLK =521

//双击鼠标中键

WM_MOUSEWHEEL = 522

当鼠标轮子转动时发送此消息个当前有焦点的控件

WM_MOUSELAST = 522

WM_PARENTNOTIFY =528

当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

WM_ENTERMENULOOP =529

发送此消息通知应用程序的主窗口that已经进入了菜单循环模式

WM_EXITMENULOOP =530

发送此消息通知应用程序的主窗口that已退出了菜单循环模式

WM_NEXTMENU = 531

WM_SIZING = 532

当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置

也可以修改他们

WM_CAPTURECHANGED =533

发送此消息给窗口当它失去捕获的鼠标时;

WM_MOVING = 534

当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置

也可以修改他们;

WM_POWERBROADCAST =536

此消息发送给应用程序来通知它有关电源管理事件;

WM_DEVICECHANGE =537

当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

WM_IME_STARTCOMPOSITION= 269

WM_IME_ENDCOMPOSITION= 270

WM_IME_COMPOSITION= 271

WM_IME_KEYLAST =271

WM_IME_SETCONTEXT =641

WM_IME_NOTIFY = 642

WM_IME_CONTROL =643

WM_IME_COMPOSITIONFULL= 644

WM_IME_SELECT = 645

WM_IME_CHAR = 646

WM_IME_REQUEST =648

WM_IME_KEYDOWN =656

WM_IME_KEYUP = 657

WM_MDICREATE = 544

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

WM_MDIDESTROY = 545

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

WM_MDIACTIVATE =546

应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到

此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;

WM_MDIRESTORE = 547

程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小

WM_MDINEXT = 548

程序发送此消息给MDI客户窗口激活下一个或前一个窗口

WM_MDIMAXIMIZE =549

程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;

WM_MDITILE = 550

程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

WM_MDICASCADE = 551

程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

WM_MDIICONARRANGE =552

程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

WM_MDIGETACTIVE =553

程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄

WM_MDISETMENU = 560

程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

WM_ENTERSIZEMOVE =561

WM_EXITSIZEMOVE =562

WM_DROPFILES = 563

WM_MDIREFRESHMENU =564

WM_MOUSEHOVER = 673

WM_MOUSELEAVE = 675

WM_CUT = 768

程序发送此消息给一个编辑框或combobox来删除当前选择的文本

WM_COPY = 769

程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板

WM_PASTE = 770

程序发送此消息给editcontrol或combobox从剪贴板中得到数据

WM_CLEAR = 771

程序发送此消息给editcontrol或combobox清除当前选择的内容;

WM_UNDO = 772

程序发送此消息给editcontrol或combobox撤消最后一次操作

WM_RENDERFORMAT =773

WM_DESTROYCLIPBOARD= 775

当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者

WM_DRAWCLIPBOARD =776

当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来

显示剪贴板的新内容;

WM_PAINTCLIPBOARD =777

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;

WM_VSCROLLCLIPBOARD= 778

WM_SIZECLIPBOARD =779

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;

WM_ASKCBFORMATNAME= 780

通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字

WM_CHANGECBCHAIN =781

当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;

WM_HSCROLLCLIPBOARD= 782

此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;

WM_QUERYNEWPALETTE= 783

此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板

WM_PALETTEISCHANGING=784

当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序

WM_PALETTECHANGED =785

此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此

来改变系统调色板

WM_HOTKEY = 786

当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息

WM_PRINT = 791

应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;

WM_PRINTCLIENT =792

WM_HANDHELDFIRST =856

WM_HANDHELDLAST =863

WM_PENWINFIRST =896

WM_PENWINLAST = 911

WM_COALESCE_FIRST =912

WM_COALESCE_LAST =927

WM_DDE_FIRST = 992

WM_DDE_INITIATE =WM_DDE_FIRST + 0

一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;

WM_DDE_TERMINATE =WM_DDE_FIRST + 1

一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;

WM_DDE_ADVISE =WM_DDE_FIRST + 2

一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它

WM_DDE_UNADVISE =WM_DDE_FIRST + 3

一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项

WM_DDE_ACK = WM_DDE_FIRST+ 4

此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE,WM_DDE_EXECUTE,WM_DDE_DATA,WM_DDE_ADVISE,WM_DDE_UNADVISE,or WM_DDE_INITIAT消息

WM_DDE_DATA =WM_DDE_FIRST + 5

一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项

WM_DDE_REQUEST =WM_DDE_FIRST + 6

一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;

WM_DDE_POKE =WM_DDE_FIRST + 7

一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;

WM_DDE_EXECUTE =WM_DDE_FIRST + 8

一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;

WM_DDE_LAST =WM_DDE_FIRST + 8

WM_APP = 32768

WM_USER = 1024

此消息能帮助应用程序自定义私有消息;

/////////////////////////////////////////////////////////////////////

通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通

知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows 95公

共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的

滚动条都会产生通知消息。

按扭

B N _ C L I C K E D//用户单击了按钮

B N _ D I S A B L E//按钮被禁止

B N _ D O U B L E CL I C K E D //用户双击了按钮

B N _ H I L I T E//用户加亮了按钮

B N _ PA I N T按钮应当重画

B N _ U N H I L I TE加亮应当去掉

组合框

C B N _ C L O S E UP组合框的列表框被关闭

C B N _ D B L C L K用户双击了一个字符串

C B N _ D R O P D OW N组合框的列表框被拉出

C B N _ E D I T C HA N G E用户修改了编辑框中的文本

C B N _ E D I T U PD AT E编辑框内的文本即将更新

C B N _ E R R S PAC E组合框内存不足

C B N _ K I L L F OC U S组合框失去输入焦点

C B N _ S E L C H AN G E在组合框中选择了一项

C B N _ S E L E N DC A N C E L用户的选择应当被取消

C B N _ S E L E N DO K用户的选择是合法的

C B N _ S E T F O CU S组合框获得输入焦点

编辑框

E N _ C H A N G E编辑框中的文本己更新

E N _ E R R S PA CE编辑框内存不足

E N _ H S C R O L L用户点击了水平滚动条

E N _ K I L L F O CU S编辑框正在失去输入焦点

E N _ M A X T E X T插入的内容被截断

E N _ S E T F O C US编辑框获得输入焦点

E N _ U P D AT E编辑框中的文本将要更新

E N _ V S C R O L L用户点击了垂直滚动条消息含义

列表框

L B N _ D B L C L K用户双击了一项

L B N _ E R R S PAC E列表框内存不够

L B N _ K I L L F OC U S列表框正在失去输入焦点

L B N _ S E L C A NC E L选择被取消

L B N _ S E L C H AN G E选择了另一项

L B N _ S E T F O CU S列表框获得输入焦点

 

 

 

1. 移动控件

 

控件.发送信息 (274,61458,0) 其中参数1的值自61457---61471都可用,结果是一样的,都是移动控件。还有一个大家都熟,就是控件.发送信息 (161,2,0)

 

2.调整控件尺寸

 

控件.发送信息 (274,61441,0) (274,61442,61443,61444,61445,61446,0)(274,61447,61448,0)

 

分别对应调整控件的左宽度右宽度 顶高度 西北角 东北角 底宽度 西南角 东北角的尺寸。

 

此外,控件.发送信息(161,10,0) (161,11,0) (161,12,0) (161,13,0) (161,14,0) (161,15,0) (161,16,0) (161,16,0)

 

也是分别对应调整控件的左宽度右宽度 顶高度 西北角 东北角 底宽度 西南角 东北角的尺寸。

 

3。控件最大化

 

控件.发送信息 (274,61450,0)其中参数1的值自61488---61503都可用,结果是一样的。

 

4。控件最小化

 

控件.发送信息 (274,61473,0)其中参数1的值自61472---61487都可用,结果是一样的。

 

5。马上启动屏幕保护(如果电脑里没设置屏幕保护本信息不起作用)

 

发送信息 (274,61760,0)其中参数1的值自61760---61776都可用,结果是一样的。

 

6.出对话框--15秒进入待机(win98下可用,winXP无效,其他未试)

 

控件.发送信息 (274,61840,0)其中参数1的值自61840---61854都可用,结果是一样的。

 

7。击控件后鼠标带问号,再击后消失。

 

控件.发送信息 (274,61836,0)

 

8。关闭窗口

 

控件.发送信息 (16,0)

 

9。发送控件鼠标左键被按下的信息

 

控件.发送信息 (513,0)

 

10。发送控件鼠标左键被放开的信息

 

控件.发送信息 (514,0)

 

11。清除窗口的标题

 

控件.发送信息 (12,0)

 

以下是易记事本里的:

 

12。复制

 

编辑框.发送信息 (769,0)

 

13。粘帖

 

编辑框.发送信息 (770,0)

 

14。全选

 

编辑框.发送信息 (177,-1)

 

 

 

 

引用

Windows 常用消息大全

相关文章

项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件...
简介 本文的初衷是希望帮助那些有其它平台视觉算法开发经验的...
这篇文章主要简单记录一下C#项目的dll文件管理方法,以便后期...
在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET——...
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理...
通用翻译API的HTTPS 地址为https://fanyi-api.baidu.com/api...