Windows 消息ID及定义大全
表A-1? Windows消息分布
| 消息范圍 | 說 明 |
| 0 ~?WM_USER?– 1 | 系統(tǒng)消息 |
| WM_USER?~ 0x7FFF | 自定義窗口類整數(shù)消息 |
| WM_APP?~ 0xBFFF | 應用程序自定義消息 |
| 0xC000 ~ 0xFFFF | 應用程序字符串消息 |
| > 0xFFFF | 為以后系統(tǒng)應用保留 |
表A-2? 常用Windows消息
| 消息名稱 | 值 | 說? 明 |
| WM_NULL? | 0x0000 | 空消息,此消息將被接收窗口忽略 |
| WM_CREATE? | 0x0001 | 應用程序創(chuàng)建一個窗口 |
| WM_DESTROY | 0x0002 | 一個窗口被銷毀 |
| WM_MOVE | 0x0003 | 移動一個窗口 |
| WM_SIZE | 0x0005 | 改變一個窗口的大小 |
| WM_ACTIVATE | 0x0006 | 一個窗口被激活或失去激活狀態(tài) |
| WM_SETFOCUS | 0x0007 | 獲得焦點后 |
| WM_KILLFOCUS | 0x0008 | 失去焦點 |
| WM_ENABLE | 0x000A | 應用程序Enable狀態(tài)改變時產(chǎn)生 |
| WM_SETREDRAW | 0x000B | 設置窗口是否能重畫 |
| WM_SETTEXT | 0x000C | 應用程序發(fā)送此消息來設置一個窗口的文本 |
| WM_GETTEXT | 0x000D | 應用程序發(fā)送此消息來復制對應窗口的文本到緩沖區(qū) |
| WM_GETTEXTLENGTH | 0x000E | 得到與一個窗口有關的文本的長度(不包含空字符) |
| WM_PAINT | 0x000F | 要求一個窗口重繪自己 |
| WM_CLOSE | 0x0010 | 當一個窗口或應用程序要關閉時發(fā)送一個信號 |
| WM_QUERYENDSESSION | 0x0011 | 用戶選擇結(jié)束對話框或應用程序自己調(diào)用ExitWindows()函數(shù) |
| WM_QUIT | 0x0012 | 用來結(jié)束程序運行或應用程序調(diào)用Postquitmessage()函數(shù)來產(chǎn)生此消息 |
| WM_QUERYOPEN | 0x0013 | 當用戶窗口恢復以前的大小位置時,把此消息發(fā)送給某個圖標 |
| WM_ERASEBKGND | 0x0014 | 當窗口背景必須被擦除時(例如在窗口改變大小時) |
| WM_SYSCOLORCHANGE | 0x0015 | 當系統(tǒng)顏色改變時,發(fā)送此消息給所有頂級窗口 |
| WM_ENDSESSION | 0x0016 | 當系統(tǒng)進程發(fā)出WM_QUERYENDSESSION消息后,此消息發(fā)送給應用程序 |
| WM_SHOWWINDOW | 0x0018 | 當隱藏或顯示窗口是發(fā)送此消息給這個窗口 |
| WM_ACTIVATEAPP | 0x001C | 當某個窗口將被激活時,將被激活窗口和當前活動(即將失去激活)窗口會收到此消息,發(fā)此消息給應用程序哪個窗口是激活的,哪個是非激活的 |
| WM_FONTCHANGE | 0x001D | 當系統(tǒng)的字體資源庫變化時發(fā)送此消息給所有頂級窗口 |
| WM_TIMECHANGE | 0x001E | 當系統(tǒng)的時間變化時發(fā)送此消息給所有頂級窗口 |
| WM_CANCELMODE | 0x001F | 發(fā)送此消息來取消某種正在進行的操作 |
| WM_SETCURSOR | 0x0020 | 如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時,發(fā)消息給該窗口 |
| WM_MOUSEACTIVATE | 0x0021 | 當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發(fā)送此消息給當前窗口 |
| WM_CHILDACTIVATE | 0x0022 | 發(fā)送此消息給MDI子窗口當用戶點擊此窗口的標題欄,或當窗口被激活、移動、改變大小 |
| WM_QUEUESYNC | 0x0023 | 此消息由基于計算機的訓練程序發(fā)送,通過WH_JOURNALPALYBACK的Hook程序分離出用戶輸入消息 |
| WM_GETMINMAXINFO | 0x0024 | 當窗口要將要改變大小或位置時,發(fā)送此消息給該窗口 |
| WM_PAINTICON | 0x0026 | 當窗口圖標將要被重繪時,發(fā)送此消息給該窗口 |
| WM_ICONERASEBKGND | 0x0027 | 在一個最小化窗口的圖標在重繪前,當圖標背景必須被重繪時,發(fā)送此消息給該窗口 |
| WM_NEXTDLGCTL | 0x0028 | 發(fā)送此消息給一個對話框程序以更改焦點位置 |
| WM_SPOOLERSTATUS | 0x002A | 當打印管理列隊增加或減少一條作業(yè)時發(fā)出此消息 |
| WM_DRAWITEM | 0x002B | 當Button,ComboBox,Listbox,Menu控件的外觀改變時,發(fā)送此消息給這些控件的所有者 |
| WM_MEASUREITEM | 0x002C | 當Button,ComboBox,list box,ListView,Menu 項被創(chuàng)建時,發(fā)送此消息給控件的所有者 |
| WM_DELETEITEM | 0x002D | 當ListBox 或 ComboBox 被銷毀或當某些項通過發(fā)送LB_DELETESTRING、LB_RESETCONTENT、 CB_DELETESTRING、CB_RESETCONTENT 消息被刪除時,發(fā)送此消息給控件的所有者 |
| WM_VKEYTOITEM | 0x002E | 一個具有LBS_WANTKEYBOARDINPUT風格的ListBox控件發(fā)送此消息給它的所有者,以此來響應WM_KEYDOWN消息 |
| WM_CHARTOITEM | 0x002F | 一個具有LBS_WANTKEYBOARDINPUT風格的ListBox控件發(fā)送此消息給它的所有者,以此來響應WM_CHAR消息 |
| WM_SETFONT | 0x0030 | 應用程序繪制控件時,發(fā)送此消息得到以何種字體繪制控件中的文本 |
| WM_GETFONT | 0x0031 | 應用程序發(fā)送此消息得到當前控件繪制文本的字體 |
| WM_SETHOTKEY | 0x0032 | 應用程序發(fā)送此消息讓一個窗口與一個熱鍵相關聯(lián) |
| WM_GETHOTKEY | 0x0033 | 應用程序發(fā)送此消息來判斷熱鍵與某個窗口是否有關聯(lián) |
| WM_QUERYDRAGICON | 0x0037 | 此消息發(fā)送給最小化窗口,當此窗口將要被拖放而它的類中沒有定義圖標,應用程序就返回一個圖標或光標的句柄,當用戶拖放圖標時系統(tǒng)顯示這個圖標或光標 |
| WM_COMPAREITEM | 0x0039 | 發(fā)送此消息來判定ComboBox或ListBox新增加的項的相對位置 |
| WM_COMPACTING | 0x0041 | 顯示內(nèi)存已經(jīng)很少了 |
| WM_WINDOWPOSCHANGING | 0x0046 | 當調(diào)用SetWindowPos()函數(shù)改變窗口的大小和位置后,發(fā)送此消息給該窗口 |
| WM_POWER | 0x0048 | 當系統(tǒng)將進入掛起狀態(tài)時發(fā)送此消息給所有進程 |
| WM_COPYDATA | 0x004A | 當一個應用程序傳遞數(shù)據(jù)給另一個應用程序時發(fā)送此消息 |
| WM_CANCELJOURNAL | 0x004B | 當某個用戶取消程序日志激活狀態(tài),發(fā)送此消息給應用程序 |
| WM_NOTIFY | 0x004E | 當某個控件的某個事件已經(jīng)發(fā)生或這個控件需要得到一些信息時,發(fā)送此消息給它的父窗口 |
| WM_INPUTLANGCHANGEREQUEST | 0x0050 | 當用戶選擇某種輸入語言,或輸入語言的熱鍵改變 |
| WM_INPUTLANGCHANGE | 0x0051 | 當應用程序輸入語言改變后發(fā)送此消息給受影響的最頂級窗口 |
| WM_TCARD | 0x0052 | 當應用程序已經(jīng)初始化Windows幫助例程時發(fā)送此消息給應用程序 |
| WM_HELP | 0x0053 | 當用戶按下了F1,如果某個菜單是激活的,就發(fā)送此消息給此窗口關聯(lián)的菜單,否則就發(fā)送給有焦點的窗口,如果當前都沒有焦點,就把此消息發(fā)送給當前激活的窗口 |
| WM_USERCHANGED | 0x0054 | 當用戶已經(jīng)登錄或退出后發(fā)送此消息給所有的窗口,當用戶登錄或退出時系統(tǒng)更新用戶的具體設置信息,在用戶更新設置時系統(tǒng)馬上發(fā)送此消息 |
| WM_NOTIFYFORMAT | 0x0055 | 公用控件和它們的父窗口通過此消息來判斷在WM_NOTIFY消息中是使用ANSI還是UNICODE形式的結(jié)構,使用此控件能使某個控件與它的父控件進行相互通信 |
| WM_CONTEXTMENU | 0x007B | 當用戶在某個窗口中點擊右鍵,則發(fā)送此消息給該窗口 |
| WM_STYLECHANGING | 0x007C | 當將要調(diào)用SetWindowLong()函數(shù)窗口的一個或多個風格時,發(fā)送此消息給該窗口 |
| WM_STYLECHANGED | 0x007D | 當調(diào)用SetWindowLong()函數(shù)改變了窗口的一個或多個風格后,發(fā)送此消息給該窗口 |
| WM_DISPLAYCHANGE | 0x007E | 當顯示器的分辨率改變后發(fā)送此消息給所有的窗口 |
| WM_GETICON | 0x007F | 發(fā)送此消息給某個窗口,返回與某個窗口有關聯(lián)的大圖標或小圖標的句柄 |
| WM_SETICON | 0x0080 | 應用程序發(fā)送此消息讓一個新的大圖標或小圖標與某個窗口關聯(lián) |
| WM_NCCREATE | 0x0081 | 當某個窗口第一次被創(chuàng)建時,此消息在WM_CREATE消息被發(fā)送前發(fā)送 |
| WM_NCDESTROY | 0x0082 | 此消息通知某個窗口,正在銷毀非客戶區(qū) |
| WM_NCCALCSIZE | 0x0083 | 當計算某個窗口的客戶區(qū)大小和位置時發(fā)送此消息 |
| WM_NCHITTEST | 0x0084 | 移動鼠標,按住或釋放鼠標時產(chǎn)生此消息 |
| WM_NCPAINT | 0x0085 | 當某個窗口的框架必須被繪制時,應用程序發(fā)送此消息給該窗口 |
| WM_NCACTIVATE | 0x0086 | 通過改變某個窗口的非客戶區(qū)來表示窗口是處于激活還是非激活狀態(tài)時,此消息被發(fā)送給該窗口 |
| WM_NCMOUSEMOVE | 0x00A0 | 當光標在窗口的非客戶區(qū)(窗口標題欄及邊框)內(nèi)移動時發(fā)送此消息給該窗口 |
| WM_NCLBUTTONDOWN | 0x00A1 | 當光標在窗口的非客戶區(qū)并按下鼠標左鍵時發(fā)送此消息 |
| WM_NCLBUTTONUP | 0x00A2 | 當光標在窗口的非客戶區(qū)并釋放鼠標左鍵時發(fā)送此消息 |
| WM_NCLBUTTONDBLCLK | 0x00A3 | 當光標在窗口的非客戶區(qū)并雙擊鼠標左鍵時發(fā)送此消息 |
| WM_NCRBUTTONDOWN | 0x00A4 | 當光標在窗口的非客戶區(qū)并按下鼠標右鍵時發(fā)送此消息 |
| WM_NCRBUTTONUP | 0x00A5 | 當光標在窗口的非客戶區(qū)并釋放鼠標右鍵時發(fā)送此消息 |
| WM_NCRBUTTONDBLCLK | 0x00A6 | 當光標在窗口的非客戶區(qū)并雙擊鼠標右鍵時發(fā)送此消息 |
| WM_NCMBUTTONDOWN | 0x00A7 | 當光標在窗口的非客戶區(qū)并按下鼠標中鍵時發(fā)送此消息 |
| WM_NCMBUTTONUP | 0x00A8 | 當光標在窗口的非客戶區(qū)并釋放鼠標中鍵時發(fā)送此消息 |
| WM_NCMBUTTONDBLCL | 0x00A9 | 當光標在窗口的非客戶區(qū)并雙擊鼠標中鍵時發(fā)送此消息 |
| WM_KEYDOWN | 0x0100 | 按下一個非系統(tǒng)鍵(按下鍵時未按下“ALT”鍵) |
| WM_KEYUP | 0x0101 | 釋放一個非系統(tǒng)鍵 |
| WM_CHAR | 0x0102 | 按下某鍵,當TranslateMessage()轉(zhuǎn)發(fā)WM_KEYDOWN后發(fā)送本消息 |
| WM_DEADCHAR | 0x0103 | 釋放某鍵,當TranslateMessage()轉(zhuǎn)發(fā)WM_KEYUP后發(fā)送本消息 |
| WM_SYSKEYDOWN | 0x0104 | 當按住ALT鍵同時按下其他鍵時發(fā)送此消息給擁有鍵盤焦點的窗口 |
| WM_SYSKEYUP | 0x0105 | 當釋放一個鍵同時按住ALT鍵時發(fā)送此消息給擁有鍵盤焦點的窗口 |
| WM_SYSCHAR | 0x0106 | 當TranslateMessage()轉(zhuǎn)發(fā)WM_SYSKEYDOWN后發(fā)送此消息給擁有鍵盤焦點的窗口 |
| WM_SYSDEADCHAR | 0x0107 | 當TranslateMessage()轉(zhuǎn)發(fā)WM_SYSKEYUP后發(fā)送此消息給擁有鍵盤焦點的窗口 |
| WM_INITDIALOG | 0x0110 | 在被顯示前發(fā)送此消息對話框,通常用此消息初始化控件和執(zhí)行其他任務 |
| WM_COMMAND | 0x0111 | 選擇窗口菜單項或某個控件發(fā)送一條消息給它的父窗口或按下一個快捷鍵時產(chǎn)生此消息 |
| WM_SYSCOMMAND | 0x0112 | 選擇窗口菜單項或選擇最大化或最小化時,發(fā)送此消息給該窗口 |
| WM_TIMER | 0x0113 | 發(fā)生了定時器事件 |
| WM_HSCROLL | 0x0114 | 當窗口水平滾動條產(chǎn)生一個滾動事件時發(fā)送此消息給該窗口和滾動條的所有者 |
| WM_VSCROLL | 0x0115 | 當窗口垂直滾動條產(chǎn)生一個滾動事件時發(fā)送此消息給該窗口和滾動條的所有者 |
| WM_INITMENU | 0x0116 | 當一個菜單將要被激活時發(fā)送此消息,它發(fā)生在按下菜單項或按下菜單快捷鍵時,它允許程序在顯示前更改菜單 |
| WM_INITMENUPOPUP | 0x0117 | 當一個下拉菜單或子菜單將要被激活時發(fā)送此消息,它允許顯示前在修改菜單而不必更改整個菜單 |
| WM_MENUSELECT | 0x011F | 選擇一條菜單項時發(fā)送此消息給菜單的所有者(一般是窗口) |
| WM_MENUCHAR | 0x0120 | 當菜單已被激活且用戶按下了某個鍵(非快捷鍵),發(fā)送此消息給菜單的所有者 |
| WM_ENTERIDLE | 0x0121 | 當一個有模式對話框或菜單進入空閑狀態(tài)時發(fā)送此消息給它的所有者,空閑狀態(tài)指在處理完一條或幾條先前的消息后,消息列隊為空 |
| WM_MENURBUTTONUP | 0x0122 | 當光標位于菜單項上時,釋放鼠標右鍵產(chǎn)生此消息 |
| WM_MENUDRAG | 0x0123 | 當拖動菜單項時,發(fā)送此消息給拖放菜單的所有者 |
| WM_MENUGETOBJECT | 0x0124 | 當光標移入菜單項或者從菜單項中心移到菜單項頂部或底部時,發(fā)送此消息給拖放菜單的所有者 |
| WM_UNINITMENUPOPUP | 0x0125 | 當下拉菜單或者子菜單被銷毀時產(chǎn)生此消息 |
| WM_MENUCOMMAND | 0x0126 | 當用戶選擇菜單項時產(chǎn)生此消息 |
| WM_CHANGEUISTATE | 0x0127 | 應用程序發(fā)送此消息表明用戶界面(UI)狀態(tài)應當被改變 |
| WM_UPDATEUISTATE | 0x0128 | 應用程序發(fā)送此消息改變指定窗口及其子窗口的用戶界面(UI)狀態(tài) |
| WM_QUERYUISTATE | 0x0129 | 應用程序發(fā)送此消息得到某個窗口的用戶界面(UI)狀態(tài) |
| WM_CTLCOLORMSGBOX | 0x0132 | 繪制消息框前發(fā)送此消息給它的父窗口,通過響應這條消息,父窗口可以通過使用給定的相關顯示設備的句柄來設置消息框的文本和背景顏色 |
| WM_CTLCOLOREDIT | 0x0133 | 繪制編輯型控件前發(fā)送此消息給它的父窗口,可用來設置編輯框的文本和背景顏色 |
| WM_CTLCOLORLISTBOX | 0x0134 | 繪制列表框控件前發(fā)送此消息給它的父窗口,可用來設置編輯框的文本和背景顏色 |
| WM_CTLCOLORBTN | 0x0135 | 繪制按鈕控件前發(fā)送此消息給它的父窗口,可用來設置編輯框的文本和背景顏色 |
| WM_CTLCOLORDLG | 0x0136 | 繪制對話框前發(fā)送此消息給它的父窗口,可用來設置編輯框的文本和背景顏色 |
| WM_CTLCOLORSCROLLBAR | 0x0137 | 繪制滾動條控件前發(fā)送此消息給它的父窗口,可用來設置滾動條控件的文本和背景顏色 |
| WM_CTLCOLORSTATIC | 0x0138 | 繪制靜態(tài)控件前發(fā)送此消息給它的父窗口,可用來設置靜態(tài)控件的文本和背景顏色 |
| 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 | 當鼠標滾輪轉(zhuǎn)動時發(fā)送此消息給當前獲得焦點的窗口 |
| WM_PARENTNOTIFY | 0x0210 | 當MDI子窗口被創(chuàng)建或被銷毀,或當光標位于子窗口上且用戶按了一下鼠標鍵時,發(fā)送此消息給它的父窗口 |
| WM_ENTERMENULOOP | 0x0211 | 發(fā)送此消息通知應用程序的主窗口進程已經(jīng)進入了菜單模式循環(huán) |
| WM_EXITMENULOOP | 0x0212 | 發(fā)送此消息通知應用程序的主窗口進程已經(jīng)退出了菜單模式循環(huán) |
| WM_SIZING | 0x0214 | 調(diào)整窗口大小時發(fā)送此消息給窗口,通過此消息應用程序可以監(jiān)視或修改窗口大小和位置 |
| WM_CAPTURECHANGED | 0x0215 | 當窗口設定為不捕獲鼠標事件時,發(fā)送此消息給該窗口 |
| WM_MOVING | 0x0216 | 移動窗口時發(fā)送此消息給窗口,通過此消息應用程序可以監(jiān)視或修改窗口大小和位置 |
| WM_POWERBROADCAST | 0x0218 | 發(fā)送此消息給應用程序通知它有關電源管理事件 |
| WM_DEVICECHANGE | 0x0219 | 當設備的硬件配置改變時發(fā)送此消息給應用程序或設備驅(qū)動程序 |
| WM_MDICREATE | 0x0220 | 應用程序發(fā)送此消息給多文檔的客戶窗口來創(chuàng)建一個MDI 子窗口 |
| WM_MDIDESTROY | 0x0221 | 應用程序發(fā)送此消息給多文檔的客戶窗口來關閉一個MDI 子窗口 |
| WM_MDIACTIVATE | 0x0222 | 應用程序發(fā)送此消息給多文檔的客戶窗口通知客戶窗口激活另一個MDI子窗口,當客戶窗口收到此消息后,它發(fā)出WM_MDIACTIVE消息給MDI子窗口(未激活)來激活它 |
| WM_MDIRESTORE | 0x0223 | 應用程序發(fā)送此消息給MDI客戶窗口通知子窗口恢復到原來大小 |
| WM_MDINEXT | 0x0224 | 應用程序發(fā)送此消息給MDI客戶窗口激活下一個或前一個窗口 |
| WM_MDIMAXIMIZE | 0x0225 | 應用程序發(fā)送此消息給MDI客戶窗口以最大化一個MDI子窗口 |
| WM_MDITILE | 0x0226 | 應用程序發(fā)送此消息給MDI客戶窗口以平鋪方式重新排列所有MDI子窗口 |
| WM_MDICASCADE | 0x0227 | 應用程序發(fā)送此消息給MDI客戶窗口以層疊方式重新排列所有MDI子窗口 |
| WM_MDIICONARRANGE | 0x0228 | 應用程序發(fā)送此消息給MDI客戶窗口重新排列所有最小化的MDI子窗口 |
| WM_MDIGETACTIVE | 0x0229 | 應用程序發(fā)送此消息給MDI客戶窗口以找到激活的子窗口的句柄 |
| WM_MDISETMENU | 0x0230 | 應用程序發(fā)送此消息給MDI客戶窗口用MDI菜單代替子窗口的菜單 |
| WM_ENTERSIZEMOVE | 0x0231 | 當窗口進入移動或改變大小模式循環(huán)時,發(fā)送此消息給該窗口 |
| WM_EXITSIZEMOVE | 0x0232 | 當窗口退出移動或改變大小模式循環(huán)時,發(fā)送此消息給該窗口 |
| WM_DROPFILES | 0x0233 | 當用戶在應用程序窗口中拖動某個文件時,產(chǎn)生此消息 |
| WM_MDIREFRESHMENU | 0x0234 | 應用程序發(fā)送此消息給MDI客戶窗口以刷新窗口菜單 |
| WM_MOUSEHOVER | 0x02A1 | 當光標在窗口客戶區(qū)懸停超過TrackMouseEvent()指定的時間時,發(fā)送此消息給該窗口 |
| WM_MOUSELEAVE | 0x02A3 | 當光標離開窗口客戶區(qū)超過TrackMouseEvent()指定的時間時,發(fā)送此消息給該窗口 |
| WM_CUT | 0x0300 | 應用程序發(fā)送此消息給一個編輯框或ComboBox以刪除當前選擇的文本 |
| WM_COPY | 0x0301 | 應用程序發(fā)送此消息給一個編輯框或ComboBox以復制當前選擇的文本到剪貼板 |
| WM_PASTE? | 0x0302 | 應用程序發(fā)送此消息給一個編輯框或ComboBox以從剪貼板中得到數(shù)據(jù) |
| WM_CLEAR | 0x0303 | 應用程序發(fā)送此消息給一個編輯框或ComboBox以清除當前選擇的內(nèi)容 |
| WM_UNDO | 0x0304 | 應用程序發(fā)送此消息給一個編輯框或ComboBox以撤消最后一次操作 |
| WM_DESTROYCLIPBOARD | 0x0307 | 當調(diào)用EmptyClipboard()清空剪貼板時,發(fā)送此消息給剪貼板所有者 |
| WM_DRAWCLIPBOARD | 0x0308 | 當剪貼板的內(nèi)容變化時發(fā)送此消息給剪貼板觀察鏈中的第一個窗口,它允許用剪貼板觀察窗口來顯示剪貼板的新內(nèi)容 |
| WM_PAINTCLIPBOARD | 0x0309 | 當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)且剪貼板觀察窗口的客戶區(qū)需要重繪時,發(fā)送此消息給剪貼板所有者 |
| WM_VSCROLLCLIPBOARD | 0x030A | 當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)且剪貼板觀察窗口發(fā)生垂直滾動條事件時,剪貼板觀察窗口發(fā)送此消息給剪貼板所有者 |
| WM_SIZECLIPBOARD | 0x030B | 當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)且剪貼板觀察窗口的客戶區(qū)域的大小已經(jīng)改變時,剪貼板觀察窗口發(fā)送此消息給剪貼板的所有者 |
| WM_ASKCBFORMATNAME | 0x030C | 剪貼板觀察窗口發(fā)送此消息給剪貼板所有者以獲得CF_OWNERDISPLAY剪貼板格式的名字 |
| WM_CHANGECBCHAIN | 0x030D | 當一個窗口從剪貼板觀察鏈中移去時發(fā)送此消息給剪貼板觀察鏈中的第一個窗口 |
| WM_HSCROLLCLIPBOARD | 0x030E | 當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)且剪貼板觀察窗口發(fā)生水平滾動條事件時,剪貼板觀察窗口發(fā)送此消息給剪貼板所有者 |
| WM_QUERYNEWPALETTE | 0x030F | 發(fā)送此消息給將要獲得鍵盤焦點的窗口,此消息使窗口在獲得焦點時同時有機會實現(xiàn)它的邏輯調(diào)色板 |
| WM_PALETTEISCHANGING | 0x0310 | 應用程序?qū)⒁獙崿F(xiàn)它的邏輯調(diào)色板時發(fā)送此消息通知所有應用程序 |
| WM_PALETTECHANGED | 0x0311 | 獲得焦點的窗口實現(xiàn)它的邏輯調(diào)色板后發(fā)送此消息給所有頂級并重疊的窗口,以此 來改變系統(tǒng)調(diào)色板 |
| WM_HOTKEY | 0x0312 | 當用戶按下由RegisterHotKey()注冊的熱鍵時產(chǎn)生此消息 |
| WM_PRINT | 0x0317 | 應用程序發(fā)送此消息給窗口,要求窗口在指定設備環(huán)境中繪制自己,一般情況下是打印機設備環(huán)境 |
| WM_PRINTCLIENT | 0x0318 | 應用程序發(fā)送此消息給窗口,要求窗口在指定設備環(huán)境中繪制窗口客戶區(qū),一般情況下是打印機設備環(huán)境 |
| WM_APP | 0x8000 | 幫助用戶自定義消息,自定義消息可以為WM_APP+X,X為正整數(shù) |
| WM_USER | 0x0400 | 幫助用戶自定義消息,自定義消息可以為WM_USER+X,X為正整數(shù) |
? 表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 | 組合框內(nèi)的文本即將更新 |
| CBN_ERRSPACE | 組合框內(nèi)存不足 |
| CBN_KILLFOCUS | 組合框失去輸入焦點 |
| CBN_SELCHANGE | 在組合框中選擇了一項 |
| CBN_SELENDCANCEL | 用戶的選擇將被忽略 |
| CBN_SELENDOK | 用戶的選擇將被執(zhí)行 |
| CBN_SETFOCUS | 組合框獲得輸入焦點 |
表A-5? 通知消息-編輯框
| 消息名稱 | 說 明 |
| EN_CHANGE | 編輯框中的文本己更新 |
| EN_ERRSPACE | 編輯框內(nèi)存不足 |
| EN_HSCROLL | 用戶點擊了水平滾動條 |
| EN_KILLFOCUS | 編輯框失去輸入焦點 |
| EN_MAXTEXT | 插入的內(nèi)容被截斷 |
| EN_SETFOCUS | 編輯框獲得輸入焦點 |
| EN_UPDATE | 編輯框中的文本將要更新 |
| EN_VSCROLL | 用戶點擊了垂直滾動條 |
表A-6? 通知消息-列表框
| 消息名稱 | 說 明 |
| LBN_DBLCLK | 用戶雙擊了一項 |
| LBN_ERRSPACE | 列表框內(nèi)存不足 |
| LBN_KILLFOCUS | 列表框正在失去輸入焦點 |
| LBN_SELCANCEL | 用戶選擇被取消 |
| LBN_SELCHANGE | 用戶選擇將改變 |
| LBN_SETFOCUS | 列表框獲得輸入焦點 |
Windows消息大全
?
Windows是一消息(Message)驅(qū)動式系統(tǒng),Windows消息提供了應用程序與應用程序之間、應用程序與Windows系統(tǒng)之間進行通訊的手段。應用程序要實現(xiàn)的功能由消息來觸發(fā),并靠對消息的響應和處理來完成。Windows系統(tǒng)中有兩種消息隊列,一種是系統(tǒng)消息隊列,另一種是應用程序消息隊列。計算機的所有輸入設備由 Windows監(jiān)控,當一個事件發(fā)生時,Windows先將輸入的消息放入系統(tǒng)消息隊列中,然后再將輸入的消息拷貝到相應的應用程序隊列中,應用程序中的消息循環(huán)從它的消息隊列中檢索每一個消息并發(fā)送給相應的窗口函數(shù)中。一個事件的發(fā)生,到達處理它的窗口函數(shù)必須經(jīng)歷上述過程。值得注意的是消息的非搶先性,即不論事件的急與緩,總是按到達的先后排隊(一些系統(tǒng)消息除外),這就使得一些外部實時事件可能得不到及時的處理。
?
由于Windows本身是由消息驅(qū)動的,舉一個例子來說明這個問題。打開記事本程序,該程序有一個File菜單,那么,在運行該應用程序的時候,如果用戶單擊了File菜單里New命令時,這個動作將被Windows (而不是應用程序本身!)所捕獲,Windows經(jīng)過分析得知這個動作應該由上面所說的那個應用程序去處理,既然是這樣,Windows就發(fā)送了個叫做WM_COMMAND的消息給應用程序,該消息所包含信息告訴應用程序:"用戶單擊了New菜單",應用程序得知這一消息之后,采取相應的動作來響應它,這個過程稱為消息處理。Windows為每一個應用程序(確切地說是每一個線程)維護了相應的消息隊列,應用程序的任務就是不停的從它的消息隊列中獲取消息,分析消息和處理消息,直到一條接到叫做WM_QUIT消息為止,這個過程通常是由一種叫做消息循環(huán)的程序結(jié)構來實現(xiàn)的。
?
消息本身是作為一個記錄傳遞給應用程序的,這個記錄中包含了消息的類型以及其他信息。例如,對于單擊鼠標所產(chǎn)生的消息來說,這個記錄中包含了單擊鼠標時的坐標。這個記錄類型叫做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 / /消息創(chuàng)建時的時間
pt: TPoint / /消息創(chuàng)建時的鼠標位置
end
?
消息中有什么?
是否覺得一個消息記錄中的信息像希臘語一樣?如果是這樣,那么看一看下面的解釋:
hwnd 32位的窗口句柄。窗口可以是任何類型的屏幕對象,因為Win32能夠維護大多數(shù)可視對象的句柄(窗口、對話框、按鈕、編輯框等)。
message 用于區(qū)別其他消息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自定義的常量。
wParam 通常是一個與消息有關的常量值,也可能是窗口或控件的句柄。
lParam 通常是一個指向內(nèi)存中數(shù)據(jù)的指針。由于WParm、lParam和Pointer都是32位的,因此,它們之間可以相互轉(zhuǎn)換。
?
WM_NULL = 0
WM_CREATE = 1
應用程序創(chuàng)建一個窗口
WM_DESTROY = 2
一個窗口被銷毀
WM_MOVE = 3
移動一個窗口
WM_SIZE = 5
改變一個窗口的大小
WM_ACTIVATE = 6
一個窗口被激活或失去激活狀態(tài);
WM_SETFOCUS = 7
獲得焦點后
WM_KILLFOCUS = 8
失去焦點
WM_ENABLE = 10
改變enable狀態(tài)
WM_SETREDRAW = 11
設置窗口是否能重畫
WM_SETTEXT = 12
應用程序發(fā)送此消息來設置一個窗口的文本
WM_GETTEXT = 13
應用程序發(fā)送此消息來復制對應窗口的文本到緩沖區(qū)
WM_GETTEXTLENGTH =14
得到與一個窗口有關的文本的長度(不包含空字符)
WM_PAINT = 15
要求一個窗口重畫自己
WM_CLOSE = 16
當一個窗口或應用程序要關閉時發(fā)送一個信號
WM_QUERYENDSESSION= 17
當用戶選擇結(jié)束對話框或程序自己調(diào)用ExitWindows函數(shù)
WM_QUIT = 18
用來結(jié)束程序運行或當程序調(diào)用postquitmessage函數(shù)
WM_QUERYOPEN = 19
當用戶窗口恢復以前的大小位置時,把此消息發(fā)送給某個圖標
WM_ERASEBKGND = 20
當窗口背景必須被擦除時(例在窗口改變大小時)
WM_SYSCOLORCHANGE =21
當系統(tǒng)顏色改變時,發(fā)送此消息給所有頂級窗口
WM_ENDSESSION = 22
當系統(tǒng)進程發(fā)出WM_QUERYENDSESSION消息后,此消息發(fā)送給應用程序,
通知它對話是否結(jié)束
WM_SYSTEMERROR = 23
WM_SHOWWINDOW = 24
當隱藏或顯示窗口是發(fā)送此消息給這個窗口
WM_ACTIVATEAPP = 28
發(fā)此消息給應用程序哪個窗口是激活的,哪個是非激活的;
WM_FONTCHANGE = 29
當系統(tǒng)的字體資源庫變化時發(fā)送此消息給所有頂級窗口
WM_TIMECHANGE = 30
當系統(tǒng)的時間變化時發(fā)送此消息給所有頂級窗口
WM_CANCELMODE = 31
發(fā)送此消息來取消某種正在進行的摸態(tài)(操作)
WM_SETCURSOR = 32
如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時,就發(fā)消息給某個窗口
WM_MOUSEACTIVATE =33
當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發(fā)送此消息給當前窗口
WM_CHILDACTIVATE =34
發(fā)送此消息給MDI子窗口當用戶點擊此窗口的標題欄,或當窗口被激活,移動,改變大小
WM_QUEUESYNC = 35
此消息由基于計算機的訓練程序發(fā)送,通過WH_JOURNALPALYBACK的hook程序
分離出用戶輸入消息
WM_GETMINMAXINFO =36
此消息發(fā)送給窗口當它將要改變大小或位置;
WM_PAINTICON = 38
發(fā)送給最小化窗口當它圖標將要被重畫
WM_ICONERASEBKGND =39
此消息發(fā)送給某個最小化窗口,僅當它在畫圖標前它的背景必須被重畫
WM_NEXTDLGCTL = 40
發(fā)送此消息給一個對話框程序去更改焦點位置
WM_SPOOLERSTATUS =42
每當打印管理列隊增加或減少一條作業(yè)時發(fā)出此消息
WM_DRAWITEM = 43
當button,combobox,listbox,menu的可視外觀改變時發(fā)送
此消息給這些空件的所有者
WM_MEASUREITEM = 44
當button, combo box, list box, list view control, or menu item 被創(chuàng)建時
發(fā)送此消息給控件的所有者
WM_DELETEITEM = 45
當the list box 或 combo box 被銷毀 或 當 某些項被刪除通過LB_DELETESTRING,LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息
WM_VKEYTOITEM = 46
此消息有一個LBS_WANTKEYBOARDINPUT風格的發(fā)出給它的所有者來響應WM_KEYDOWN消息
WM_CHARTOITEM = 47
此消息由一個LBS_WANTKEYBOARDINPUT風格的列表框發(fā)送給他的所有者來響應WM_CHAR消息
WM_SETFONT = 48
當繪制文本時程序發(fā)送此消息得到控件要用的顏色
WM_GETFONT = 49
應用程序發(fā)送此消息得到當前控件繪制文本的字體
WM_SETHOTKEY = 50
應用程序發(fā)送此消息讓一個窗口與一個熱鍵相關連
WM_GETHOTKEY = 51
應用程序發(fā)送此消息來判斷熱鍵與某個窗口是否有關聯(lián)
WM_QUERYDRAGICON =55
此消息發(fā)送給最小化窗口,當此窗口將要被拖放而它的類中沒有定義圖標,應用程序能
返回一個圖標或光標的句柄,當用戶拖放圖標時系統(tǒng)顯示這個圖標或光標
WM_COMPAREITEM = 57
發(fā)送此消息來判定combobox或listbox新增加的項的相對位置
WM_GETOBJECT = 61
WM_COMPACTING = 65
顯示內(nèi)存已經(jīng)很少了
WM_WINDOWPOSCHANGING= 70
發(fā)送此消息給那個窗口的大小和位置將要被改變時,來調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
WM_WINDOWPOSCHANGED= 71
發(fā)送此消息給那個窗口的大小和位置已經(jīng)被改變時,來調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
WM_POWER = 72(適用于16位的windows)
當系統(tǒng)將要進入暫停狀態(tài)時發(fā)送此消息
WM_COPYDATA = 74
當一個應用程序傳遞數(shù)據(jù)給另一個應用程序時發(fā)送此消息
WM_CANCELJOURNAL =75
當某個用戶取消程序日志激活狀態(tài),提交此消息給程序
WM_NOTIFY = 78
當某個控件的某個事件已經(jīng)發(fā)生或這個控件需要得到一些信息時,發(fā)送此消息給它的父窗口
WM_INPUTLANGCHANGEREQUEST= 80
當用戶選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE= 81
當平臺現(xiàn)場已經(jīng)被改變后發(fā)送此消息給受影響的最頂級窗口
WM_TCARD = 82
當程序已經(jīng)初始化windows幫助例程時發(fā)送此消息給應用程序
WM_HELP = 83
此消息顯示用戶按下了F1,如果某個菜單是激活的,就發(fā)送此消息個此窗口關聯(lián)的菜單,否則就
發(fā)送給有焦點的窗口,如果當前都沒有焦點,就把此消息發(fā)送給當前激活的窗口
WM_USERCHANGED = 84
當用戶已經(jīng)登入或退出后發(fā)送此消息給所有的窗口,當用戶登入或退出時系統(tǒng)更新用戶的具體
設置信息,在用戶更新設置時系統(tǒng)馬上發(fā)送此消息;
WM_NOTIFYFORMAT =85
公用控件,自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI還是UNICODE結(jié)構
在WM_NOTIFY消息,使用此控件能使某個控件與它的父控件之間進行相互通信
WM_CONTEXTMENU =123
當用戶某個窗口中點擊了一下右鍵就發(fā)送此消息給這個窗口
WM_STYLECHANGING =124
當調(diào)用SETWINDOWLONG函數(shù)將要改變一個或多個 窗口的風格時發(fā)送此消息給那個窗口
WM_STYLECHANGED =125
當調(diào)用SETWINDOWLONG函數(shù)一個或多個 窗口的風格后發(fā)送此消息給那個窗口
WM_DISPLAYCHANGE =126
當顯示器的分辨率改變后發(fā)送此消息給所有的窗口
WM_GETICON = 127
此消息發(fā)送給某個窗口來返回與某個窗口有關連的大圖標或小圖標的句柄;
WM_SETICON = 128
程序發(fā)送此消息讓一個新的大圖標或小圖標與某個窗口關聯(lián);
WM_NCCREATE = 129
當某個窗口第一次被創(chuàng)建時,此消息在WM_CREATE消息發(fā)送前發(fā)送;
WM_NCDESTROY = 130
此消息通知某個窗口,非客戶區(qū)正在銷毀
WM_NCCALCSIZE = 131
當某個窗口的客戶區(qū)域必須被核算時發(fā)送此消息
WM_NCHITTEST =132//移動鼠標,按住或釋放鼠標時發(fā)生
WM_NCPAINT = 133
程序發(fā)送此消息給某個窗口當它(窗口)的框架必須被繪制時;
WM_NCACTIVATE = 134
此消息發(fā)送給某個窗口僅當它的非客戶區(qū)需要被改變來顯示是激活還是非激活狀態(tài);
WM_GETDLGCODE = 135
發(fā)送此消息給某個與對話框程序關聯(lián)的控件,widdows控制方位鍵和TAB鍵使輸入進入此控件
通過響應WM_GETDLGCODE消息,應用程序可以把他當成一個特殊的輸入控件并能處理它
WM_NCMOUSEMOVE =160
當光標在一個窗口的非客戶區(qū)內(nèi)移動時發(fā)送此消息給這個窗口 //非客戶區(qū)為:窗體的標題欄及窗
的邊框體
WM_NCLBUTTONDOWN =161
當光標在一個窗口的非客戶區(qū)同時按下鼠標左鍵時提交此消息
WM_NCLBUTTONUP =162
當用戶釋放鼠標左鍵同時光標某個窗口在非客戶區(qū)十發(fā)送此消息;
WM_NCLBUTTONDBLCLK= 163
當用戶雙擊鼠標左鍵同時光標某個窗口在非客戶區(qū)十發(fā)送此消息
WM_NCRBUTTONDOWN =164
當用戶按下鼠標右鍵同時光標又在窗口的非客戶區(qū)時發(fā)送此消息
WM_NCRBUTTONUP =165
當用戶釋放鼠標右鍵同時光標又在窗口的非客戶區(qū)時發(fā)送此消息
WM_NCRBUTTONDBLCLK= 166
當用戶雙擊鼠標右鍵同時光標某個窗口在非客戶區(qū)十發(fā)送此消息
WM_NCMBUTTONDOWN =167
當用戶按下鼠標中鍵同時光標又在窗口的非客戶區(qū)時發(fā)送此消息
WM_NCMBUTTONUP =168
當用戶釋放鼠標中鍵同時光標又在窗口的非客戶區(qū)時發(fā)送此消息
WM_NCMBUTTONDBLCLK= 169
當用戶雙擊鼠標中鍵同時光標又在窗口的非客戶區(qū)時發(fā)送此消息
WM_KEYFIRST = 256
WM_KEYDOWN = 256
//按下一個鍵
WM_KEYUP = 257
//釋放一個鍵
WM_CHAR = 258
//按下某鍵,并已發(fā)出WM_KEYDOWN, WM_KEYUP消息
WM_DEADCHAR = 259
當用translatemessage函數(shù)翻譯WM_KEYUP消息時發(fā)送此消息給擁有焦點的窗口
WM_SYSKEYDOWN = 260
當用戶按住ALT鍵同時按下其它鍵時提交此消息給擁有焦點的窗口;
WM_SYSKEYUP = 261
當用戶釋放一個鍵同時ALT 鍵還按著時提交此消息給擁有焦點的窗口
WM_SYSCHAR = 262
當WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后提交此消息給擁有焦點的窗口
WM_SYSDEADCHAR =263
當WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后發(fā)送此消息給擁有焦點的窗口
WM_KEYLAST = 264
WM_INITDIALOG = 272
在一個對話框程序被顯示前發(fā)送此消息給它,通常用此消息初始化控件和執(zhí)行其它任務
WM_COMMAND = 273
當用戶選擇一條菜單命令項或當某個控件發(fā)送一條消息給它的父窗口,一個快捷鍵被翻譯
WM_SYSCOMMAND = 274
當用戶選擇窗口菜單的一條命令或當用戶選擇最大化或最小化時那個窗口會收到此消息
WM_TIMER = 275 //發(fā)生了定時器事件
WM_HSCROLL = 276
當一個窗口標準水平滾動條產(chǎn)生一個滾動事件時發(fā)送此消息給那個窗口,也發(fā)送給擁有它的控件
WM_VSCROLL = 277
當一個窗口標準垂直滾動條產(chǎn)生一個滾動事件時發(fā)送此消息給那個窗口也,發(fā)送給擁有它的控件 WM_INITMENU = 278
當一個菜單將要被激活時發(fā)送此消息,它發(fā)生在用戶菜單條中的某項或按下某個菜單鍵,它允許
程序在顯示前更改菜單
WM_INITMENUPOPUP =279
當一個下拉菜單或子菜單將要被激活時發(fā)送此消息,它允許程序在它顯示前更改菜單,而不要
改變?nèi)?/p>
WM_MENUSELECT = 287
當用戶選擇一條菜單項時發(fā)送此消息給菜單的所有者(一般是窗口)
WM_MENUCHAR = 288
當菜單已被激活用戶按下了某個鍵(不同于加速鍵),發(fā)送此消息給菜單的所有者;
WM_ENTERIDLE = 289
當一個模態(tài)對話框或菜單進入空載狀態(tài)時發(fā)送此消息給它的所有者,一個模態(tài)對話框或菜單進入空載狀態(tài)就是在處理完一條或幾條先前的消息后沒有消息它的列隊中等待
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繪制消息框前發(fā)送此消息給消息框的所有者窗口,通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置消息框的文本和背景顏色
WM_CTLCOLOREDIT =307
當一個編輯型控件將要被繪制時發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置編輯框的文本和背景顏色
WM_CTLCOLORLISTBOX= 308
當一個列表框控件將要被繪制前發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置列表框的文本和背景顏色
WM_CTLCOLORBTN =309
當一個按鈕控件將要被繪制時發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置按紐的文本和背景顏色
WM_CTLCOLORDLG =310
當一個對話框控件將要被繪制前發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置對話框的文本背景顏色
WM_CTLCOLORSCROLLBAR=311
當一個滾動條控件將要被繪制時發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置滾動條的背景顏色
WM_CTLCOLORSTATIC =312
當一個靜態(tài)控件將要被繪制時發(fā)送此消息給它的父窗口;通過響應這條消息,所有者窗口可以
通過使用給定的相關顯示設備的句柄來設置靜態(tài)控件的文本和背景顏色
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
當鼠標輪子轉(zhuǎn)動時發(fā)送此消息個當前有焦點的控件
WM_MOUSELAST = 522
WM_PARENTNOTIFY =528
當MDI子窗口被創(chuàng)建或被銷毀,或用戶按了一下鼠標鍵而光標在子窗口上時發(fā)送此消息給它的父窗口
WM_ENTERMENULOOP =529
發(fā)送此消息通知應用程序的主窗口that已經(jīng)進入了菜單循環(huán)模式
WM_EXITMENULOOP =530
發(fā)送此消息通知應用程序的主窗口that已退出了菜單循環(huán)模式
WM_NEXTMENU = 531
WM_SIZING = 532
當用戶正在調(diào)整窗口大小時發(fā)送此消息給窗口;通過此消息應用程序可以監(jiān)視窗口大小和位置
也可以修改他們
WM_CAPTURECHANGED =533
發(fā)送此消息給窗口當它失去捕獲的鼠標時;
WM_MOVING = 534
當用戶在移動窗口時發(fā)送此消息,通過此消息應用程序可以監(jiān)視窗口大小和位置
也可以修改他們;
WM_POWERBROADCAST =536
此消息發(fā)送給應用程序來通知它有關電源管理事件;
WM_DEVICECHANGE =537
當設備的硬件配置改變時發(fā)送此消息給應用程序或設備驅(qū)動程序
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
應用程序發(fā)送此消息給多文檔的客戶窗口來創(chuàng)建一個MDI 子窗口
WM_MDIDESTROY = 545
應用程序發(fā)送此消息給多文檔的客戶窗口來關閉一個MDI 子窗口
WM_MDIACTIVATE =546
應用程序發(fā)送此消息給多文檔的客戶窗口通知客戶窗口激活另一個MDI子窗口,當客戶窗口收到
此消息后,它發(fā)出WM_MDIACTIVE消息給MDI子窗口(未激活)激活它;
WM_MDIRESTORE = 547
程序發(fā)送此消息給MDI客戶窗口讓子窗口從最大最小化恢復到原來大小
WM_MDINEXT = 548
程序發(fā)送此消息給MDI客戶窗口激活下一個或前一個窗口
WM_MDIMAXIMIZE =549
程序發(fā)送此消息給MDI客戶窗口來最大化一個MDI子窗口;
WM_MDITILE = 550
程序發(fā)送此消息給MDI客戶窗口以平鋪方式重新排列所有MDI子窗口
WM_MDICASCADE = 551
程序發(fā)送此消息給MDI客戶窗口以層疊方式重新排列所有MDI子窗口
WM_MDIICONARRANGE =552
程序發(fā)送此消息給MDI客戶窗口重新排列所有最小化的MDI子窗口
WM_MDIGETACTIVE =553
程序發(fā)送此消息給MDI客戶窗口來找到激活的子窗口的句柄
WM_MDISETMENU = 560
程序發(fā)送此消息給MDI客戶窗口用MDI菜單代替子窗口的菜單
WM_ENTERSIZEMOVE =561
WM_EXITSIZEMOVE =562
WM_DROPFILES = 563
WM_MDIREFRESHMENU =564
WM_MOUSEHOVER = 673
WM_MOUSELEAVE = 675
WM_CUT = 768
程序發(fā)送此消息給一個編輯框或combobox來刪除當前選擇的文本
WM_COPY = 769
程序發(fā)送此消息給一個編輯框或combobox來復制當前選擇的文本到剪貼板
WM_PASTE = 770
程序發(fā)送此消息給editcontrol或combobox從剪貼板中得到數(shù)據(jù)
WM_CLEAR = 771
程序發(fā)送此消息給editcontrol或combobox清除當前選擇的內(nèi)容;
WM_UNDO = 772
程序發(fā)送此消息給editcontrol或combobox撤消最后一次操作
WM_RENDERFORMAT =773
WM_DESTROYCLIPBOARD= 775
當調(diào)用ENPTYCLIPBOARD函數(shù)時 發(fā)送此消息給剪貼板的所有者
WM_DRAWCLIPBOARD =776
當剪貼板的內(nèi)容變化時發(fā)送此消息給剪貼板觀察鏈的第一個窗口;它允許用剪貼板觀察窗口來
顯示剪貼板的新內(nèi)容;
WM_PAINTCLIPBOARD =777
當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)需要重畫;
WM_VSCROLLCLIPBOARD= 778
WM_SIZECLIPBOARD =779
當剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)域的大小已經(jīng)改變是此消息通過剪貼板觀察窗口發(fā)送給剪貼板的所有者;
WM_ASKCBFORMATNAME= 780
通過剪貼板觀察窗口發(fā)送此消息給剪貼板的所有者來請求一個CF_OWNERDISPLAY格式的剪貼板的名字
WM_CHANGECBCHAIN =781
當一個窗口從剪貼板觀察鏈中移去時發(fā)送此消息給剪貼板觀察鏈的第一個窗口;
WM_HSCROLLCLIPBOARD= 782
此消息通過一個剪貼板觀察窗口發(fā)送給剪貼板的所有者;它發(fā)生在當剪貼板包含CFOWNERDISPALY格式的數(shù)據(jù)并且有個事件在剪貼板觀察窗的水平滾動條上;所有者應滾動剪貼板圖象并更新滾動條的值;
WM_QUERYNEWPALETTE= 783
此消息發(fā)送給將要收到焦點的窗口,此消息能使窗口在收到焦點時同時有機會實現(xiàn)他的邏輯調(diào)色板
WM_PALETTEISCHANGING=784
當一個應用程序正要實現(xiàn)它的邏輯調(diào)色板時發(fā)此消息通知所有的應用程序
WM_PALETTECHANGED =785
此消息在一個擁有焦點的窗口實現(xiàn)它的邏輯調(diào)色板后發(fā)送此消息給所有頂級并重疊的窗口,以此
來改變系統(tǒng)調(diào)色板
WM_HOTKEY = 786
當用戶按下由REGISTERHOTKEY函數(shù)注冊的熱鍵時提交此消息
WM_PRINT = 791
應用程序發(fā)送此消息僅當WINDOWS或其它應用程序發(fā)出一個請求要求繪制一個應用程序的一部分;
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服務程序來請求服務器每當數(shù)據(jù)項改變時更新它
WM_DDE_UNADVISE =WM_DDE_FIRST + 3
一個DDE客戶程序通過此消息通知一個DDE服務程序不更新指定的項或一個特殊的剪貼板格式的項
WM_DDE_ACK = WM_DDE_FIRST+ 4
此消息通知一個DDE(動態(tài)數(shù)據(jù)交換)程序已收到并正在處理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客戶程序來傳遞個一數(shù)據(jù)項給客戶或通知客戶的一條可用數(shù)據(jù)項
WM_DDE_REQUEST =WM_DDE_FIRST + 6
一個DDE客戶程序提交此消息給一個DDE服務程序來請求一個數(shù)據(jù)項的值;
WM_DDE_POKE =WM_DDE_FIRST + 7
一個DDE客戶程序提交此消息給一個DDE服務程序,客戶使用此消息來請求服務器接收一個未經(jīng)同意的數(shù)據(jù)項;服務器通過答復WM_DDE_ACK消息提示是否它接收這個數(shù)據(jù)項;
WM_DDE_EXECUTE =WM_DDE_FIRST + 8
一個DDE客戶程序提交此消息給一個DDE服務程序來發(fā)送一個字符串給服務器讓它象串行命令一樣被處理,服務器通過提交WM_DDE_ACK消息來作回應;
WM_DDE_LAST =WM_DDE_FIRST + 8
WM_APP = 32768
WM_USER = 1024
此消息能幫助應用程序自定義私有消息;
/
通知消息(Notification message)是指這樣一種消息,一個窗口內(nèi)的子控件發(fā)生了一些事情,需要通
知父窗口。通知消息只適用于標準的窗口控件如按鈕、列表框、組合框、編輯框,以及Windows 95公
共控件如樹狀視圖、列表視圖等。例如,單擊或雙擊一個控件、在控件中選擇部分文本、操作控件的
滾動條都會產(chǎn)生通知消息。
按扭
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編輯框內(nèi)的文本即將更新
C B N _ E R R S PAC E組合框內(nèi)存不足
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編輯框內(nèi)存不足
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插入的內(nèi)容被截斷
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列表框內(nèi)存不夠
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. 移動控件
控件.發(fā)送信息 (274,61458, 0) 其中參數(shù)1的值自61457---61471都可用,結(jié)果是一樣的,都是移動控件。還有一個大家都熟,就是控件.發(fā)送信息 (161, 2, 0)
2.調(diào)整控件尺寸
控件.發(fā)送信息 (274,61441, 0) (274,61442,0) (274,61443,0) (274,61444,0) (274,61445,0) (274,61446,0)(274,61447,0) (274,61448,0)
分別對應調(diào)整控件的左寬度右寬度 頂高度 西北角 東北角 底寬度 西南角 東北角的尺寸。
此外,控件.發(fā)送信息(161,10,0) (161,11,0) (161,12,0) (161,13,0) (161,14,0) (161,15,0) (161,16,0) (161,16,0)
也是分別對應調(diào)整控件的左寬度右寬度 頂高度 西北角 東北角 底寬度 西南角 東北角的尺寸。
3。控件最大化
控件.發(fā)送信息 (274,61450, 0)其中參數(shù)1的值自61488---61503都可用,結(jié)果是一樣的。
4。控件最小化
控件.發(fā)送信息 (274,61473, 0)其中參數(shù)1的值自61472---61487都可用,結(jié)果是一樣的。
5。馬上啟動屏幕保護(如果電腦里沒設置屏幕保護本信息不起作用)
發(fā)送信息 (274, 61760, 0)其中參數(shù)1的值自61760---61776都可用,結(jié)果是一樣的。
6.出對話框--15秒進入待機(win98下可用,winXP無效,其他未試)
控件.發(fā)送信息 (274,61840, 0)其中參數(shù)1的值自61840---61854都可用,結(jié)果是一樣的。
7。擊控件后鼠標帶問號,再擊后消失。
控件.發(fā)送信息 (274,61836, 0)
8。關閉窗口
控件.發(fā)送信息 (16, 0,0)
9。發(fā)送控件鼠標左鍵被按下的信息
控件.發(fā)送信息 (513, 0,0)
10。送控件鼠標左鍵被放開的信息
控件.發(fā)送信息 (514, 0,0)
11。清除窗口的標題
控件.發(fā)送信息 (12, 0,0)
以下是易記事本里的:
12。復制
編輯框.發(fā)送信息 (769, 0,0)
13。粘帖
編輯框.發(fā)送信息 (770, 0,0)
14。全選
編輯框.發(fā)送信息 (177, 0,-1)
總結(jié)
以上是生活随笔為你收集整理的Windows 消息ID及定义大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI:初学者如何从零学习人工智能?看完你
- 下一篇: Windows消息机制疑问探究