Win32 SDK基礎(九) 之Windows常用消息大全的總結

一、windows消息分布

消息范圍

說 明

0 ~?WM_USER?– 1

系統消息

WM_USER?~ 0x7FFF

自定義窗口類整數消息

WM_APP?~ 0xBFFF

應用程序自定義消息

0xC000 ~ 0xFFFF

應用程序字符串消息

> 0xFFFF

為以后系統應用保留

二、常用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為正整數

三、通知消息-按鈕

消息名稱

說 明

BN_CLICKED

單擊按鈕

BN_DISABLE

按鈕被禁止

BN_DOUBLECLICKED

雙擊按鈕

BN_HILITE

加亮按鈕

BN_PAINT

按鈕應當重畫

BN_UNHILITE

加亮應當去掉

四、通知消息-組合框

消息名稱

說 明

CBN_CLOSEUP

組合框的列表框被關閉

CBN_DBLCLK

用戶雙擊了一個字符串

CBN_DROPDOWN

組合框的列表框被拉下

CBN_EDITCHANGE

用戶修改了組合框中的文本

CBN_EDITUPDATE

組合框內的文本即將更新

CBN_ERRSPACE

組合框內存不足

CBN_KILLFOCUS

組合框失去輸入焦點

CBN_SELCHANGE

在組合框中選擇了一項

CBN_SELENDCANCEL

用戶的選擇將被忽略

CBN_SELENDOK

用戶的選擇將被執行

CBN_SETFOCUS

組合框獲得輸入焦點

五、通知消息-編輯框

消息名稱

說 明

EN_CHANGE

編輯框中的文本己更新

EN_ERRSPACE

編輯框內存不足

EN_HSCROLL

用戶點擊了水平滾動條

EN_KILLFOCUS

編輯框失去輸入焦點

EN_MAXTEXT

插入的內容被截斷

EN_SETFOCUS

編輯框獲得輸入焦點

EN_UPDATE

編輯框中的文本將要更新

EN_VSCROLL

用戶點擊了垂直滾動條

六、通知消息-列表框

消息名稱

說 明

LBN_DBLCLK

用戶雙擊了一項

LBN_ERRSPACE

列表框內存不足

LBN_KILLFOCUS

列表框正在失去輸入焦點

LBN_SELCANCEL

用戶選擇被取消

LBN_SELCHANGE

用戶選擇將改變

LBN_SETFOCUS

列表框獲得輸入焦點

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享