標籤:
C# 重寫WndProc 攔截 發送 系統訊息 + windows訊息常量值(1) #region 截獲訊息 /// 截獲訊息 處理XP不能關機問題 protected override void WndProc(ref Message message) { switch (message.Msg) { case WM_QUERYENDSESSION: isClosed = true; break; } base.WndProc(ref message); } #endregion windows 訊息常量:windows訊息大全 訊息,就是指Windows發出的一個通知,告訴應用程式某個事情發生了。例如,單擊滑鼠、改變視窗尺寸、按下鍵盤上的一個鍵都會使Windows發送一個訊息給應用程式。訊息本身是作為一個記錄傳遞給應用程式的,這個記錄中包含了訊息的類型以及其他資訊。例如,對於單擊滑鼠所產生的訊息來說,這個記錄中包含了單擊滑鼠時的座標。這個記錄類型叫做TMsg,它在Windows單元中是這樣聲明的: HWND hwnd; //目標視窗控制代碼 UINT message; //訊息常量標識符 WPARAM wParam; // 32位訊息的特定附加資訊 LPARAM lParam; // 32位訊息的特定附加資訊 DWORD time; //訊息建立時的時間 TPoint pt; //訊息建立時的滑鼠位置 hwnd 32位的視窗控制代碼。視窗可以是任何類型的螢幕對象,因為Win32能夠維護大多數可視對象的控制代碼(視窗、對話方塊、按鈕、編輯框等)。message 用於區別其他訊息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自訂的常量。wParam 通常是一個與訊息有關的常量值,也可能是視窗或控制項的控制代碼。lParam 通常是一個指向記憶體中資料的指標。訊息對應的常量值在Windows SDK 檔案 winuser.h 定義,如: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;得到與一個視窗有關的文本的長度(不包含Null 字元)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_SYSTEMERROR = 0x0017;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, combo box, list box, list view control, or menu item 被建立時 發送此訊息給控制項的所有者WM_DELETEITEM = 0x002D;當the list box 或 combo box 被銷毀 或 當 某些項被刪除通過LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 訊息WM_VKEYTOITEM = 0x002E;此訊息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN訊息WM_CHARTOITEM = 0x002F;此訊息由一個LBS_WANTKEYBOARDINPUT風格的列表框發送給他的所有者來響應WM_CHAR訊息WM_SETFONT = 0x0030;當繪製文本時程式發送此訊息得到控制項要用的顏色WM_GETFONT = 0x0031;應用程式發送此訊息得到當前控制項繪製文本的字型WM_SETHOTKEY = 0x0032;應用程式發送此訊息讓一個視窗與一個熱鍵相關連WM_GETHOTKEY = 0x0033;應用程式發送此訊息來判斷熱鍵與某個視窗是否有關聯WM_QUERYDRAGICON = 0x0037;此訊息發送給已最小化的視窗,當此視窗將要被拖放而它的類中沒有定義表徵圖,應用程式能返回一個表徵圖或游標的控制代碼,當使用者拖放表徵圖時系統顯示這個表徵圖或游標WM_COMPAREITEM = 0x0039;發送此訊息來判定combobox或listbox新增加的項的相對位置WM_GETOBJECT = 0x003D;WM_COMPACTING = 0x0041;顯示記憶體已經很少了WM_WINDOWPOSCHANGING = 0x0046;發送此訊息給那個視窗的大小和位置將要被改變時,來調用setwindowpos函數或其它視窗管理函數WM_WINDOWPOSCHANGED = 0x0047;發送此訊息給那個視窗的大小和位置已經被改變時,來調用setwindowpos函數或其它視窗管理函數WM_POWER = 0x0048;(適用於16位的windows)當系統將要進入暫停狀態時發送此訊息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;公用控制項,自訂控制項和他們的父視窗通過此訊息來判斷控制項是使用ANSI還是UNICODE結構在WM_NOTIFY訊息,使用此控制項能使某個控制項與它的父控制項之間進行相互連信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_GETDLGCODE = 0x0087;發送此訊息給某個與對話方塊程式關聯的控制項,widdows控制方位鍵和TAB鍵使輸入進入此控制項通過響應WM_GETDLGCODE訊息,應用程式可以把他當成一個特殊的輸入控制項並能處理它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_NCMBUTTONDBLCLK = 0x00A9;當使用者雙擊滑鼠中鍵同時游標又在視窗的非客戶區時發送此訊息WM_KEYFIRST = 0x0100;WM_KEYDOWN = 0x0100;//按下一個鍵WM_KEYUP = 0x0101;//釋放一個鍵WM_CHAR = 0x0102;//按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP訊息WM_DEADCHAR = 0x0103;當用translatemessage函數翻譯WM_KEYUP訊息時發送此訊息給擁有焦點的視窗WM_SYSKEYDOWN = 0x0104;當使用者按住ALT鍵同步選取其它鍵時提交此訊息給擁有焦點的視窗;WM_SYSKEYUP = 0x0105;當使用者釋放一個鍵同時ALT 鍵還按著時提交此訊息給擁有焦點的視窗WM_SYSCHAR = 0x0106;當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函數翻譯後提交此訊息給擁有焦點的視窗WM_SYSDEADCHAR = 0x0107;當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函數翻譯後發送此訊息給擁有焦點的視窗WM_KEYLAST = 0x0108;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;WM_UPDATEUISTATE = 0x0128;WM_QUERYUISTATE = 0x0129;WM_CTLCOLORMSGBOX = 0x0132;在windows繪製訊息框前發送此訊息給訊息框的所有者視窗,通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定訊息框的文本和背景顏色WM_CTLCOLOREDIT = 0x0133;當一個編輯型控制項將要被繪製時發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定編輯框的文本和背景顏色WM_CTLCOLORLISTBOX = 0x0134;當一個列表框控制項將要被繪製前發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定列表框的文本和背景顏色WM_CTLCOLORBTN = 0x0135;當一個按鈕控制項將要被繪製時發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定按紐的文本和背景顏色WM_CTLCOLORDLG = 0x0136;當一個對話方塊控制項將要被繪製前發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定對話方塊的文本背景顏色WM_CTLCOLORSCROLLBAR= 0x0137;當一個捲軸控制項將要被繪製時發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定捲軸的背景顏色WM_CTLCOLORSTATIC = 0x0138;當一個靜態控制項將要被繪製時發送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定靜態控制項的文本和背景顏色WM_MOUSEFIRST = 0x0200;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_MOUSELAST = 0x020A;WM_PARENTNOTIFY = 0x0210;當MDI子視窗被建立或被銷毀,或使用者按了一下滑鼠鍵而游標在子視窗上時發送此訊息給它的父視窗WM_ENTERMENULOOP = 0x0211;發送此訊息通知應用程式的主視窗that已經進入了菜單迴圈模式WM_EXITMENULOOP = 0x0212;發送此訊息通知應用程式的主視窗that已退出了菜單迴圈模式WM_NEXTMENU = 0x0213;WM_SIZING = 532;當使用者正在調整視窗大小時發送此訊息給視窗;通過此訊息應用程式可以監看式視窗大小和位置也可以修改他們WM_CAPTURECHANGED = 533;發送此訊息 給視窗當它失去捕獲的滑鼠時;WM_MOVING = 534;當使用者在移動視窗時發送此訊息,通過此訊息應用程式可以監看式視窗大小和位置也可以修改他們;WM_POWERBROADCAST = 536;此訊息發送給應用程式來通知它有關電源管理事件;WM_DEVICECHANGE = 537;當裝置的硬體設定改變時發送此訊息給應用程式或裝置驅動程式WM_IME_STARTCOMPOSITION = 0x010D;WM_IME_ENDCOMPOSITION = 0x010E;WM_IME_COMPOSITION = 0x010F;WM_IME_KEYLAST = 0x010F;WM_IME_SETCONTEXT = 0x0281;WM_IME_NOTIFY = 0x0282;WM_IME_CONTROL = 0x0283;WM_IME_COMPOSITIONFULL = 0x0284;WM_IME_SELECT = 0x0285;WM_IME_CHAR = 0x0286;WM_IME_REQUEST = 0x0288;WM_IME_KEYDOWN = 0x0290;WM_IME_KEYUP = 0x0291;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;WM_MOUSEHOVER = 0x02A1;WM_MOUSELEAVE = 0x02A3;WM_CUT = 0x0300;程式發送此訊息給一個編輯框或combobox來刪除當前選擇的文本WM_COPY = 0x0301;程式發送此訊息給一個編輯框或combobox來複製當前選擇的文本到剪貼簿WM_PASTE = 0x0302;程式發送此訊息給editcontrol或combobox從剪貼簿中得到資料WM_CLEAR = 0x0303;程式發送此訊息給editcontrol或combobox清除當前選擇的內容WM_UNDO = 0x0304;程式發送此訊息給editcontrol或combobox撤消最後一次操作WM_RENDERFORMAT = 0x0305;WM_RENDERALLFORMATS = 0x0306;WM_DESTROYCLIPBOARD = 0x0307;當調用ENPTYCLIPBOARD函數時 發送此訊息給剪貼簿的所有者WM_DRAWCLIPBOARD = 0x0308;當剪貼簿的內容變化時發送此訊息給剪貼簿觀察鏈的第一個視窗;它允許用剪貼簿觀察視窗來顯示剪貼簿的新內容;WM_PAINTCLIPBOARD = 0x0309;當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區需要重畫;WM_VSCROLLCLIPBOARD = 0x030A;WM_SIZECLIPBOARD = 0x030B;當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的用戶端區域的大小已經改變是此訊息通過剪貼簿觀察視窗發送給剪貼簿的所有者; WM_ASKCBFORMATNAME = 0x030C;通過剪貼簿觀察視窗發送此訊息給剪貼簿的所有者來請求一個CF_OWNERDISPLAY格式的剪貼簿的名字WM_CHANGECBCHAIN = 0x030D;當一個視窗從剪貼簿觀察鏈中移去時發送此訊息給剪貼簿觀察鏈的第一個視窗;WM_HSCROLLCLIPBOARD = 0x030E;此訊息通過一個剪貼簿觀察視窗發送給剪貼簿的所有者 ;它發生在當剪貼簿包含CFOWNERDISPALY格式的資料並且有個事件在剪貼簿觀察窗的水平捲軸上;所有者應滾動剪貼簿圖象並更新捲軸的值; WM_QUERYNEWPALETTE = 0x030F;此訊息發送給將要收到焦點的視窗,此訊息能使視窗在收到焦點時同時有機會實現他的邏輯調色盤WM_PALETTEISCHANGING= 0x0310;當一個應用程式正要實現它的邏輯調色盤時發此訊息通知所有的應用程式WM_PALETTECHANGED = 0x0311;此訊息在一個擁有焦點的視窗實現它的邏輯調色盤後發送此訊息給所有頂級並重疊的視窗,以此來改變系統調色盤WM_HOTKEY = 0x0312;當使用者按下由REGISTERHOTKEY函數註冊的熱鍵時提交此訊息WM_PRINT = 791;應用程式發送此訊息僅當WINDOWS或其它應用程式發出一個請求要求繪製一個應用程式的一部分;WM_PRINTCLIENT = 792;WM_HANDHELDFIRST = 856;WM_HANDHELDLAST = 863;WM_PENWINFIRST = 0x0380;WM_PENWINLAST = 0x038F;WM_COALESCE_FIRST = 0x0390;WM_COALESCE_LAST = 0x039F;WM_DDE_FIRST = 0x03E0;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 = 0x8000;WM_USER = 0x0400;此訊息能輔助應用程式自訂私人訊息; 通知訊息(Notification message)是指這樣一種訊息,一個視窗內的子控制項發生了一些事情,需要通知父視窗。通知訊息只適用於標準的視窗控制項如按鈕、列表框、組合框、編輯框,以及Windows 95公用控制項如樹狀檢視、列表視圖等。例如,單擊或雙擊一個控制項、在控制項中選擇部分文本、操作控制項的捲軸都會產生通知訊息。按扭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列表框獲得輸入焦點from:http://www.cnblogs.com/lanmiao/articles/2238236.html
【轉】C# 重寫WndProc 攔截 發送 系統訊息 + windows訊息常量值(1)