Windows 常用消息大全
附錄A Windows 常用消息大全
表A-1? Windows消息分布
消息范圍
說 明
0 ~ WM_USER – 1
系統(tǒng)消息
WM_USER ~ 0x7FFF
自定義窗口類整數(shù)消息
WM_APP ~ 0xBFFF
應(yīng)用程序自定義消息
0xC000 ~ 0xFFFF
應(yīng)用程序字符串消息
> 0xFFFF
為以后系統(tǒng)應(yīng)用保留
表A-2? 常用Windows消息
消息名稱
值
說? 明
WM_NULL?
0x0000
空消息,此消息將被接收窗口忽略
WM_CREATE?
0x0001
應(yīng)用程序創(chuàng)建一個(gè)窗口
WM_DESTROY
0x0002
一個(gè)窗口被銷毀
WM_MOVE
0x0003
移動(dòng)一個(gè)窗口
WM_SIZE
0x0005
改變一個(gè)窗口的大小
WM_ACTIVATE
0x0006
一個(gè)窗口被激活或失去激活狀態(tài)
WM_SETFOCUS
0x0007
獲得焦點(diǎn)后
WM_KILLFOCUS
0x0008
失去焦點(diǎn)
WM_ENABLE
0x000A
應(yīng)用程序Enable狀態(tài)改變時(shí)產(chǎn)生
WM_SETREDRAW
0x000B
設(shè)置窗口是否能重畫
WM_SETTEXT
0x000C
應(yīng)用程序發(fā)送此消息來設(shè)置一個(gè)窗口的文本
WM_GETTEXT
0x000D
應(yīng)用程序發(fā)送此消息來復(fù)制對(duì)應(yīng)窗口的文本到緩沖區(qū)
WM_GETTEXTLENGTH
0x000E
得到與一個(gè)窗口有關(guān)的文本的長(zhǎng)度(不包含空字符)
WM_PAINT
0x000F
要求一個(gè)窗口重繪自己
WM_CLOSE
0x0010
當(dāng)一個(gè)窗口或應(yīng)用程序要關(guān)閉時(shí)發(fā)送一個(gè)信號(hào)
WM_QUERYENDSESSION
0x0011
用戶選擇結(jié)束對(duì)話框或應(yīng)用程序自己調(diào)用ExitWindows()函數(shù)
WM_QUIT
0x0012
用來結(jié)束程序運(yùn)行或應(yīng)用程序調(diào)用Postquitmessage()函數(shù)來產(chǎn)生此消息
WM_QUERYOPEN
0x0013
當(dāng)用戶窗口恢復(fù)以前的大小位置時(shí),把此消息發(fā)送給某個(gè)圖標(biāo)
WM_ERASEBKGND
0x0014
當(dāng)窗口背景必須被擦除時(shí)(例如在窗口改變大小時(shí))
WM_SYSCOLORCHANGE
0x0015
當(dāng)系統(tǒng)顏色改變時(shí),發(fā)送此消息給所有頂級(jí)窗口
WM_ENDSESSION
0x0016
當(dāng)系統(tǒng)進(jìn)程發(fā)出WM_QUERYENDSESSION消息后,此消息發(fā)送給應(yīng)用程序
WM_SHOWWINDOW
0x0018
當(dāng)隱藏或顯示窗口是發(fā)送此消息給這個(gè)窗口
WM_ACTIVATEAPP
0x001C
當(dāng)某個(gè)窗口將被激活時(shí),將被激活窗口和當(dāng)前活動(dòng)(即將失去激活)窗口會(huì)收到此消息,發(fā)此消息給應(yīng)用程序哪個(gè)窗口是激活的,哪個(gè)是非激活的
WM_FONTCHANGE
0x001D
當(dāng)系統(tǒng)的字體資源庫變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
WM_TIMECHANGE
0x001E
當(dāng)系統(tǒng)的時(shí)間變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
WM_CANCELMODE
0x001F
發(fā)送此消息來取消某種正在進(jìn)行的操作
WM_SETCURSOR
0x0020
如果鼠標(biāo)引起光標(biāo)在某個(gè)窗口中移動(dòng)且鼠標(biāo)輸入沒有被捕獲時(shí),發(fā)消息給該窗口
WM_MOUSEACTIVATE
0x0021
當(dāng)光標(biāo)在某個(gè)非激活的窗口中而用戶正按著鼠標(biāo)的某個(gè)鍵發(fā)送此消息給當(dāng)前窗口
WM_CHILDACTIVATE
0x0022
發(fā)送此消息給MDI子窗口當(dāng)用戶點(diǎn)擊此窗口的標(biāo)題欄,或當(dāng)窗口被激活、移動(dòng)、改變大小
WM_QUEUESYNC
0x0023
此消息由基于計(jì)算機(jī)的訓(xùn)練程序發(fā)送,通過WH_JOURNALPALYBACK的Hook程序分離出用戶輸入消息
WM_GETMINMAXINFO
0x0024
當(dāng)窗口要將要改變大小或位置時(shí),發(fā)送此消息給該窗口
WM_PAINTICON
0x0026
當(dāng)窗口圖標(biāo)將要被重繪時(shí),發(fā)送此消息給該窗口
WM_ICONERASEBKGND
0x0027
在一個(gè)最小化窗口的圖標(biāo)在重繪前,當(dāng)圖標(biāo)背景必須被重繪時(shí),發(fā)送此消息給該窗口
WM_NEXTDLGCTL
0x0028
發(fā)送此消息給一個(gè)對(duì)話框程序以更改焦點(diǎn)位置
WM_SPOOLERSTATUS
0x002A
當(dāng)打印管理列隊(duì)增加或減少一條作業(yè)時(shí)發(fā)出此消息
WM_DRAWITEM
0x002B
當(dāng)Button,ComboBox,Listbox,Menu控件的外觀改變時(shí),發(fā)送此消息給這些控件的所有者
WM_MEASUREITEM
0x002C
當(dāng)Button,ComboBox,list box,ListView,Menu 項(xiàng)被創(chuàng)建時(shí),發(fā)送此消息給控件的所有者
WM_DELETEITEM
0x002D
當(dāng)ListBox 或 ComboBox 被銷毀或當(dāng)某些項(xiàng)通過發(fā)送LB_DELETESTRING、LB_RESETCONTENT、 CB_DELETESTRING、CB_RESETCONTENT 消息被刪除時(shí),發(fā)送此消息給控件的所有者
WM_VKEYTOITEM
0x002E
一個(gè)具有LBS_WANTKEYBOARDINPUT風(fēng)格的ListBox控件發(fā)送此消息給它的所有者,以此來響應(yīng)WM_KEYDOWN消息
WM_CHARTOITEM
0x002F
一個(gè)具有LBS_WANTKEYBOARDINPUT風(fēng)格的ListBox控件發(fā)送此消息給它的所有者,以此來響應(yīng)WM_CHAR消息
WM_SETFONT
0x0030
應(yīng)用程序繪制控件時(shí),發(fā)送此消息得到以何種字體繪制控件中的文本
WM_GETFONT
0x0031
應(yīng)用程序發(fā)送此消息得到當(dāng)前控件繪制文本的字體
WM_SETHOTKEY
0x0032
應(yīng)用程序發(fā)送此消息讓一個(gè)窗口與一個(gè)熱鍵相關(guān)聯(lián)
WM_GETHOTKEY
0x0033
應(yīng)用程序發(fā)送此消息來判斷熱鍵與某個(gè)窗口是否有關(guān)聯(lián)
WM_QUERYDRAGICON
0x0037
此消息發(fā)送給最小化窗口,當(dāng)此窗口將要被拖放而它的類中沒有定義圖標(biāo),應(yīng)用程序就返回一個(gè)圖標(biāo)或光標(biāo)的句柄,當(dāng)用戶拖放圖標(biāo)時(shí)系統(tǒng)顯示這個(gè)圖標(biāo)或光標(biāo)
WM_COMPAREITEM
0x0039
發(fā)送此消息來判定ComboBox或ListBox新增加的項(xiàng)的相對(duì)位置
WM_COMPACTING
0x0041
顯示內(nèi)存已經(jīng)很少了
WM_WINDOWPOSCHANGING
0x0046
當(dāng)調(diào)用SetWindowPos()函數(shù)改變窗口的大小和位置后,發(fā)送此消息給該窗口
WM_POWER
0x0048
當(dāng)系統(tǒng)將進(jìn)入掛起狀態(tài)時(shí)發(fā)送此消息給所有進(jìn)程
WM_COPYDATA
0x004A
當(dāng)一個(gè)應(yīng)用程序傳遞數(shù)據(jù)給另一個(gè)應(yīng)用程序時(shí)發(fā)送此消息
WM_CANCELJOURNAL
0x004B
當(dāng)某個(gè)用戶取消程序日志激活狀態(tài),發(fā)送此消息給應(yīng)用程序
WM_NOTIFY
0x004E
當(dāng)某個(gè)控件的某個(gè)事件已經(jīng)發(fā)生或這個(gè)控件需要得到一些信息時(shí),發(fā)送此消息給它的父窗口
WM_INPUTLANGCHANGEREQUEST
0x0050
當(dāng)用戶選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE
0x0051
當(dāng)應(yīng)用程序輸入語言改變后發(fā)送此消息給受影響的最頂級(jí)窗口
WM_TCARD
0x0052
當(dāng)應(yīng)用程序已經(jīng)初始化Windows幫助例程時(shí)發(fā)送此消息給應(yīng)用程序
WM_HELP
0x0053
當(dāng)用戶按下了F1,如果某個(gè)菜單是激活的,就發(fā)送此消息給此窗口關(guān)聯(lián)的菜單,否則就發(fā)送給有焦點(diǎn)的窗口,如果當(dāng)前都沒有焦點(diǎn),就把此消息發(fā)送給當(dāng)前激活的窗口
WM_USERCHANGED
0x0054
當(dāng)用戶已經(jīng)登錄或退出后發(fā)送此消息給所有的窗口,當(dāng)用戶登錄或退出時(shí)系統(tǒng)更新用戶的具體設(shè)置信息,在用戶更新設(shè)置時(shí)系統(tǒng)馬上發(fā)送此消息
WM_NOTIFYFORMAT
0x0055
公用控件和它們的父窗口通過此消息來判斷在WM_NOTIFY消息中是使用ANSI還是UNICODE形式的結(jié)構(gòu),使用此控件能使某個(gè)控件與它的父控件進(jìn)行相互通信
WM_CONTEXTMENU
0x007B
當(dāng)用戶在某個(gè)窗口中點(diǎn)擊右鍵,則發(fā)送此消息給該窗口
WM_STYLECHANGING
0x007C
當(dāng)將要調(diào)用SetWindowLong()函數(shù)窗口的一個(gè)或多個(gè)風(fēng)格時(shí),發(fā)送此消息給該窗口
WM_STYLECHANGED
0x007D
當(dāng)調(diào)用SetWindowLong()函數(shù)改變了窗口的一個(gè)或多個(gè)風(fēng)格后,發(fā)送此消息給該窗口
WM_DISPLAYCHANGE
0x007E
當(dāng)顯示器的分辨率改變后發(fā)送此消息給所有的窗口
WM_GETICON
0x007F
發(fā)送此消息給某個(gè)窗口,返回與某個(gè)窗口有關(guān)聯(lián)的大圖標(biāo)或小圖標(biāo)的句柄
WM_SETICON
0x0080
應(yīng)用程序發(fā)送此消息讓一個(gè)新的大圖標(biāo)或小圖標(biāo)與某個(gè)窗口關(guān)聯(lián)
WM_NCCREATE
0x0081
當(dāng)某個(gè)窗口第一次被創(chuàng)建時(shí),此消息在WM_CREATE消息被發(fā)送前發(fā)送
WM_NCDESTROY
0x0082
此消息通知某個(gè)窗口,正在銷毀非客戶區(qū)
WM_NCCALCSIZE
0x0083
當(dāng)計(jì)算某個(gè)窗口的客戶區(qū)大小和位置時(shí)發(fā)送此消息
WM_NCHITTEST
0x0084
移動(dòng)鼠標(biāo),按住或釋放鼠標(biāo)時(shí)產(chǎn)生此消息
WM_NCPAINT
0x0085
當(dāng)某個(gè)窗口的框架必須被繪制時(shí),應(yīng)用程序發(fā)送此消息給該窗口
WM_NCACTIVATE
0x0086
通過改變某個(gè)窗口的非客戶區(qū)來表示窗口是處于激活還是非激活狀態(tài)時(shí),此消息被發(fā)送給該窗口
WM_NCMOUSEMOVE
0x00A0
當(dāng)光標(biāo)在窗口的非客戶區(qū)(窗口標(biāo)題欄及邊框)內(nèi)移動(dòng)時(shí)發(fā)送此消息給該窗口
WM_NCLBUTTONDOWN
0x00A1
當(dāng)光標(biāo)在窗口的非客戶區(qū)并按下鼠標(biāo)左鍵時(shí)發(fā)送此消息
WM_NCLBUTTONUP
0x00A2
當(dāng)光標(biāo)在窗口的非客戶區(qū)并釋放鼠標(biāo)左鍵時(shí)發(fā)送此消息
WM_NCLBUTTONDBLCLK
0x00A3
當(dāng)光標(biāo)在窗口的非客戶區(qū)并雙擊鼠標(biāo)左鍵時(shí)發(fā)送此消息
WM_NCRBUTTONDOWN
0x00A4
當(dāng)光標(biāo)在窗口的非客戶區(qū)并按下鼠標(biāo)右鍵時(shí)發(fā)送此消息
WM_NCRBUTTONUP
0x00A5
當(dāng)光標(biāo)在窗口的非客戶區(qū)并釋放鼠標(biāo)右鍵時(shí)發(fā)送此消息
WM_NCRBUTTONDBLCLK
0x00A6
當(dāng)光標(biāo)在窗口的非客戶區(qū)并雙擊鼠標(biāo)右鍵時(shí)發(fā)送此消息
WM_NCMBUTTONDOWN
0x00A7
當(dāng)光標(biāo)在窗口的非客戶區(qū)并按下鼠標(biāo)中鍵時(shí)發(fā)送此消息
WM_NCMBUTTONUP
0x00A8
當(dāng)光標(biāo)在窗口的非客戶區(qū)并釋放鼠標(biāo)中鍵時(shí)發(fā)送此消息
WM_NCMBUTTONDBLCL
0x00A9
當(dāng)光標(biāo)在窗口的非客戶區(qū)并雙擊鼠標(biāo)中鍵時(shí)發(fā)送此消息
WM_KEYDOWN
0x0100
按下一個(gè)非系統(tǒng)鍵(按下鍵時(shí)未按下“ALT”鍵)
WM_KEYUP
0x0101
釋放一個(gè)非系統(tǒng)鍵
WM_CHAR
0x0102
按下某鍵,當(dāng)TranslateMessage()轉(zhuǎn)發(fā)WM_KEYDOWN后發(fā)送本消息
WM_DEADCHAR
0x0103
釋放某鍵,當(dāng)TranslateMessage()轉(zhuǎn)發(fā)WM_KEYUP后發(fā)送本消息
WM_SYSKEYDOWN
0x0104
當(dāng)按住ALT鍵同時(shí)按下其他鍵時(shí)發(fā)送此消息給擁有鍵盤焦點(diǎn)的窗口
WM_SYSKEYUP
0x0105
當(dāng)釋放一個(gè)鍵同時(shí)按住ALT鍵時(shí)發(fā)送此消息給擁有鍵盤焦點(diǎn)的窗口
WM_SYSCHAR
0x0106
當(dāng)TranslateMessage()轉(zhuǎn)發(fā)WM_SYSKEYDOWN后發(fā)送此消息給擁有鍵盤焦點(diǎn)的窗口
WM_SYSDEADCHAR
0x0107
當(dāng)TranslateMessage()轉(zhuǎn)發(fā)WM_SYSKEYUP后發(fā)送此消息給擁有鍵盤焦點(diǎn)的窗口
WM_INITDIALOG
0x0110
在被顯示前發(fā)送此消息對(duì)話框,通常用此消息初始化控件和執(zhí)行其他任務(wù)
WM_COMMAND
0x0111
選擇窗口菜單項(xiàng)或某個(gè)控件發(fā)送一條消息給它的父窗口或按下一個(gè)快捷鍵時(shí)產(chǎn)生此消息
WM_SYSCOMMAND
0x0112
選擇窗口菜單項(xiàng)或選擇最大化或最小化時(shí),發(fā)送此消息給該窗口
WM_TIMER
0x0113
發(fā)生了定時(shí)器事件
WM_HSCROLL
0x0114
當(dāng)窗口水平滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給該窗口和滾動(dòng)條的所有者
WM_VSCROLL
0x0115
當(dāng)窗口垂直滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給該窗口和滾動(dòng)條的所有者
WM_INITMENU
0x0116
當(dāng)一個(gè)菜單將要被激活時(shí)發(fā)送此消息,它發(fā)生在按下菜單項(xiàng)或按下菜單快捷鍵時(shí),它允許程序在顯示前更改菜單
WM_INITMENUPOPUP
0x0117
當(dāng)一個(gè)下拉菜單或子菜單將要被激活時(shí)發(fā)送此消息,它允許顯示前在修改菜單而不必更改整個(gè)菜單
WM_MENUSELECT
0x011F
選擇一條菜單項(xiàng)時(shí)發(fā)送此消息給菜單的所有者(一般是窗口)
WM_MENUCHAR
0x0120
當(dāng)菜單已被激活且用戶按下了某個(gè)鍵(非快捷鍵),發(fā)送此消息給菜單的所有者
WM_ENTERIDLE
0x0121
當(dāng)一個(gè)有模式對(duì)話框或菜單進(jìn)入空閑狀態(tài)時(shí)發(fā)送此消息給它的所有者,空閑狀態(tài)指在處理完一條或幾條先前的消息后,消息列隊(duì)為空
WM_MENURBUTTONUP
0x0122
當(dāng)光標(biāo)位于菜單項(xiàng)上時(shí),釋放鼠標(biāo)右鍵產(chǎn)生此消息
WM_MENUDRAG
0x0123
當(dāng)拖動(dòng)菜單項(xiàng)時(shí),發(fā)送此消息給拖放菜單的所有者
WM_MENUGETOBJECT
0x0124
當(dāng)光標(biāo)移入菜單項(xiàng)或者從菜單項(xiàng)中心移到菜單項(xiàng)頂部或底部時(shí),發(fā)送此消息給拖放菜單的所有者
WM_UNINITMENUPOPUP
0x0125
當(dāng)下拉菜單或者子菜單被銷毀時(shí)產(chǎn)生此消息
WM_MENUCOMMAND
0x0126
當(dāng)用戶選擇菜單項(xiàng)時(shí)產(chǎn)生此消息
WM_CHANGEUISTATE
0x0127
應(yīng)用程序發(fā)送此消息表明用戶界面(UI)狀態(tài)應(yīng)當(dāng)被改變
WM_UPDATEUISTATE
0x0128
應(yīng)用程序發(fā)送此消息改變指定窗口及其子窗口的用戶界面(UI)狀態(tài)
WM_QUERYUISTATE
0x0129
應(yīng)用程序發(fā)送此消息得到某個(gè)窗口的用戶界面(UI)狀態(tài)
WM_CTLCOLORMSGBOX
0x0132
繪制消息框前發(fā)送此消息給它的父窗口,通過響應(yīng)這條消息,父窗口可以通過使用給定的相關(guān)顯示設(shè)備的句柄來設(shè)置消息框的文本和背景顏色
WM_CTLCOLOREDIT
0x0133
繪制編輯型控件前發(fā)送此消息給它的父窗口,可用來設(shè)置編輯框的文本和背景顏色
WM_CTLCOLORLISTBOX
0x0134
繪制列表框控件前發(fā)送此消息給它的父窗口,可用來設(shè)置編輯框的文本和背景顏色
WM_CTLCOLORBTN
0x0135
繪制按鈕控件前發(fā)送此消息給它的父窗口,可用來設(shè)置編輯框的文本和背景顏色
WM_CTLCOLORDLG
0x0136
繪制對(duì)話框前發(fā)送此消息給它的父窗口,可用來設(shè)置編輯框的文本和背景顏色
WM_CTLCOLORSCROLLBAR
0x0137
繪制滾動(dòng)條控件前發(fā)送此消息給它的父窗口,可用來設(shè)置滾動(dòng)條控件的文本和背景顏色