表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,0) (274,61443,0) (274,61444,0) (274,61445,0) (274,61446,0)(274,61447,0) (274,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,0)
9。發送控件鼠標左鍵被按下的信息
控件.發送信息 (513, 0,0)
10。發送控件鼠標左鍵被放開的信息
控件.發送信息 (514, 0,0)
11。清除窗口的標題
控件.發送信息 (12, 0,0)
以下是易記事本里的:
12。復制
編輯框.發送信息 (769, 0,0)
13。粘帖
編輯框.發送信息 (770, 0,0)
14。全選
編輯框.發送信息 (177, 0,-1)