1. 程式人生 > >C#winform監聽窗體上的狀態

C#winform監聽窗體上的狀態

WinForm監聽窗體的每個操作,以及鍵按下的操作
  1.  protected override void WndProc(ref Message m)  
  2.        {  
  3.            const int WM_SYSCOMMAND = 0x0112;  
  4.            const int SC_CLOSE = 0xF060;  
  5.   
  6.            if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)  
  7.            {  
  8.                // 遮蔽傳入的訊息事件   
  9.                this.WindowState = FormWindowState.Minimized;  
  10.                return;  
  11.            }  
  12.            base.WndProc(ref m);  
  13.        }  
  14.   
  15.        protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)  
  16.        {  
  17.            int WM_KEYDOWN = 256;  
  18.            int WM_SYSKEYDOWN = 260;  
  19.   
  20.            if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)  
  21.            {  
  22.                switch (keyData)  
  23.                {  
  24.                    case Keys.Escape:  
  25.                        this.Close();  
  26.   
  27.                        break;  
  28.                }  
  29.            }  
  30.            return false;  
  31.        }  
  32.   C#中的事件也是通過封裝系統訊息來實現的,如果你在WndProc函式中不處理該訊息

那麼,它會被交給系統來處理該訊息,系統便會通過代理來實現滑鼠單擊的處理函式,因此你可以通過

WndProc函式來攔截訊息

====================================================================================

 

windows部分常量(不完整,有的管用,有的不管用)

          //常量的意義
          HTERROR = -2;
          HTTRANSPARENT = -1;
          HTNOWHERE = 0;
          HTCLIENT = 1;
          HTCAPTION = 2;
          HTSYSMENU = 3;
          HTGROWBOX = 4;
          HTSIZE = HTGROWBOX;
          HTMENU = 5;
          HTHSCROLL = 6;
          HTVSCROLL = 7;
          HTMINBUTTON = 8;
          HTMAXBUTTON = 9;
          HTLEFT = 10;
          HTRIGHT = 11;
          HTTOP = 12;
          HTTOPLEFT = 13;
          HTTOPRIGHT = 14;
          HTBOTTOM = 15;
          HTBOTTOMLEFT = 16;
          HTBOTTOMRIGHT = 17;
          HTBORDER = 18;
          HTREDUCE = HTMINBUTTON;
          HTZOOM = HTMAXBUTTON;
          HTSIZEFIRST = HTLEFT;
          HTSIZELAST = HTBOTTOMRIGHT;
          HTOBJECT = 19;
          HTCLOSE = 20;

 

 

 

====================================================================================

 

 

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; 
得到與一個視窗有關的文字的長度(不包含空字元)

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公共控制元件如樹狀檢視、列表檢視等。
例如,單擊或雙擊一個控制元件、在控制元件中選擇部分文字、操作控制元件的滾動條都會產生通知訊息。 
按扭 
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列表框獲得輸入焦點