表A-1 Windows消息分佈框架
消息範圍函數 |
說 明字體 |
0 ~ WM_USER – 1ui |
系統消息spa |
WM_USER ~ 0x7FFF日誌 |
自定義窗口類整數消息進程 |
WM_APP ~ 0xBFFF事件 |
應用程序自定義消息內存 |
0xC000 ~ 0xFFFFci |
應用程序字符串消息 |
> 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 |
繪製滾動條控件前發送此消息給它的父窗口,可用來設置滾動條控件的文本和背景顏色 |