Window 訊息大全使用詳解
訊息,就是指Windows發出的一個通知,告訴應用程式某個事情發生了。[@more@]例如,單擊滑鼠、改變視窗尺寸、按下鍵盤上的一個鍵都會使Windows傳送一個訊息給應用程式。訊息本身是作為一個記錄傳遞給應用程式的,這個記錄中包含了訊息的型別以及其他資訊。例如,對於單擊滑鼠所產生的訊息來說,這個記錄中包含了單擊滑鼠時的座標。這個記錄型別叫做TMsg,
它在Windows單元中是這樣宣告的:
type
TMsg = packed record
hwnd: HWND; / /視窗控制程式碼
message: UINT; / /訊息常量識別符號
wParam: WPARAM ; // 32位訊息的特定附加資訊
lParam: LPARAM ; // 32位訊息的特定附加資訊
time: DWORD; / /訊息建立時的時間
pt: TPoint; / /訊息建立時的滑鼠位置
end;
訊息中有什麼?
是否覺得一個訊息記錄中的資訊像希臘語一樣?如果是這樣,那麼看一看下面的解釋:
hwnd 32位的視窗控制程式碼。視窗可以是任何型別的螢幕物件,因為Win32能夠維護大多數可視物件的控制程式碼(視窗、對話方塊、按鈕、編輯框等)。
message 用於區別其他訊息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自定義的常量。
wParam 通常是一個與訊息有關的常量值,也可能是視窗或控制元件的控制程式碼。
lParam 通常是一個指向記憶體中資料的指標。由於W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
因此,它們之間可以相互轉換。
WM_NULL = $0000;
WM_CREATE = $0001;
應用程式建立一個視窗
WM_DESTROY = $0002;
一個視窗被銷燬
WM_MOVE = $0003;
移動一個視窗
WM_SIZE = $0005;
改變一個視窗的大小
WM_ACTIVATE = $0006;
一個視窗被啟用或失去啟用狀態;
WM_SETFOCUS = $0007;
獲得焦點後
WM_KILLFOCUS = $0008;
失去焦點
WM_ENABLE = $000A;
改變enable狀態
WM_SETREDRAW = $000B;
設定視窗是否能重畫
WM_SETTEXT = $000C;
應用程式傳送此訊息來設定一個視窗的文字
WM_GETTEXT = $000D;
應用程式傳送此訊息來複制對應視窗的文字到緩衝區
WM_GETTEXTLENGTH = $000E;
得到與一個視窗有關的文字的長度(不包含空字元)
WM_PAINT = $000F;
要求一個視窗重畫自己
WM_CLOSE = $0010;
當一個視窗或應用程式要關閉時傳送一個訊號
WM_QUERYENDSESSION = $0011;
當使用者選擇結束對話方塊或程式自己呼叫ExitWindows函式
WM_QUIT = $0012;
用來結束程式執行或當程式呼叫postquitmessage函式
WM_QUERYOPEN = $0013;
當使用者視窗恢復以前的大小位置時,把此訊息傳送給某個圖示
WM_ERASEBKGND = $0014;
當視窗背景必須被擦除時(例在視窗改變大小時)
WM_SYSCOLORCHANGE = $0015;
當系統顏色改變時,傳送此訊息給所有頂級視窗
WM_ENDSESSION = $0016;
當系統程式發出WM_QUERYENDSESSION訊息後,此訊息傳送給應用程式,
通知它對話是否結束
WM_SYSTEMERROR = $0017;
WM_SHOWWINDOW = $0018;
當隱藏或顯示視窗是傳送此訊息給這個視窗
WM_ACTIVATEAPP = $001C;
發此訊息給應用程式哪個視窗是啟用的,哪個是非啟用的;
WM_FONTCHANGE = $001D;
當系統的字型資源庫變化時傳送此訊息給所有頂級視窗
WM_TIMECHANGE = $001E;
當系統的時間變化時傳送此訊息給所有頂級視窗
WM_CANCELMODE = $001F;
傳送此訊息來取消某種正在進行的摸態(操作)
WM_SETCURSOR = $0020;
如果滑鼠引起游標在某個視窗中移動且滑鼠輸入沒有被捕獲時,就發訊息給某個視窗
WM_MOUSEACTIVATE = $0021;
當游標在某個非啟用的視窗中而使用者正按著滑鼠的某個鍵傳送此訊息給當前視窗
WM_CHILDACTIVATE = $0022;
傳送此訊息給MDI子視窗當使用者點選此視窗的標題欄,或當視窗被啟用,移動,改變大小
WM_QUEUESYNC = $0023;
此訊息由基於計算機的訓練程式傳送,透過WH_JOURNALPALYBACK的hook程式
分離出使用者輸入訊息
WM_GETMINMAXINFO = $0024;
此訊息傳送給視窗當它將要改變大小或位置;
WM_PAINTICON = $0026;
傳送給最小化視窗當它圖示將要被重畫
WM_ICONERASEBKGND = $0027;
此訊息傳送給某個最小化視窗,僅當它在畫圖示前它的背景必須被重畫
WM_NEXTDLGCTL = $0028;
傳送此訊息給一個對話方塊程式去更改焦點位置
WM_SPOOLERSTATUS = $002A;
每當列印管理列隊增加或減少一條作業時發出此訊息
WM_DRAWITEM = $002B;
當button,combobox,listbox,menu的可視外觀改變時傳送
此訊息給這些空件的所有者
WM_MEASUREITEM = $002C;
當button, combo box, list box, list view control, or menu item 被建立時
傳送此訊息給控制元件的所有者
WM_DELETEITEM = $002D;
當the list box 或 combo box 被銷燬 或 當 某些項被刪除透過LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 訊息
WM_VKEYTOITEM = $002E;
此訊息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN訊息
WM_CHARTOITEM = $002F;
此訊息由一個LBS_WANTKEYBOARDINPUT風格的列表框傳送給他的所有者來響應WM_CHAR訊息
WM_SETFONT = $0030;
當繪製文字時程式傳送此訊息得到控制元件要用的顏色
WM_GETFONT = $0031;
應用程式傳送此訊息得到當前控制元件繪製文字的字型
WM_SETHOTKEY = $0032;
應用程式傳送此訊息讓一個視窗與一個熱鍵相關連
WM_GETHOTKEY = $0033;
應用程式傳送此訊息來判斷熱鍵與某個視窗是否有關聯
WM_QUERYDRAGICON = $0037;
此訊息傳送給最小化視窗,當此視窗將要被拖放而它的類中沒有定義圖示,應用程式能返回一個圖示或游標的控制程式碼,當使用者拖放圖示時系統顯示這個圖示或游標
WM_COMPAREITEM = $0039;
傳送此訊息來判定combobox或listbox新增加的項的相對位置
WM_GETOBJECT = $003D;
WM_COMPACTING = $0041;
顯示記憶體已經很少了
WM_WINDOWPOSCHANGING = $0046;
傳送此訊息給那個視窗的大小和位置將要被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_WINDOWPOSCHANGED = $0047;
傳送此訊息給那個視窗的大小和位置已經被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_POWER = $0048;(適用於16位的windows)
當系統將要進入暫停狀態時傳送此訊息
WM_COPYDATA = $004A;
當一個應用程式傳遞資料給另一個應用程式時傳送此訊息
WM_CANCELJOURNAL = $004B;
當某個使用者取消程式日誌啟用狀態,提交此訊息給程式
WM_NOTIFY = $004E;
當某個控制元件的某個事件已經發生或這個控制元件需要得到一些資訊時,傳送此訊息給它的父視窗
WM_INPUTLANGCHANGEREQUEST = $0050;
當使用者選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE = $0051;
當平臺現場已經被改變後傳送此訊息給受影響的最頂級視窗
WM_TCARD = $0052;
當程式已經初始化windows幫助例程時傳送此訊息給應用程式
WM_HELP = $0053;
此訊息顯示使用者按下了F1,如果某個選單是啟用的,就傳送此訊息個此視窗關聯的選單,否則就
傳送給有焦點的視窗,如果當前都沒有焦點,就把此訊息傳送給當前啟用的視窗
WM_USERCHANGED = $0054;
當使用者已經登入或退出後傳送此訊息給所有的視窗,當使用者登入或退出時系統更新使用者的具體
設定資訊,在使用者更新設定時系統馬上傳送此訊息;
WM_NOTIFYFORMAT = $0055;
公用控制元件,自定義控制元件和他們的父視窗透過此訊息來判斷控制元件是使用ANSI還是UNICODE結構
在WM_NOTIFY訊息,使用此控制元件能使某個控制元件與它的父控制元件之間進行相互通訊
WM_CONTEXTMENU = $007B;
當使用者某個視窗中點選了一下右鍵就傳送此訊息給這個視窗
WM_STYLECHANGING = $007C;
當呼叫SETWINDOWLONG函式將要改變一個或多個 視窗的風格時傳送此訊息給那個視窗
WM_STYLECHANGED = $007D;
當呼叫SETWINDOWLONG函式一個或多個 視窗的風格後傳送此訊息給那個視窗
WM_DISPLAYCHANGE = $007E;
當顯示器的解析度改變後傳送此訊息給所有的視窗
WM_GETICON = $007F;
此訊息傳送給某個視窗來返回與某個視窗有關連的大圖示或小圖示的控制程式碼;
WM_SETICON = $0080;
程式傳送此訊息讓一個新的大圖示或小圖示與某個視窗關聯;
WM_NCCREATE = $0081;
當某個視窗第一次被建立時,此訊息在WM_CREATE訊息傳送前傳送;
WM_NCDESTROY = $0082;
此訊息通知某個視窗,非客戶區正在銷燬
WM_NCCALCSIZE = $0083;
當某個視窗的客戶區域必須被核算時傳送此訊息
WM_NCHITTEST = $0084;//移動滑鼠,按住或釋放滑鼠時發生
WM_NCPAINT = $0085;
程式傳送此訊息給某個視窗當它(視窗)的框架必須被繪製時;
WM_NCACTIVATE = $0086;
此訊息傳送給某個視窗 僅當它的非客戶區需要被改變來顯示是啟用還是非啟用狀態;
WM_GETDLGCODE = $0087;
傳送此訊息給某個與對話方塊程式關聯的控制元件,widdows控制方位鍵和TAB鍵使輸入進入此控制元件
透過響應WM_GETDLGCODE訊息,應用程式可以把他當成一個特殊的輸入控制元件並能處理它
WM_NCMOUSEMOVE = $00A0;
當游標在一個視窗的非客戶區內移動時傳送此訊息給這個視窗 //非客戶區為:窗體的標題欄及窗
的邊框體
WM_NCLBUTTONDOWN = $00A1;
當游標在一個視窗的非客戶區同時按下滑鼠左鍵時提交此訊息
WM_NCLBUTTONUP = $00A2;
當使用者釋放滑鼠左鍵同時游標某個視窗在非客戶區十傳送此訊息;
WM_NCLBUTTONDBLCLK = $00A3;
當使用者雙擊滑鼠左鍵同時游標某個視窗在非客戶區十傳送此訊息
WM_NCRBUTTONDOWN = $00A4;
當使用者按下滑鼠右鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCRBUTTONUP = $00A5;
當使用者釋放滑鼠右鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCRBUTTONDBLCLK = $00A6;
當使用者雙擊滑鼠右鍵同時游標某個視窗在非客戶區十傳送此訊息
WM_NCMBUTTONDOWN = $00A7;
當使用者按下滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCMBUTTONUP = $00A8;
當使用者釋放滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCMBUTTONDBLCLK = $00A9;
當使用者雙擊滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_KEYFIRST = $0100;
WM_KEYDOWN = $0100;
//按下一個鍵
WM_KEYUP = $0101;
//釋放一個鍵
WM_CHAR = $0102;
//按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP訊息
WM_DEADCHAR = $0103;
當用translatemessage函式翻譯WM_KEYUP訊息時傳送此訊息給擁有焦點的視窗
WM_SYSKEYDOWN = $0104;
當使用者按住ALT鍵同時按下其它鍵時提交此訊息給擁有焦點的視窗;
WM_SYSKEYUP = $0105;
當使用者釋放一個鍵同時ALT 鍵還按著時提交此訊息給擁有焦點的視窗
WM_SYSCHAR = $0106;
當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後提交此訊息給擁有焦點的視窗
WM_SYSDEADCHAR = $0107;
當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後傳送此訊息給擁有焦點的視窗
WM_KEYLAST = $0108;
WM_INITDIALOG = $0110;
在一個對話方塊程式被顯示前傳送此訊息給它,通常用此訊息初始化控制元件和執行其它任務
WM_COMMAND = $0111;
當使用者選擇一條選單命令項或當某個控制元件傳送一條訊息給它的父視窗,一個快捷鍵被翻譯
WM_SYSCOMMAND = $0112;
當使用者選擇視窗選單的一條命令或當使用者選擇最大化或最小化時那個視窗會收到此訊息
WM_TIMER = $0113; //發生了定時器事件
WM_HSCROLL = $0114;
當一個視窗標準水平捲軸產生一個滾動事件時傳送此訊息給那個視窗,也傳送給擁有它的控制元件
WM_VSCROLL = $0115;
當一個視窗標準垂直捲軸產生一個滾動事件時傳送此訊息給那個視窗也,傳送給擁有它的控制元件 WM_INITMENU = $0116;
當一個選單將要被啟用時傳送此訊息,它發生在使用者選單條中的某項或按下某個選單鍵,它允許程式在顯示前更改選單
WM_INITMENUPOPUP = $0117;
當一個下拉選單或子選單將要被啟用時傳送此訊息,它允許程式在它顯示前更改選單,而不要改變全部
WM_MENUSELECT = $011F;
當使用者選擇一條選單項時傳送此訊息給選單的所有者(一般是視窗)
WM_MENUCHAR = $0120;
當選單已被啟用使用者按下了某個鍵(不同於加速鍵),傳送此訊息給選單的所有者;
WM_ENTERIDLE = $0121;
當一個模態對話方塊或選單進入空載狀態時傳送此訊息給它的所有者,一個模態對話方塊或選單進入空載狀態就是在處理完一條或幾條先前的訊息後沒有訊息它的列隊中等待
WM_MENURBUTTONUP = $0122;
WM_MENUDRAG = $0123;
WM_MENUGETOBJECT = $0124;
WM_UNINITMENUPOPUP = $0125;
WM_MENUCOMMAND = $0126;
WM_CHANGEUISTATE = $0127;
WM_UPDATEUISTATE = $0128;
WM_QUERYUISTATE = $0129;
WM_CTLCOLORMSGBOX = $0132;
在windows繪製訊息框前傳送此訊息給訊息框的所有者視窗,透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定訊息框的文字和背景顏色
WM_CTLCOLOREDIT = $0133;
當一個編輯型控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定編輯框的文字和背景顏色
WM_CTLCOLORLISTBOX = $0134;
當一個列表框控制元件將要被繪製前傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定列表框的文字和背景顏色
WM_CTLCOLORBTN = $0135;
當一個按鈕控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定按紐的文字和背景顏色
WM_CTLCOLORDLG = $0136;
當一個對話方塊控制元件將要被繪製前傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定對話方塊的文字背景顏色
WM_CTLCOLORSCROLLBAR= $0137;
當一個捲軸控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定捲軸的背景顏色
WM_CTLCOLORSTATIC = $0138;
當一個靜態控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定靜態控制元件的文字和背景顏色
WM_MOUSEFIRST = $0200;
WM_MOUSEMOVE = $0200;
// 移動滑鼠
WM_LBUTTONDOWN = $0201;
//按下滑鼠左鍵
WM_LBUTTONUP = $0202;
//釋放滑鼠左鍵
WM_LBUTTONDBLCLK = $0203;
//雙擊滑鼠左鍵
WM_RBUTTONDOWN = $0204;
//按下滑鼠右鍵
WM_RBUTTONUP = $0205;
//釋放滑鼠右鍵
WM_RBUTTONDBLCLK = $0206;
//雙擊滑鼠右鍵
WM_MBUTTONDOWN = $0207;
//按下滑鼠中鍵
WM_MBUTTONUP = $0208;
//釋放滑鼠中鍵
WM_MBUTTONDBLCLK = $0209;
//雙擊滑鼠中鍵
WM_MOUSEWHEEL = $020A;
當滑鼠輪子轉動時傳送此訊息個當前有焦點的控制元件
WM_MOUSELAST = $020A;
WM_PARENTNOTIFY = $0210;
當MDI子視窗被建立或被銷燬,或使用者按了一下滑鼠鍵而游標在子視窗上時傳送此訊息給它的父視窗
WM_ENTERMENULOOP = $0211;
傳送此訊息通知應用程式的主視窗that已經進入了選單迴圈模式
WM_EXITMENULOOP = $0212;
傳送此訊息通知應用程式的主視窗that已退出了選單迴圈模式
WM_NEXTMENU = $0213;
WM_SIZING = 532;
當使用者正在調整視窗大小時傳送此訊息給視窗;透過此訊息應用程式可以監視視窗大小和位置也可以修改他們
WM_CAPTURECHANGED = 533;
傳送此訊息 給視窗當它失去捕獲的滑鼠時;
WM_MOVING = 534;
當使用者在移動視窗時傳送此訊息,透過此訊息應用程式可以監視視窗大小和位置也可以修改他們;
WM_POWERBROADCAST = 536;
此訊息傳送給應用程式來通知它有關電源管理事件;
WM_DEVICECHANGE = 537;
當裝置的硬體配置改變時傳送此訊息給應用程式或裝置驅動程式
WM_IME_STARTCOMPOSITION = $010D;
WM_IME_ENDCOMPOSITION = $010E;
WM_IME_COMPOSITION = $010F;
WM_IME_KEYLAST = $010F;
WM_IME_SETCONTEXT = $0281;
WM_IME_NOTIFY = $0282;
WM_IME_CONTROL = $0283;
WM_IME_COMPOSITIONFULL = $0284;
WM_IME_SELECT = $0285;
WM_IME_CHAR = $0286;
WM_IME_REQUEST = $0288;
WM_IME_KEYDOWN = $0290;
WM_IME_KEYUP = $0291;
WM_MDICREATE = $0220;
應用程式傳送此訊息給多文件的客戶視窗來建立一個MDI 子視窗
WM_MDIDESTROY = $0221;
應用程式傳送此訊息給多文件的客戶視窗來關閉一個MDI 子視窗
WM_MDIACTIVATE = $0222;
應用程式傳送此訊息給多文件的客戶視窗通知客戶視窗啟用另一個MDI子視窗,當客戶視窗收到此訊息後,它發出WM_MDIACTIVE訊息給MDI子視窗(未啟用)啟用它;
WM_MDIRESTORE = $0223;
程式 傳送此訊息給MDI客戶視窗讓子視窗從最大最小化恢復到原來大小
WM_MDINEXT = $0224;
程式 傳送此訊息給MDI客戶視窗啟用下一個或前一個視窗
WM_MDIMAXIMIZE = $0225;
程式傳送此訊息給MDI客戶視窗來最大化一個MDI子視窗;
WM_MDITILE = $0226;
程式 傳送此訊息給MDI客戶視窗以平鋪方式重新排列所有MDI子視窗
WM_MDICASCADE = $0227;
程式 傳送此訊息給MDI客戶視窗以層疊方式重新排列所有MDI子視窗
WM_MDIICONARRANGE = $0228;
程式 傳送此訊息給MDI客戶視窗重新排列所有最小化的MDI子視窗
WM_MDIGETACTIVE = $0229;
程式 傳送此訊息給MDI客戶視窗來找到啟用的子視窗的控制程式碼
WM_MDISETMENU = $0230;
程式 傳送此訊息給MDI客戶視窗用MDI選單代替子視窗的選單
WM_ENTERSIZEMOVE = $0231;
WM_EXITSIZEMOVE = $0232;
WM_DROPFILES = $0233;
WM_MDIREFRESHMENU = $0234;
WM_MOUSEHOVER = $02A1;
WM_MOUSELEAVE = $02A3;
WM_CUT = $0300;
程式傳送此訊息給一個編輯框或combobox來刪除當前選擇的文字
WM_COPY = $0301;
程式傳送此訊息給一個編輯框或combobox來複制當前選擇的文字到剪貼簿
WM_PASTE = $0302;
程式傳送此訊息給editcontrol或combobox從剪貼簿中得到資料
WM_CLEAR = $0303;
程式傳送此訊息給editcontrol或combobox清除當前選擇的內容;
WM_UNDO = $0304;
程式傳送此訊息給editcontrol或combobox撤消最後一次操作
WM_RENDERFORMAT = $0305;
WM_RENDERALLFORMATS = $0306;
WM_DESTROYCLIPBOARD = $0307;
當呼叫ENPTYCLIPBOARD函式時 傳送此訊息給剪貼簿的所有者
WM_DRAWCLIPBOARD = $0308;
當剪貼簿的內容變化時傳送此訊息給剪貼簿觀察鏈的第一個視窗;它允許用剪貼簿觀察視窗來
顯示剪貼簿的新內容;
WM_PAINTCLIPBOARD = $0309;
當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區需要重畫;
WM_VSCROLLCLIPBOARD = $030A;
WM_SIZECLIPBOARD = $030B;
當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區域的大小已經改變是此訊息透過剪貼簿觀察視窗傳送給剪貼簿的所有者;
WM_ASKCBFORMATNAME = $030C;
透過剪貼簿觀察視窗傳送此訊息給剪貼簿的所有者來請求一個CF_OWNERDISPLAY格式的剪貼簿的名字
WM_CHANGECBCHAIN = $030D;
當一個視窗從剪貼簿觀察鏈中移去時傳送此訊息給剪貼簿觀察鏈的第一個視窗;
WM_HSCROLLCLIPBOARD = $030E;
此訊息透過一個剪貼簿觀察視窗傳送給剪貼簿的所有者 ;它發生在當剪貼簿包含CFOWNERDISPALY格式的資料並且有個事件在剪貼簿觀察窗的水平捲軸上;所有者應滾動剪貼簿圖象並更新捲軸的值;
WM_QUERYNEWPALETTE = $030F;
此訊息傳送給將要收到焦點的視窗,此訊息能使視窗在收到焦點時同時有機會實現他的邏輯調色盤
WM_PALETTEISCHANGING= $0310;
當一個應用程式正要實現它的邏輯調色盤時發此訊息通知所有的應用程式
WM_PALETTECHANGED = $0311;
此訊息在一個擁有焦點的視窗實現它的邏輯調色盤後傳送此訊息給所有頂級並重疊的視窗,以此來改變系統調色盤
WM_HOTKEY = $0312;
當使用者按下由REGISTERHOTKEY函式註冊的熱鍵時提交此訊息
WM_PRINT = 791;
應用程式傳送此訊息僅當WINDOWS或其它應用程式發出一個請求要求繪製一個應用程式的一部分;
WM_PRINTCLIENT = 792;
WM_HANDHELDFIRST = 856;
WM_HANDHELDLAST = 863;
WM_PENWINFIRST = $0380;
WM_PENWINLAST = $038F;
WM_COALESCE_FIRST = $0390;
WM_COALESCE_LAST = $039F;
WM_DDE_FIRST = $03E0;
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 = $8000;
WM_USER = $0400;
此訊息能幫助應用程式自定義私有訊息;
/////////////////////////////////////////////////////////////////////
通知訊息(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 C L 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 T E加亮應當去掉
組合框
C B N _ C L O S E U P組合框的列表框被關閉
C B N _ D B L C L K使用者雙擊了一個字串
C B N _ D R O P D O W N組合框的列表框被拉出
C B N _ E D I T C H A N G E使用者修改了編輯框中的文字
C B N _ E D I T U P D AT E編輯框內的文字即將更新
C B N _ E R R S PA C E組合框記憶體不足
C B N _ K I L L F O C U S組合框失去輸入焦點
C B N _ S E L C H A N G E在組合框中選擇了一項
C B N _ S E L E N D C A N C E L使用者的選擇應當被取消
C B N _ S E L E N D O K使用者的選擇是合法的
C B N _ S E T F O C U S組合框獲得輸入焦點
編輯框
E N _ C H A N G E編輯框中的文字己更新
E N _ E R R S PA C E編輯框記憶體不足
E N _ H S C R O L L使用者點選了水平捲軸
E N _ K I L L F O C U S編輯框正在失去輸入焦點
E N _ M A X T E X T插入的內容被截斷
E N _ S E T F O C U S編輯框獲得輸入焦點
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 PA C E列表框記憶體不夠
L B N _ K I L L F O C U S列表框正在失去輸入焦點
L B N _ S E L C A N C E L選擇被取消
L B N _ S E L C H A N G E選擇了另一項
L B N _ S E T F O C U S列表框獲得輸入焦點
它在Windows單元中是這樣宣告的:
type
TMsg = packed record
hwnd: HWND; / /視窗控制程式碼
message: UINT; / /訊息常量識別符號
wParam: WPARAM ; // 32位訊息的特定附加資訊
lParam: LPARAM ; // 32位訊息的特定附加資訊
time: DWORD; / /訊息建立時的時間
pt: TPoint; / /訊息建立時的滑鼠位置
end;
訊息中有什麼?
是否覺得一個訊息記錄中的資訊像希臘語一樣?如果是這樣,那麼看一看下面的解釋:
hwnd 32位的視窗控制程式碼。視窗可以是任何型別的螢幕物件,因為Win32能夠維護大多數可視物件的控制程式碼(視窗、對話方塊、按鈕、編輯框等)。
message 用於區別其他訊息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自定義的常量。
wParam 通常是一個與訊息有關的常量值,也可能是視窗或控制元件的控制程式碼。
lParam 通常是一個指向記憶體中資料的指標。由於W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
因此,它們之間可以相互轉換。
WM_NULL = $0000;
WM_CREATE = $0001;
應用程式建立一個視窗
WM_DESTROY = $0002;
一個視窗被銷燬
WM_MOVE = $0003;
移動一個視窗
WM_SIZE = $0005;
改變一個視窗的大小
WM_ACTIVATE = $0006;
一個視窗被啟用或失去啟用狀態;
WM_SETFOCUS = $0007;
獲得焦點後
WM_KILLFOCUS = $0008;
失去焦點
WM_ENABLE = $000A;
改變enable狀態
WM_SETREDRAW = $000B;
設定視窗是否能重畫
WM_SETTEXT = $000C;
應用程式傳送此訊息來設定一個視窗的文字
WM_GETTEXT = $000D;
應用程式傳送此訊息來複制對應視窗的文字到緩衝區
WM_GETTEXTLENGTH = $000E;
得到與一個視窗有關的文字的長度(不包含空字元)
WM_PAINT = $000F;
要求一個視窗重畫自己
WM_CLOSE = $0010;
當一個視窗或應用程式要關閉時傳送一個訊號
WM_QUERYENDSESSION = $0011;
當使用者選擇結束對話方塊或程式自己呼叫ExitWindows函式
WM_QUIT = $0012;
用來結束程式執行或當程式呼叫postquitmessage函式
WM_QUERYOPEN = $0013;
當使用者視窗恢復以前的大小位置時,把此訊息傳送給某個圖示
WM_ERASEBKGND = $0014;
當視窗背景必須被擦除時(例在視窗改變大小時)
WM_SYSCOLORCHANGE = $0015;
當系統顏色改變時,傳送此訊息給所有頂級視窗
WM_ENDSESSION = $0016;
當系統程式發出WM_QUERYENDSESSION訊息後,此訊息傳送給應用程式,
通知它對話是否結束
WM_SYSTEMERROR = $0017;
WM_SHOWWINDOW = $0018;
當隱藏或顯示視窗是傳送此訊息給這個視窗
WM_ACTIVATEAPP = $001C;
發此訊息給應用程式哪個視窗是啟用的,哪個是非啟用的;
WM_FONTCHANGE = $001D;
當系統的字型資源庫變化時傳送此訊息給所有頂級視窗
WM_TIMECHANGE = $001E;
當系統的時間變化時傳送此訊息給所有頂級視窗
WM_CANCELMODE = $001F;
傳送此訊息來取消某種正在進行的摸態(操作)
WM_SETCURSOR = $0020;
如果滑鼠引起游標在某個視窗中移動且滑鼠輸入沒有被捕獲時,就發訊息給某個視窗
WM_MOUSEACTIVATE = $0021;
當游標在某個非啟用的視窗中而使用者正按著滑鼠的某個鍵傳送此訊息給當前視窗
WM_CHILDACTIVATE = $0022;
傳送此訊息給MDI子視窗當使用者點選此視窗的標題欄,或當視窗被啟用,移動,改變大小
WM_QUEUESYNC = $0023;
此訊息由基於計算機的訓練程式傳送,透過WH_JOURNALPALYBACK的hook程式
分離出使用者輸入訊息
WM_GETMINMAXINFO = $0024;
此訊息傳送給視窗當它將要改變大小或位置;
WM_PAINTICON = $0026;
傳送給最小化視窗當它圖示將要被重畫
WM_ICONERASEBKGND = $0027;
此訊息傳送給某個最小化視窗,僅當它在畫圖示前它的背景必須被重畫
WM_NEXTDLGCTL = $0028;
傳送此訊息給一個對話方塊程式去更改焦點位置
WM_SPOOLERSTATUS = $002A;
每當列印管理列隊增加或減少一條作業時發出此訊息
WM_DRAWITEM = $002B;
當button,combobox,listbox,menu的可視外觀改變時傳送
此訊息給這些空件的所有者
WM_MEASUREITEM = $002C;
當button, combo box, list box, list view control, or menu item 被建立時
傳送此訊息給控制元件的所有者
WM_DELETEITEM = $002D;
當the list box 或 combo box 被銷燬 或 當 某些項被刪除透過LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 訊息
WM_VKEYTOITEM = $002E;
此訊息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN訊息
WM_CHARTOITEM = $002F;
此訊息由一個LBS_WANTKEYBOARDINPUT風格的列表框傳送給他的所有者來響應WM_CHAR訊息
WM_SETFONT = $0030;
當繪製文字時程式傳送此訊息得到控制元件要用的顏色
WM_GETFONT = $0031;
應用程式傳送此訊息得到當前控制元件繪製文字的字型
WM_SETHOTKEY = $0032;
應用程式傳送此訊息讓一個視窗與一個熱鍵相關連
WM_GETHOTKEY = $0033;
應用程式傳送此訊息來判斷熱鍵與某個視窗是否有關聯
WM_QUERYDRAGICON = $0037;
此訊息傳送給最小化視窗,當此視窗將要被拖放而它的類中沒有定義圖示,應用程式能返回一個圖示或游標的控制程式碼,當使用者拖放圖示時系統顯示這個圖示或游標
WM_COMPAREITEM = $0039;
傳送此訊息來判定combobox或listbox新增加的項的相對位置
WM_GETOBJECT = $003D;
WM_COMPACTING = $0041;
顯示記憶體已經很少了
WM_WINDOWPOSCHANGING = $0046;
傳送此訊息給那個視窗的大小和位置將要被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_WINDOWPOSCHANGED = $0047;
傳送此訊息給那個視窗的大小和位置已經被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_POWER = $0048;(適用於16位的windows)
當系統將要進入暫停狀態時傳送此訊息
WM_COPYDATA = $004A;
當一個應用程式傳遞資料給另一個應用程式時傳送此訊息
WM_CANCELJOURNAL = $004B;
當某個使用者取消程式日誌啟用狀態,提交此訊息給程式
WM_NOTIFY = $004E;
當某個控制元件的某個事件已經發生或這個控制元件需要得到一些資訊時,傳送此訊息給它的父視窗
WM_INPUTLANGCHANGEREQUEST = $0050;
當使用者選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE = $0051;
當平臺現場已經被改變後傳送此訊息給受影響的最頂級視窗
WM_TCARD = $0052;
當程式已經初始化windows幫助例程時傳送此訊息給應用程式
WM_HELP = $0053;
此訊息顯示使用者按下了F1,如果某個選單是啟用的,就傳送此訊息個此視窗關聯的選單,否則就
傳送給有焦點的視窗,如果當前都沒有焦點,就把此訊息傳送給當前啟用的視窗
WM_USERCHANGED = $0054;
當使用者已經登入或退出後傳送此訊息給所有的視窗,當使用者登入或退出時系統更新使用者的具體
設定資訊,在使用者更新設定時系統馬上傳送此訊息;
WM_NOTIFYFORMAT = $0055;
公用控制元件,自定義控制元件和他們的父視窗透過此訊息來判斷控制元件是使用ANSI還是UNICODE結構
在WM_NOTIFY訊息,使用此控制元件能使某個控制元件與它的父控制元件之間進行相互通訊
WM_CONTEXTMENU = $007B;
當使用者某個視窗中點選了一下右鍵就傳送此訊息給這個視窗
WM_STYLECHANGING = $007C;
當呼叫SETWINDOWLONG函式將要改變一個或多個 視窗的風格時傳送此訊息給那個視窗
WM_STYLECHANGED = $007D;
當呼叫SETWINDOWLONG函式一個或多個 視窗的風格後傳送此訊息給那個視窗
WM_DISPLAYCHANGE = $007E;
當顯示器的解析度改變後傳送此訊息給所有的視窗
WM_GETICON = $007F;
此訊息傳送給某個視窗來返回與某個視窗有關連的大圖示或小圖示的控制程式碼;
WM_SETICON = $0080;
程式傳送此訊息讓一個新的大圖示或小圖示與某個視窗關聯;
WM_NCCREATE = $0081;
當某個視窗第一次被建立時,此訊息在WM_CREATE訊息傳送前傳送;
WM_NCDESTROY = $0082;
此訊息通知某個視窗,非客戶區正在銷燬
WM_NCCALCSIZE = $0083;
當某個視窗的客戶區域必須被核算時傳送此訊息
WM_NCHITTEST = $0084;//移動滑鼠,按住或釋放滑鼠時發生
WM_NCPAINT = $0085;
程式傳送此訊息給某個視窗當它(視窗)的框架必須被繪製時;
WM_NCACTIVATE = $0086;
此訊息傳送給某個視窗 僅當它的非客戶區需要被改變來顯示是啟用還是非啟用狀態;
WM_GETDLGCODE = $0087;
傳送此訊息給某個與對話方塊程式關聯的控制元件,widdows控制方位鍵和TAB鍵使輸入進入此控制元件
透過響應WM_GETDLGCODE訊息,應用程式可以把他當成一個特殊的輸入控制元件並能處理它
WM_NCMOUSEMOVE = $00A0;
當游標在一個視窗的非客戶區內移動時傳送此訊息給這個視窗 //非客戶區為:窗體的標題欄及窗
的邊框體
WM_NCLBUTTONDOWN = $00A1;
當游標在一個視窗的非客戶區同時按下滑鼠左鍵時提交此訊息
WM_NCLBUTTONUP = $00A2;
當使用者釋放滑鼠左鍵同時游標某個視窗在非客戶區十傳送此訊息;
WM_NCLBUTTONDBLCLK = $00A3;
當使用者雙擊滑鼠左鍵同時游標某個視窗在非客戶區十傳送此訊息
WM_NCRBUTTONDOWN = $00A4;
當使用者按下滑鼠右鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCRBUTTONUP = $00A5;
當使用者釋放滑鼠右鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCRBUTTONDBLCLK = $00A6;
當使用者雙擊滑鼠右鍵同時游標某個視窗在非客戶區十傳送此訊息
WM_NCMBUTTONDOWN = $00A7;
當使用者按下滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCMBUTTONUP = $00A8;
當使用者釋放滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_NCMBUTTONDBLCLK = $00A9;
當使用者雙擊滑鼠中鍵同時游標又在視窗的非客戶區時傳送此訊息
WM_KEYFIRST = $0100;
WM_KEYDOWN = $0100;
//按下一個鍵
WM_KEYUP = $0101;
//釋放一個鍵
WM_CHAR = $0102;
//按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP訊息
WM_DEADCHAR = $0103;
當用translatemessage函式翻譯WM_KEYUP訊息時傳送此訊息給擁有焦點的視窗
WM_SYSKEYDOWN = $0104;
當使用者按住ALT鍵同時按下其它鍵時提交此訊息給擁有焦點的視窗;
WM_SYSKEYUP = $0105;
當使用者釋放一個鍵同時ALT 鍵還按著時提交此訊息給擁有焦點的視窗
WM_SYSCHAR = $0106;
當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後提交此訊息給擁有焦點的視窗
WM_SYSDEADCHAR = $0107;
當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後傳送此訊息給擁有焦點的視窗
WM_KEYLAST = $0108;
WM_INITDIALOG = $0110;
在一個對話方塊程式被顯示前傳送此訊息給它,通常用此訊息初始化控制元件和執行其它任務
WM_COMMAND = $0111;
當使用者選擇一條選單命令項或當某個控制元件傳送一條訊息給它的父視窗,一個快捷鍵被翻譯
WM_SYSCOMMAND = $0112;
當使用者選擇視窗選單的一條命令或當使用者選擇最大化或最小化時那個視窗會收到此訊息
WM_TIMER = $0113; //發生了定時器事件
WM_HSCROLL = $0114;
當一個視窗標準水平捲軸產生一個滾動事件時傳送此訊息給那個視窗,也傳送給擁有它的控制元件
WM_VSCROLL = $0115;
當一個視窗標準垂直捲軸產生一個滾動事件時傳送此訊息給那個視窗也,傳送給擁有它的控制元件 WM_INITMENU = $0116;
當一個選單將要被啟用時傳送此訊息,它發生在使用者選單條中的某項或按下某個選單鍵,它允許程式在顯示前更改選單
WM_INITMENUPOPUP = $0117;
當一個下拉選單或子選單將要被啟用時傳送此訊息,它允許程式在它顯示前更改選單,而不要改變全部
WM_MENUSELECT = $011F;
當使用者選擇一條選單項時傳送此訊息給選單的所有者(一般是視窗)
WM_MENUCHAR = $0120;
當選單已被啟用使用者按下了某個鍵(不同於加速鍵),傳送此訊息給選單的所有者;
WM_ENTERIDLE = $0121;
當一個模態對話方塊或選單進入空載狀態時傳送此訊息給它的所有者,一個模態對話方塊或選單進入空載狀態就是在處理完一條或幾條先前的訊息後沒有訊息它的列隊中等待
WM_MENURBUTTONUP = $0122;
WM_MENUDRAG = $0123;
WM_MENUGETOBJECT = $0124;
WM_UNINITMENUPOPUP = $0125;
WM_MENUCOMMAND = $0126;
WM_CHANGEUISTATE = $0127;
WM_UPDATEUISTATE = $0128;
WM_QUERYUISTATE = $0129;
WM_CTLCOLORMSGBOX = $0132;
在windows繪製訊息框前傳送此訊息給訊息框的所有者視窗,透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定訊息框的文字和背景顏色
WM_CTLCOLOREDIT = $0133;
當一個編輯型控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定編輯框的文字和背景顏色
WM_CTLCOLORLISTBOX = $0134;
當一個列表框控制元件將要被繪製前傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定列表框的文字和背景顏色
WM_CTLCOLORBTN = $0135;
當一個按鈕控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定按紐的文字和背景顏色
WM_CTLCOLORDLG = $0136;
當一個對話方塊控制元件將要被繪製前傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定對話方塊的文字背景顏色
WM_CTLCOLORSCROLLBAR= $0137;
當一個捲軸控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定捲軸的背景顏色
WM_CTLCOLORSTATIC = $0138;
當一個靜態控制元件將要被繪製時傳送此訊息給它的父視窗;透過響應這條訊息,所有者視窗可以透過使用給定的相關顯示裝置的控制程式碼來設定靜態控制元件的文字和背景顏色
WM_MOUSEFIRST = $0200;
WM_MOUSEMOVE = $0200;
// 移動滑鼠
WM_LBUTTONDOWN = $0201;
//按下滑鼠左鍵
WM_LBUTTONUP = $0202;
//釋放滑鼠左鍵
WM_LBUTTONDBLCLK = $0203;
//雙擊滑鼠左鍵
WM_RBUTTONDOWN = $0204;
//按下滑鼠右鍵
WM_RBUTTONUP = $0205;
//釋放滑鼠右鍵
WM_RBUTTONDBLCLK = $0206;
//雙擊滑鼠右鍵
WM_MBUTTONDOWN = $0207;
//按下滑鼠中鍵
WM_MBUTTONUP = $0208;
//釋放滑鼠中鍵
WM_MBUTTONDBLCLK = $0209;
//雙擊滑鼠中鍵
WM_MOUSEWHEEL = $020A;
當滑鼠輪子轉動時傳送此訊息個當前有焦點的控制元件
WM_MOUSELAST = $020A;
WM_PARENTNOTIFY = $0210;
當MDI子視窗被建立或被銷燬,或使用者按了一下滑鼠鍵而游標在子視窗上時傳送此訊息給它的父視窗
WM_ENTERMENULOOP = $0211;
傳送此訊息通知應用程式的主視窗that已經進入了選單迴圈模式
WM_EXITMENULOOP = $0212;
傳送此訊息通知應用程式的主視窗that已退出了選單迴圈模式
WM_NEXTMENU = $0213;
WM_SIZING = 532;
當使用者正在調整視窗大小時傳送此訊息給視窗;透過此訊息應用程式可以監視視窗大小和位置也可以修改他們
WM_CAPTURECHANGED = 533;
傳送此訊息 給視窗當它失去捕獲的滑鼠時;
WM_MOVING = 534;
當使用者在移動視窗時傳送此訊息,透過此訊息應用程式可以監視視窗大小和位置也可以修改他們;
WM_POWERBROADCAST = 536;
此訊息傳送給應用程式來通知它有關電源管理事件;
WM_DEVICECHANGE = 537;
當裝置的硬體配置改變時傳送此訊息給應用程式或裝置驅動程式
WM_IME_STARTCOMPOSITION = $010D;
WM_IME_ENDCOMPOSITION = $010E;
WM_IME_COMPOSITION = $010F;
WM_IME_KEYLAST = $010F;
WM_IME_SETCONTEXT = $0281;
WM_IME_NOTIFY = $0282;
WM_IME_CONTROL = $0283;
WM_IME_COMPOSITIONFULL = $0284;
WM_IME_SELECT = $0285;
WM_IME_CHAR = $0286;
WM_IME_REQUEST = $0288;
WM_IME_KEYDOWN = $0290;
WM_IME_KEYUP = $0291;
WM_MDICREATE = $0220;
應用程式傳送此訊息給多文件的客戶視窗來建立一個MDI 子視窗
WM_MDIDESTROY = $0221;
應用程式傳送此訊息給多文件的客戶視窗來關閉一個MDI 子視窗
WM_MDIACTIVATE = $0222;
應用程式傳送此訊息給多文件的客戶視窗通知客戶視窗啟用另一個MDI子視窗,當客戶視窗收到此訊息後,它發出WM_MDIACTIVE訊息給MDI子視窗(未啟用)啟用它;
WM_MDIRESTORE = $0223;
程式 傳送此訊息給MDI客戶視窗讓子視窗從最大最小化恢復到原來大小
WM_MDINEXT = $0224;
程式 傳送此訊息給MDI客戶視窗啟用下一個或前一個視窗
WM_MDIMAXIMIZE = $0225;
程式傳送此訊息給MDI客戶視窗來最大化一個MDI子視窗;
WM_MDITILE = $0226;
程式 傳送此訊息給MDI客戶視窗以平鋪方式重新排列所有MDI子視窗
WM_MDICASCADE = $0227;
程式 傳送此訊息給MDI客戶視窗以層疊方式重新排列所有MDI子視窗
WM_MDIICONARRANGE = $0228;
程式 傳送此訊息給MDI客戶視窗重新排列所有最小化的MDI子視窗
WM_MDIGETACTIVE = $0229;
程式 傳送此訊息給MDI客戶視窗來找到啟用的子視窗的控制程式碼
WM_MDISETMENU = $0230;
程式 傳送此訊息給MDI客戶視窗用MDI選單代替子視窗的選單
WM_ENTERSIZEMOVE = $0231;
WM_EXITSIZEMOVE = $0232;
WM_DROPFILES = $0233;
WM_MDIREFRESHMENU = $0234;
WM_MOUSEHOVER = $02A1;
WM_MOUSELEAVE = $02A3;
WM_CUT = $0300;
程式傳送此訊息給一個編輯框或combobox來刪除當前選擇的文字
WM_COPY = $0301;
程式傳送此訊息給一個編輯框或combobox來複制當前選擇的文字到剪貼簿
WM_PASTE = $0302;
程式傳送此訊息給editcontrol或combobox從剪貼簿中得到資料
WM_CLEAR = $0303;
程式傳送此訊息給editcontrol或combobox清除當前選擇的內容;
WM_UNDO = $0304;
程式傳送此訊息給editcontrol或combobox撤消最後一次操作
WM_RENDERFORMAT = $0305;
WM_RENDERALLFORMATS = $0306;
WM_DESTROYCLIPBOARD = $0307;
當呼叫ENPTYCLIPBOARD函式時 傳送此訊息給剪貼簿的所有者
WM_DRAWCLIPBOARD = $0308;
當剪貼簿的內容變化時傳送此訊息給剪貼簿觀察鏈的第一個視窗;它允許用剪貼簿觀察視窗來
顯示剪貼簿的新內容;
WM_PAINTCLIPBOARD = $0309;
當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區需要重畫;
WM_VSCROLLCLIPBOARD = $030A;
WM_SIZECLIPBOARD = $030B;
當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區域的大小已經改變是此訊息透過剪貼簿觀察視窗傳送給剪貼簿的所有者;
WM_ASKCBFORMATNAME = $030C;
透過剪貼簿觀察視窗傳送此訊息給剪貼簿的所有者來請求一個CF_OWNERDISPLAY格式的剪貼簿的名字
WM_CHANGECBCHAIN = $030D;
當一個視窗從剪貼簿觀察鏈中移去時傳送此訊息給剪貼簿觀察鏈的第一個視窗;
WM_HSCROLLCLIPBOARD = $030E;
此訊息透過一個剪貼簿觀察視窗傳送給剪貼簿的所有者 ;它發生在當剪貼簿包含CFOWNERDISPALY格式的資料並且有個事件在剪貼簿觀察窗的水平捲軸上;所有者應滾動剪貼簿圖象並更新捲軸的值;
WM_QUERYNEWPALETTE = $030F;
此訊息傳送給將要收到焦點的視窗,此訊息能使視窗在收到焦點時同時有機會實現他的邏輯調色盤
WM_PALETTEISCHANGING= $0310;
當一個應用程式正要實現它的邏輯調色盤時發此訊息通知所有的應用程式
WM_PALETTECHANGED = $0311;
此訊息在一個擁有焦點的視窗實現它的邏輯調色盤後傳送此訊息給所有頂級並重疊的視窗,以此來改變系統調色盤
WM_HOTKEY = $0312;
當使用者按下由REGISTERHOTKEY函式註冊的熱鍵時提交此訊息
WM_PRINT = 791;
應用程式傳送此訊息僅當WINDOWS或其它應用程式發出一個請求要求繪製一個應用程式的一部分;
WM_PRINTCLIENT = 792;
WM_HANDHELDFIRST = 856;
WM_HANDHELDLAST = 863;
WM_PENWINFIRST = $0380;
WM_PENWINLAST = $038F;
WM_COALESCE_FIRST = $0390;
WM_COALESCE_LAST = $039F;
WM_DDE_FIRST = $03E0;
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 = $8000;
WM_USER = $0400;
此訊息能幫助應用程式自定義私有訊息;
/////////////////////////////////////////////////////////////////////
通知訊息(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 C L 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 T E加亮應當去掉
組合框
C B N _ C L O S E U P組合框的列表框被關閉
C B N _ D B L C L K使用者雙擊了一個字串
C B N _ D R O P D O W N組合框的列表框被拉出
C B N _ E D I T C H A N G E使用者修改了編輯框中的文字
C B N _ E D I T U P D AT E編輯框內的文字即將更新
C B N _ E R R S PA C E組合框記憶體不足
C B N _ K I L L F O C U S組合框失去輸入焦點
C B N _ S E L C H A N G E在組合框中選擇了一項
C B N _ S E L E N D C A N C E L使用者的選擇應當被取消
C B N _ S E L E N D O K使用者的選擇是合法的
C B N _ S E T F O C U S組合框獲得輸入焦點
編輯框
E N _ C H A N G E編輯框中的文字己更新
E N _ E R R S PA C E編輯框記憶體不足
E N _ H S C R O L L使用者點選了水平捲軸
E N _ K I L L F O C U S編輯框正在失去輸入焦點
E N _ M A X T E X T插入的內容被截斷
E N _ S E T F O C U S編輯框獲得輸入焦點
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 PA C E列表框記憶體不夠
L B N _ K I L L F O C U S列表框正在失去輸入焦點
L B N _ S E L C A N C E L選擇被取消
L B N _ S E L C H A N G E選擇了另一項
L B N _ S E T F O C U S列表框獲得輸入焦點
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/79126/viewspace-981422/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows訊息大全Windows
- 訊息佇列ActiveMQ的使用詳解佇列MQ
- 如何使用PHP彈出警告訊息框(示例詳解)PHP
- Android訊息傳遞之EventBus 3.0使用詳解Android
- Android 訊息機制詳解Android
- 微信小程式模板訊息詳解微信小程式
- Java訊息佇列入門詳解Java佇列
- MFC 訊息對映機制詳解
- flink window詳解
- Window_Open詳解
- window.open 詳解
- window.history詳解
- 詳解window.history
- iOS 訊息傳送與轉發詳解iOS
- RabbitMQ .NET訊息佇列使用入門(四)【RabbitMQ用法大全】MQ佇列
- 分散式柔性事務之事務訊息詳解分散式
- Java訊息佇列三道面試題詳解!Java佇列面試題
- Android 訊息機制詳解(Android P)Android
- Android進階;Handler訊息機制詳解Android
- Android Handler訊息傳遞機制詳解Android
- Git 命令大全,詳解!Git
- Android之Handler訊息傳遞機制詳解Android
- 【RocketMq-Producer】訊息傳送者引數詳解MQ
- 使用 Angular Universal 進行伺服器端渲染避免 window is not defined 的錯誤訊息Angular伺服器
- RocketMQ訊息丟失解決方案:事務訊息MQ
- RabbitMQ:訊息丟失 | 訊息重複 | 訊息積壓的原因+解決方案+網上學不到的使用心得MQ
- RocketMQ訊息中介軟體詳解(萬字圖文總結)MQ
- 訊息佇列MQ最全詳解(萬字圖文總結)佇列MQ
- 【RocketMQ】高階使用:四個問題詳解事務訊息MQ
- Excel公式大全詳解 excel表格計算公式大全Excel公式
- 3d touch怎麼清理通知訊息 3d touch一鍵清理通知訊息方法詳解3D
- 使用WM_COPYDATA訊息通訊
- 詳解FIX協議的原理、訊息格式及配置開發協議
- [轉]MQ詳解以及各種訊息中介軟體說明MQ
- 高階工程師面試大全- 訊息中介軟體篇工程師面試
- GTK的訊息流說明(X Window做後端的情況)後端
- Android Handler 訊息機制詳述Android
- MySQL 5.7 Window安裝手冊以及問題方案解決大全MySql