Window 消息大全使用详解(无聊没事做)
?Window 消息大全使用詳解(無(wú)聊沒(méi)事做)
樓主zhangqu_980371(能堅(jiān)持一輩子的東西太少)2004-12-19 16:35:23 在 VC/MFC / 基礎(chǔ)類 提問(wèn)
?
? 消息,就是指Windows發(fā)出的一個(gè)通知,告訴應(yīng)用程序某個(gè)事情發(fā)生了。例如,單擊鼠標(biāo)、改變窗口尺寸、按下鍵盤上的一個(gè)鍵都會(huì)使Windows發(fā)送一個(gè)消息給應(yīng)用程序。????
? 消息本身是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄中包含了消息的類型以及其他信息。例如,對(duì)于單擊鼠標(biāo)所產(chǎn)生的消息來(lái)說(shuō),這個(gè)記錄中包含了單擊鼠標(biāo)時(shí)的坐標(biāo)。這個(gè)記錄類型叫做TMsg,它在Windows單元中是這樣聲明的:????
???
? type????
? TMsg?? =?? packed?? record????
? hwnd:?? HWND;?? //窗口句柄????
? message:?? UINT;//消息常量標(biāo)識(shí)符????
? wParam:?? WPARAM?? ;//?? 32位消息的特定附加信息????
? lParam:?? LPARAM?? ;//?? 32位消息的特定附加信息????
? time:?? DWORD;//消息創(chuàng)建時(shí)的時(shí)間????
? pt:?? TPoint;?? //消息創(chuàng)建時(shí)的鼠標(biāo)位置????
? end?? ;????
???
? 消息中有什么?????
? 是否覺(jué)得一個(gè)消息記錄中的信息像希臘語(yǔ)一樣?如果是這樣,那么看一看下面的解釋:hwnd?? 32位的窗口句柄。窗口可以是任何類型的屏幕對(duì)象,因?yàn)閃in32能夠維護(hù)大多數(shù)可????
? 視對(duì)象的句柄(窗口、對(duì)話框、按鈕、編輯框等)。message?? 用于區(qū)別其他消息的常量值,這些常量可以是Windows單元中預(yù)定義的常量,也????
? 可以是自定義的常量。????
? wParam?? 通常是一個(gè)與消息有關(guān)的常量值,也可能是窗口或控件的句柄。????
? lParam?? 通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。由于WParam、lParam和Pointer都是32位的,因此,它們之間可以相互轉(zhuǎn)換。????
???
? WM_NULL?? =$0000?? //????
? WM_CREATE?? =$0001?? //應(yīng)用程序創(chuàng)建一個(gè)窗口????
? WM_DESTROY?? =?? $0002?? //一個(gè)窗口被銷毀????
? WM_MOVE?? =?? $0003?? //移動(dòng)一個(gè)窗口????
? WM_SIZE=?? $0005?? //改變一個(gè)窗口的大小????
? WM_ACTIVATE=?? $0006?? //一個(gè)窗口被激活或失去激活狀態(tài);????
? WM_SETFOCUS=?? $0007?? //獲得焦點(diǎn)后????
? WM_KILLFOCUS=?? $0008?? //失去焦點(diǎn)????
? WM_ENABLE=?? $000A?? //改變enable狀態(tài)????
? WM_SETREDRAW=?? $000B?? //設(shè)置窗口是否能重畫????
? WM_SETTEXT=?? $000C?? //應(yīng)用程序發(fā)送此消息來(lái)設(shè)置一個(gè)窗口的文本????
? WM_GETTEXT?? =?? $000D?? //應(yīng)用程序發(fā)送此消息來(lái)復(fù)制對(duì)應(yīng)窗口的文本到緩沖區(qū)????
? WM_GETTEXTLENGTH?? =?? $000E?? //得到與一個(gè)窗口有關(guān)的文本的長(zhǎng)度(不包含空字符)????
? WM_PAINT?? =?? $000F?? //要求一個(gè)窗口重畫自己????
? WM_CLOSE?? =?? $0010?? //當(dāng)一個(gè)窗口或應(yīng)用程序要關(guān)閉時(shí)發(fā)送一個(gè)信號(hào)????
? WM_QUERYENDSESSION=?? $0011?? //當(dāng)用戶選擇結(jié)束對(duì)話框或程序自己調(diào)用ExitWindows函數(shù)????
? WM_QUIT=?? $0012?? //用來(lái)結(jié)束程序運(yùn)行或當(dāng)程序調(diào)用postquitmessage函數(shù)????
? WM_QUERYOPEN?? =?? $0013?? //當(dāng)用戶窗口恢復(fù)以前的大小位置時(shí),把此消息發(fā)送給某個(gè)圖標(biāo)????
? WM_ERASEBKGND?? =?? $0014?? //當(dāng)窗口背景必須被擦除時(shí)(例在窗口改變大小時(shí))????
? WM_SYSCOLORCHANGE?? =?? $0015?? //當(dāng)系統(tǒng)顏色改變時(shí),發(fā)送此消息給所有頂級(jí)窗口????
? WM_ENDSESSION?? =?? $0016?? //?? 當(dāng)系統(tǒng)進(jìn)程發(fā)出WM_QUERYENDSESSION消息后,此消息發(fā)送給應(yīng)用程序,通知它對(duì)話是否結(jié)束????
? WM_SYSTEMERROR?? =?? $0017?? //????
? WM_SHOWWINDOW=?? $0018?? //當(dāng)隱藏或顯示窗口是發(fā)送此消息給這個(gè)窗口????
? WM_ACTIVATEAPP?? =?? $001C?? //發(fā)此消息給應(yīng)用程序哪個(gè)窗口是激活的,哪個(gè)是非激活的;????
? WM_FONTCHANGE=?? $001D?? //當(dāng)系統(tǒng)的字體資源庫(kù)變化時(shí)發(fā)送此消息給所有頂級(jí)窗口????
? WM_TIMECHANGE=?? $001E?? //當(dāng)系統(tǒng)的時(shí)間變化時(shí)發(fā)送此消息給所有頂級(jí)窗口????
? WM_CANCELMODE=?? $001F?? //發(fā)送此消息來(lái)取消某種正在進(jìn)行的摸態(tài)(操作)????
? WM_SETCURSOR?? =?? $0020?? //如果鼠標(biāo)引起光標(biāo)在某個(gè)窗口中移動(dòng)且鼠標(biāo)輸入沒(méi)有被捕獲時(shí),就發(fā)消息給某個(gè)窗口????
? WM_MOUSEACTIVATE?? =?? $0021?? //當(dāng)光標(biāo)在某個(gè)非激活的窗口中而用戶正按著鼠標(biāo)的某個(gè)鍵發(fā)送此消息給當(dāng)前窗口????
? WM_CHILDACTIVATE?? =?? $0022?? //發(fā)送此消息給MDI子窗口當(dāng)用戶點(diǎn)擊此窗口的標(biāo)題欄,或當(dāng)窗口被激活,移動(dòng),改變大小????
? WM_QUEUESYNC=?? $0023?? //此消息由基于計(jì)算機(jī)的訓(xùn)練程序發(fā)送,通過(guò)WH_JOURNALPALYBACK的hook程序分離出用戶輸入消息????
? WM_GETMINMAXINFO=?? $0024?? //此消息發(fā)送給窗口當(dāng)它將要改變大小或位置;????
? WM_PAINTICON?? =?? $0026?? //發(fā)送給最小化窗口當(dāng)它圖標(biāo)將要被重畫????
? WM_ICONERASEBKGND?? =?? $0027?? //此消息發(fā)送給某個(gè)最小化窗口,僅當(dāng)它在畫圖標(biāo)前它的背景必須被重畫????
? WM_NEXTDLGCTL?? =?? $0028?? //發(fā)送此消息給一個(gè)對(duì)話框程序去更改焦點(diǎn)位置????
? WM_SPOOLERSTATUS=?? $002A?? //每當(dāng)打印管理列隊(duì)增加或減少一條作業(yè)時(shí)發(fā)出此消息????
? WM_DRAWITEM=?? $002B?? //當(dāng)button,combobox,listbox,menu的可視外觀改變時(shí)發(fā)送此消息給這些空件的所有者????
? WM_MEASUREITEM=?? $002C?? //當(dāng)button,?? combo?? box,?? list?? box,?? list?? view?? control,?? or?? menu?? item?? 被創(chuàng)建時(shí)發(fā)送此消息給控件的所有者????
? WM_DELETEITEM?? =?? $002D?? //?? 當(dāng)the?? list?? box?? 或combo?? box?? 被銷毀或當(dāng)某些項(xiàng)被刪除通過(guò)LB_DELETESTRING,?? LB_RESETCONTENT,?? CB_DELETESTRING,?? or?? CB_RESETCONTENT?? 消息????
? WM_VKEYTOITEM?? =?? $002E?? //此消息有一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的發(fā)出給它的所有者來(lái)響應(yīng)WM_KEYDOWN消息????
? WM_CHARTOITEM?? =?? $002F?? //此消息由一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的列表框發(fā)送給他的所有者來(lái)響應(yīng)WM_CHAR消息????
? WM_SETFONT=?? $0030?? //當(dāng)繪制文本時(shí)程序發(fā)送此消息得到控件要用的顏色????
? WM_GETFONT=?? $0031?? //應(yīng)用程序發(fā)送此消息得到當(dāng)前控件繪制文本的字體????
? WM_SETHOTKEY=?? $0032?? //應(yīng)用程序發(fā)送此消息讓一個(gè)窗口與一個(gè)熱鍵相關(guān)連????
? WM_GETHOTKEY=?? $0033?? //應(yīng)用程序發(fā)送此消息來(lái)判斷熱鍵與某個(gè)窗口是否有關(guān)聯(lián)????
? WM_QUERYDRAGICON=?? $0037?? //此消息發(fā)送給最小化窗口,當(dāng)此窗口將要被拖放而它的類中沒(méi)有定義圖標(biāo),應(yīng)用程序能????
? 返回一個(gè)圖標(biāo)或光標(biāo)的句柄,當(dāng)用戶拖放圖標(biāo)時(shí)系統(tǒng)顯示這個(gè)圖標(biāo)或光標(biāo)????
? WM_COMPAREITEM=?? $0039?? //發(fā)送此消息來(lái)判定combobox或listbox新增加的項(xiàng)的相對(duì)位置????
? WM_GETOBJECT=?? $003D?? //WM_COMPACTING?? =?? $0041?? //顯示內(nèi)存已經(jīng)很少了????
? WM_WINDOWPOSCHANGING?? =?? $0046?? //發(fā)送此消息給那個(gè)窗口的大小和位置將要被改變時(shí),來(lái)調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)????
? WM_WINDOWPOSCHANGED?? =?? $0047?? //發(fā)送此消息給那個(gè)窗口的大小和位置已經(jīng)被改變時(shí),來(lái)調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)????
? WM_POWER=?? $0048?? //(適用于16位的windows)當(dāng)系統(tǒng)將要進(jìn)入暫停狀態(tài)時(shí)發(fā)送此消息????
? WM_COPYDATA?? =?? $004A?? //當(dāng)一個(gè)應(yīng)用程序傳遞數(shù)據(jù)給另一個(gè)應(yīng)用程序時(shí)發(fā)送此消息????
? WM_CANCELJOURNAL=?? $004B?? //當(dāng)某個(gè)用戶取消程序日志激活狀態(tài),提交此消息給程序????
? WM_NOTIFY?? =?? $004E?? //當(dāng)某個(gè)控件的某個(gè)事件已經(jīng)發(fā)生或這個(gè)控件需要得到一些信息時(shí),發(fā)送此消息給它的父窗口????
? WM_INPUTLANGCHANGEREQUEST?? =?? $0050?? //當(dāng)用戶選擇某種輸入語(yǔ)言,或輸入語(yǔ)言的熱鍵改變????
? WM_INPUTLANGCHANGE=?? $0051?? //當(dāng)平臺(tái)現(xiàn)場(chǎng)已經(jīng)被改變后發(fā)送此消息給受影響的最頂級(jí)窗口????
? WM_TCARD=?? $0052?? //當(dāng)程序已經(jīng)初始化windows幫助例程時(shí)發(fā)送此消息給應(yīng)用程序????
? WM_HELP?? =?? $0053?? //此消息顯示用戶按下了F1,如果某個(gè)菜單是激活的,就發(fā)送此消息個(gè)此窗口關(guān)聯(lián)的菜單,否則就????
? 發(fā)送給有焦點(diǎn)的窗口,如果當(dāng)前都沒(méi)有焦點(diǎn),就把此消息發(fā)送給當(dāng)前激活的窗口????
? WM_USERCHANGED=?? $0054?? //當(dāng)用戶已經(jīng)登入或退出后發(fā)送此消息給所有的窗口,當(dāng)用戶登入或退出時(shí)系統(tǒng)更新用戶的具體????
? 設(shè)置信息,在用戶更新設(shè)置時(shí)系統(tǒng)馬上發(fā)送此消息;????
? WM_NOTIFYformAT?? =?? $0055?? //公用控件,自定義控件和他們的父窗口通過(guò)此消息來(lái)判斷控件是使用ANSI還是UNICODE結(jié)構(gòu)????
? 在WM_NOTIFY消息,使用此控件能使某個(gè)控件與它的父控件之間進(jìn)行相互通信????
? WM_CONTEXTMENU=?? $007B?? //當(dāng)用戶某個(gè)窗口中點(diǎn)擊了一下右鍵就發(fā)送此消息給這個(gè)窗口????
?
問(wèn)題點(diǎn)數(shù):20、回復(fù)次數(shù):26
Top
?
1 樓zhangqu_980371(能堅(jiān)持一輩子的東西太少)回復(fù)于 2004-12-19 16:35:37 得分 0 WM_styleCHANGING=?? $007C?? //當(dāng)調(diào)用SETWINDOWLONG函數(shù)將要改變一個(gè)或多個(gè)窗口的風(fēng)格時(shí)發(fā)送此消息給那個(gè)窗口????
? WM_styleCHANGED?? =?? $007D?? //當(dāng)調(diào)用SETWINDOWLONG函數(shù)一個(gè)或多個(gè)窗口的風(fēng)格后發(fā)送此消息給那個(gè)窗口????
? WM_DISPLAYCHANGE=?? $007E?? //當(dāng)顯示器的分辨率改變后發(fā)送此消息給所有的窗口????
? WM_GETICON=?? $007F?? //此消息發(fā)送給某個(gè)窗口來(lái)返回與某個(gè)窗口有關(guān)連的大圖標(biāo)或小圖標(biāo)的句柄;????
? WM_SETICON=?? $0080?? //程序發(fā)送此消息讓一個(gè)新的大圖標(biāo)或小圖標(biāo)與某個(gè)窗口關(guān)聯(lián);????
? WM_NCCREATE?? =?? $0081?? //當(dāng)某個(gè)窗口第一次被創(chuàng)建時(shí),此消息在WM_CREATE消息發(fā)送前發(fā)送;????
? WM_NCDESTROY=?? $0082?? //此消息通知某個(gè)窗口,非客戶區(qū)正在銷毀????
? WM_NCCALCSIZE?? =?? $0083?? //當(dāng)某個(gè)窗口的客戶區(qū)域必須被核算時(shí)發(fā)送此消息????
? WM_NCHITTEST=?? $0084?? //移動(dòng)鼠標(biāo),按住或釋放鼠標(biāo)時(shí)發(fā)生????
? WM_NCPAINT=?? $0085?? //程序發(fā)送此消息給某個(gè)窗口當(dāng)它(窗口)的框架必須被繪制時(shí);????
? WM_NCACTIVATE=?? $0086?? //此消息發(fā)送給某個(gè)窗口僅當(dāng)它的非客戶區(qū)需要被改變來(lái)顯示是激活還是非激活狀態(tài);????
? WM_GETDLGCODE=?? $0087?? //發(fā)送此消息給某個(gè)與對(duì)話框程序關(guān)聯(lián)的控件,widdows控制方位鍵和TAB鍵使輸入進(jìn)入此控件????
? 通過(guò)響應(yīng)WM_GETDLGCODE消息,應(yīng)用程序可以把他當(dāng)成一個(gè)特殊的輸入控件并能處理它????
? WM_NCMOUSEMOVE?? =?? $00A0?? //當(dāng)光標(biāo)在一個(gè)窗口的非客戶區(qū)內(nèi)移動(dòng)時(shí)發(fā)送此消息給這個(gè)窗口//非客戶區(qū)為:窗體的標(biāo)題欄及窗????
? 的邊框體????
? WM_NCLBUTTONDOWN=?? $00A1?? //????
? 當(dāng)光標(biāo)在一個(gè)窗口的非客戶區(qū)同時(shí)按下鼠標(biāo)左鍵時(shí)提交此消息????
? WM_NCLBUTTONUP=?? $00A2?? //當(dāng)用戶釋放鼠標(biāo)左鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息;????
? WM_NCLBUTTONDBLCLK=?? $00A3?? //當(dāng)用戶雙擊鼠標(biāo)左鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息????
? WM_NCRBUTTONDOWN=?? $00A4?? //當(dāng)用戶按下鼠標(biāo)右鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息????
? WM_NCRBUTTONUP=?? $00A5?? //當(dāng)用戶釋放鼠標(biāo)右鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息????
? WM_NCRBUTTONDBLCLK=?? $00A6?? //當(dāng)用戶雙擊鼠標(biāo)右鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息????
? WM_NCMBUTTONDOWN=?? $00A7?? //當(dāng)用戶按下鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息????
? WM_NCMBUTTONUP=?? $00A8?? //當(dāng)用戶釋放鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息????
? WM_NCMBUTTONDBLCLK=?? $00A9?? //當(dāng)用戶雙擊鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息????
? WM_KEYFIRST?? =?? $0100?? //????
? WM_KEYDOWN=?? $0100?? //按下一個(gè)鍵????
? WM_KEYUP=?? $0101?? //釋放一個(gè)鍵????
? WM_CHAR?? =?? $0102?? //按下某鍵,并已發(fā)出WM_KEYDOWN,WM_KEYUP消息????
? WM_DEADCHAR?? =?? $0103?? //當(dāng)用translatemessage函數(shù)翻譯WM_KEYUP消息時(shí)發(fā)送此消息給擁有焦點(diǎn)的窗口????
? WM_SYSKEYDOWN?? =?? $0104?? //當(dāng)用戶按住ALT鍵同時(shí)按下其它鍵時(shí)提交此消息給擁有焦點(diǎn)的窗口;????
? WM_SYSKEYUP?? =?? $0105?? //當(dāng)用戶釋放一個(gè)鍵同時(shí)ALT?? 鍵還按著時(shí)提交此消息給擁有焦點(diǎn)的窗口????
? WM_SYSCHAR=?? $0106?? //當(dāng)WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后提交此消息給擁有焦點(diǎn)的??
? 窗口????
? WM_SYSDEADCHAR=?? $0107?? //當(dāng)WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后發(fā)送此消息給擁有焦點(diǎn)的窗口????
? WM_KEYLAST=?? $0108?? //????
? WM_INITDIALOG?? =?? $0110?? //在一個(gè)對(duì)話框程序被顯示前發(fā)送此消息給它,通常用此消息初始化控件和執(zhí)行其它任務(wù)????
? WM_COMMAND=?? $0111?? //當(dāng)用戶選擇一條菜單命令項(xiàng)或當(dāng)某個(gè)控件發(fā)送一條消息給它的父窗口,一個(gè)快捷鍵被翻譯????
? WM_SYSCOMMAND?? =?? $0112?? //當(dāng)用戶選擇窗口菜單的一條命令或當(dāng)用戶選擇最大化或最小化時(shí)那個(gè)窗口會(huì)收到此消息????
? WM_TIMER=?? $0113?? //發(fā)生了定時(shí)器事件????
? WM_HSCROLL=?? $0114?? //當(dāng)一個(gè)窗口標(biāo)準(zhǔn)水平滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給那個(gè)窗口,也發(fā)送給擁有它的控件????
? WM_VSCROLL=?? $0115?? //當(dāng)一個(gè)窗口標(biāo)準(zhǔn)垂直滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給那個(gè)窗口也,發(fā)送給擁有它的控件WM_INITMENU?? =?? $0116?? //????
? 當(dāng)一個(gè)菜單將要被激活時(shí)發(fā)送此消息,它發(fā)生在用戶菜單條中的某項(xiàng)或按下某個(gè)菜單鍵,它允許????
? 程序在顯示前更改菜單????
? WM_INITMENUPOPUP=?? $0117?? //當(dāng)一個(gè)下拉菜單或子菜單將要被激活時(shí)發(fā)送此消息,它允許程序在它顯示前更改菜單,而不要????
? 改變?nèi)????
? WM_MENUSELECT?? =?? $011F?? //當(dāng)用戶選擇一條菜單項(xiàng)時(shí)發(fā)送此消息給菜單的所有者(一般是窗口)????
? WM_MENUCHAR?? =?? $0120?? //當(dāng)菜單已被激活用戶按下了某個(gè)鍵(不同于加速鍵),發(fā)送此消息給菜單的所有者;????
? WM_ENTERIDLE=?? $0121?? //當(dāng)一個(gè)模態(tài)對(duì)話框或菜單進(jìn)入空載狀態(tài)時(shí)發(fā)送此消息給它的所有者,一個(gè)模態(tài)對(duì)話框或菜單進(jìn)入空載狀態(tài)就是在處理完一條或幾條先前的消息后沒(méi)有消息它的列隊(duì)中等待????
? 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繪制消息框前發(fā)送此消息給消息框的所有者窗口,通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置消息框的文本和背景顏色????
? WM_CTLCOLOREDIT?? =?? $0133?? //當(dāng)一個(gè)編輯型控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置編輯框的文本和背景顏色????
? WM_CTLCOLORLISTBOX=?? $0134?? //當(dāng)一個(gè)列表框控件將要被繪制前發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置列表框的文本和背景顏色????
? WM_CTLCOLORBTN=?? $0135?? //當(dāng)一個(gè)按鈕控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置按紐的文本和背景顏色????
? WM_CTLCOLORDLG=?? $0136?? //當(dāng)一個(gè)對(duì)話框控件將要被繪制前發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置對(duì)話框的文本背景顏色????
? WM_CTLCOLORSCROLLBAR=?? $0137?? //當(dāng)一個(gè)滾動(dòng)條控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置滾動(dòng)條的背景顏色????
? WM_CTLCOLORSTATIC?? =?? $0138?? //當(dāng)一個(gè)靜態(tài)控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以????
? 通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置靜態(tài)控件的文本和背景顏色????
? WM_MOUSEFIRST?? =?? $0200?? //????
? WM_MOUSEMOVE=?? $0200?? //移動(dòng)鼠標(biāo)????
? WM_LBUTTONDOWN=?? $0201?? //按下鼠標(biāo)左鍵????
? WM_LBUTTONUP=?? $0202?? //釋放鼠標(biāo)左鍵????
? WM_LBUTTONDBLCLK=?? $0203?? //雙擊鼠標(biāo)左鍵????
? WM_RBUTTONDOWN=?? $0204?? //按下鼠標(biāo)右鍵????
? WM_RBUTTONUP=?? $0205?? //釋放鼠標(biāo)右鍵????
? WM_RBUTTONDBLCLK=?? $0206?? //雙擊鼠標(biāo)右鍵????
? WM_MBUTTONDOWN=?? $0207?? //按下鼠標(biāo)中鍵????
? WM_MBUTTONUP=?? $0208?? //釋放鼠標(biāo)中鍵????
? WM_MBUTTONDBLCLK=?? $0209?? //雙擊鼠標(biāo)中鍵????
? WM_MOUSEWHEEL?? =?? $020A?? //當(dāng)鼠標(biāo)輪子轉(zhuǎn)動(dòng)時(shí)發(fā)送此消息個(gè)當(dāng)前有焦點(diǎn)的控件????
? WM_MOUSELAST=?? $020A?? //????
? WM_PARENTNOTIFY?? =?? $0210?? //當(dāng)MDI子窗口被創(chuàng)建或被銷毀,或用戶按了一下鼠標(biāo)鍵而光標(biāo)在子窗口上時(shí)發(fā)送此消息給它的父窗口????
? WM_ENTERMENULOOP=?? $0211?? //發(fā)送此消息通知應(yīng)用程序的主窗口that已經(jīng)進(jìn)入了菜單循環(huán)模式????
? WM_EXITMENULOOP?? =?? $0212?? //發(fā)送此消息通知應(yīng)用程序的主窗口that已退出了菜單循環(huán)模式????
? WM_NEXTMENU?? =?? $0213?? //????
? WM_SIZING?? =?? 532?? //當(dāng)用戶正在調(diào)整窗口大小時(shí)發(fā)送此消息給窗口;通過(guò)此消息應(yīng)用程序可以監(jiān)視窗口大小和位置????
? 也可以修改他們????
? WM_CAPTURECHANGED?? =?? 533?? //發(fā)送此消息給窗口當(dāng)它失去捕獲的鼠標(biāo)時(shí);????
? WM_MOVING?? =?? 534?? //當(dāng)用戶在移動(dòng)窗口時(shí)發(fā)送此消息,通過(guò)此消息應(yīng)用程序可以監(jiān)視窗口大小和位置????
? 也可以修改他們;????
?
Top
2 樓zhangqu_980371(能堅(jiān)持一輩子的東西太少)回復(fù)于 2004-12-19 16:35:41 得分 0 WM_POWERBROADCAST?? =?? 536?? //此消息發(fā)送給應(yīng)用程序來(lái)通知它有關(guān)電源管理事件;????
? WM_DEVICECHANGE?? =?? 537?? //當(dāng)設(shè)備的硬件配置改變時(shí)發(fā)送此消息給應(yīng)用程序或設(shè)備驅(qū)動(dòng)程序????
? 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?? //應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口來(lái)創(chuàng)建一個(gè)MDI?? 子窗口????
? WM_MDIDESTROY?? =?? $0221?? //應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口來(lái)關(guān)閉一個(gè)MDI?? 子窗口????
? WM_MDIACTIVATE=?? $0222?? //應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口通知客戶窗口激活另一個(gè)MDI子窗口,當(dāng)客戶窗口收到????
? 此消息后,它發(fā)出WM_MDIACTIVE消息給MDI子窗口(未激活)激活它;????
? WM_MDIRESTORE?? =?? $0223?? //程序發(fā)送此消息給MDI客戶窗口讓子窗口從最大最小化恢復(fù)到原來(lái)大小????
? WM_MDINEXT=?? $0224?? //程序發(fā)送此消息給MDI客戶窗口激活下一個(gè)或前一個(gè)窗口????
? WM_MDIMAXIMIZE=?? $0225?? //程序發(fā)送此消息給MDI客戶窗口來(lái)最大化一個(gè)MDI子窗口;????
? WM_MDITILE=?? $0226?? //程序發(fā)送此消息給MDI客戶窗口以平鋪方式重新排列所有MDI子窗口????
? WM_MDICASCADE?? =?? $0227?? //程序發(fā)送此消息給MDI客戶窗口以層疊方式重新排列所有MDI子窗口????
? WM_MDIICONARRANGE?? =?? $0228?? //程序發(fā)送此消息給MDI客戶窗口重新排列所有最小化的MDI子窗口????
? WM_MDIGETACTIVE?? =?? $0229?? //程序發(fā)送此消息給MDI客戶窗口來(lái)找到激活的子窗口的句柄????
? WM_MDISETMENU?? =?? $0230?? //程序發(fā)送此消息給MDI客戶窗口用MDI菜單代替子窗口的菜單????
? WM_ENTERSIZEMOVE=?? $0231?? //????
? WM_EXITSIZEMOVE?? =?? $0232?? //????
? WM_DROPFILES=?? $0233?? //????
? WM_MDIREFRESHMENU?? =?? $0234?? //????
? WM_MOUSEHOVER?? =?? $02A1?? //????
? WM_MOUSELEAVE?? =?? $02A3?? //????
? WM_CUT=?? $0300?? //程序發(fā)送此消息給一個(gè)編輯框或combobox來(lái)刪除當(dāng)前選擇的文本????
? WM_COPY?? =?? $0301?? //程序發(fā)送此消息給一個(gè)編輯框或combobox來(lái)復(fù)制當(dāng)前選擇的文本到剪貼板????
? WM_PASTE=?? $0302?? //程序發(fā)送此消息給editcontrol或combobox從剪貼板中得到數(shù)據(jù)????
? WM_CLEAR=?? $0303?? //程序發(fā)送此消息給editcontrol或combobox清除當(dāng)前選擇的內(nèi)容;????
? WM_UNDO?? =?? $0304?? //程序發(fā)送此消息給editcontrol或combobox撤消最后一次操作????
? WM_RENDERformAT?? =?? $0305;//????
? WM_RENDERALLformATS?? =?? $0306?? //????
? WM_DESTROYCLIPBOARD?? =?? $0307?? //當(dāng)調(diào)用ENPTYCLIPBOARD函數(shù)時(shí)發(fā)送此消息給剪貼板的所有者????
? WM_DRAWCLIPBOARD=?? $0308?? //當(dāng)剪貼板的內(nèi)容變化時(shí)發(fā)送此消息給剪貼板觀察鏈的第一個(gè)窗口;它允許用剪貼板觀察窗口來(lái)????
? 顯示剪貼板的新內(nèi)容;????
? WM_PAINTCLIPBOARD?? =?? $0309?? //當(dāng)剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)需要重畫;????
? WM_VSCROLLCLIPBOARD?? =?? $030A?? //????
? WM_SIZECLIPBOARD=?? $030B?? //當(dāng)剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)域的大小已經(jīng)改變是此消息通過(guò)剪貼板觀察窗口發(fā)送給剪貼板的所有者;????
? WM_ASKCBformATNAME=?? $030C?? //通過(guò)剪貼板觀察窗口發(fā)送此消息給剪貼板的所有者來(lái)請(qǐng)求一個(gè)CF_OWNERDISPLAY格式的剪貼板的名字????
? WM_CHANGECBCHAIN=?? $030D?? //當(dāng)一個(gè)窗口從剪貼板觀察鏈中移去時(shí)發(fā)送此消息給剪貼板觀察鏈的第一個(gè)窗口;????
? WM_HSCROLLCLIPBOARD?? =?? $030E?? //????
? 此消息通過(guò)一個(gè)剪貼板觀察窗口發(fā)送給剪貼板的所有者;它發(fā)生在當(dāng)剪貼板包含CFOWNERDISPALY格式的數(shù)據(jù)并且有個(gè)事件在剪貼板觀察窗的水平滾動(dòng)條上;所有者應(yīng)滾動(dòng)剪貼板圖象并更新滾動(dòng)條的值;????
? WM_QUERYNEWPALETTE=?? $030F?? //此消息發(fā)送給將要收到焦點(diǎn)的窗口,此消息能使窗口在收到焦點(diǎn)時(shí)同時(shí)有機(jī)會(huì)實(shí)現(xiàn)他的邏輯調(diào)色板????
? WM_PALETTEISCHANGING=?? $0310?? //當(dāng)一個(gè)應(yīng)用程序正要實(shí)現(xiàn)它的邏輯調(diào)色板時(shí)發(fā)此消息通知所有的應(yīng)用程序????
? WM_PALETTECHANGED?? =?? $0311?? //此消息在一個(gè)擁有焦點(diǎn)的窗口實(shí)現(xiàn)它的邏輯調(diào)色板后發(fā)送此消息給所有頂級(jí)并重疊的窗口,以此????
? 來(lái)改變系統(tǒng)調(diào)色板????
? WM_HOTKEY?? =?? $0312?? //當(dāng)用戶按下由REGISTERHOTKEY函數(shù)注冊(cè)的熱鍵時(shí)提交此消息????
? WM_PRINT=?? 791?? //應(yīng)用程序發(fā)送此消息僅當(dāng)WINDOWS或其它應(yīng)用程序發(fā)出一個(gè)請(qǐng)求要求繪制一個(gè)應(yīng)用程序的一部分;????
? 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?? //一個(gè)DDE客戶程序提交此消息開始一個(gè)與服務(wù)器程序的會(huì)話來(lái)響應(yīng)那個(gè)指定的程序和主題名;????
? WM_DDE_TERMINATE=?? WM_DDE_FIRST?? +?? 1?? //一個(gè)DDE應(yīng)用程序(無(wú)論是客戶還是服務(wù)器)提交此消息來(lái)終止一個(gè)會(huì)話;????
? WM_DDE_ADVISE?? =?? WM_DDE_FIRST?? +?? 2?? //一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)請(qǐng)求服務(wù)器每當(dāng)數(shù)據(jù)項(xiàng)改變時(shí)更新它????
? WM_DDE_UNADVISE?? =?? WM_DDE_FIRST?? +?? 3?? //一個(gè)DDE客戶程序通過(guò)此消息通知一個(gè)DDE服務(wù)程序不更新指定的項(xiàng)或一個(gè)特殊的剪貼板格式的項(xiàng)????
? WM_DDE_ACK=?? WM_DDE_FIRST?? +?? 4?? //此消息通知一個(gè)DDE(動(dòng)態(tài)數(shù)據(jù)交換)程序已收到并正在處理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?? //一個(gè)DDE服務(wù)程序提交此消息給DDE客戶程序來(lái)傳遞個(gè)一數(shù)據(jù)項(xiàng)給客戶或通知客戶的一條可用數(shù)據(jù)項(xiàng)????
? WM_DDE_REQUEST=?? WM_DDE_FIRST?? +?? 6?? //一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)請(qǐng)求一個(gè)數(shù)據(jù)項(xiàng)的值;????
? WM_DDE_POKE?? =?? WM_DDE_FIRST?? +?? 7?? //一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序,客戶使用此消息來(lái)請(qǐng)求服務(wù)器接收一個(gè)未經(jīng)同意的數(shù)據(jù)項(xiàng);服務(wù)器通過(guò)答復(fù)WM_DDE_ACK消息提示是否它接收這個(gè)數(shù)據(jù)項(xiàng);????
? WM_DDE_EXECUTE=?? WM_DDE_FIRST?? +?? 8?? //一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)發(fā)送一個(gè)字符串給服務(wù)器讓它象串行命令一樣被處理,服務(wù)器通過(guò)提交WM_DDE_ACK消息來(lái)作回應(yīng);????
? WM_DDE_LAST?? =?? WM_DDE_FIRST?? +?? 8?? //????
? WM_APP?? =?? $8000?? //????
? WM_USER?? =?? $0400?? //此消息能幫助應(yīng)用程序自定義私有消息;????
???
? /????
? 通知消息(Notification?? message)是指這樣一種消息,一個(gè)窗口內(nèi)的子控件發(fā)生了一些事情,需要通????
? 知父窗口。通知消息只適用于標(biāo)準(zhǔn)的窗口控件如按鈕、列表框、組合框、編輯框,以及Windows?? 95公????
? 共控件如樹狀視圖、列表視圖等。例如,單擊或雙擊一個(gè)控件、在控件中選擇部分文本、操作控件的????
? 滾動(dòng)條都會(huì)產(chǎn)生通知消息。????
???
? 按扭????
? BN_CLICKED?? //用戶單擊了按鈕????
? BN_DISABLE?? //按鈕被禁止????
? BN_DOUBLECLICKED?? //用戶雙擊了按鈕????
? BN_HILITE?? //用戶加亮了按鈕????
? BN_PAINT?? //按鈕應(yīng)當(dāng)重畫????
? BN_UNHILITE?? //加亮應(yīng)當(dāng)去掉????
???
? 組合框????
? CBN_CLOSEUP?? //組合框的列表框被關(guān)閉????
? CBN_DBLCLK?? //用戶雙擊了一個(gè)字符串????
? CBN_DROPDOWN?? //組合框的列表框被拉出????
? CBN_EDITCHANGE?? //用戶修改了編輯框中的文本????
? CBN_EDITUPDATE?? //編輯框內(nèi)的文本即將更新????
? CBN_ERRSPACE?? //組合框內(nèi)存不足????
? CBN_KILLFOCUS?? //組合框失去輸入焦點(diǎn)????
? CBN_SELCHANGE?? //在組合框中選擇了一項(xiàng)????
? CBN_SELENDCANCEL?? //用戶的選擇應(yīng)當(dāng)被取消????
? CBN_SELENDOK?? //用戶的選擇是合法的????
? CBN_SETFOCUS?? //組合框獲得輸入焦點(diǎn)????
???
? 編輯框????
? EN_CHANGE?? //編輯框中的文本己更新????
? EN_ERRSPACE?? //編輯框內(nèi)存不足????
? EN_HSCROLL?? //用戶點(diǎn)擊了水平滾動(dòng)條????
? EN_KILLFOCUS?? //編輯框正在失去輸入焦點(diǎn)????
? EN_MAXTEXT?? //插入的內(nèi)容被截?cái)????
? EN_SETFOCUS?? //編輯框獲得輸入焦點(diǎn)????
? EN_UPDATE?? //編輯框中的文本將要更新????
? EN_VSCROLL?? //用戶點(diǎn)擊了垂直滾動(dòng)條消息含義????
???
? 列表框????
? LBN_DBLCLK?? //用戶雙擊了一項(xiàng)????
? LBN_ERRSPACE?? //列表框內(nèi)存不夠????
? LBN_KILLFOCUS?? //列表框正在失去輸入焦點(diǎn)????
? LBN_SELCANCEL?? //選擇被取消????
? LBN_SELCHANGE?? //選擇了另一項(xiàng)????
? LBN_SETFOCUS?? //列表框獲得輸入焦點(diǎn)????
?????
?
總結(jié)
以上是生活随笔為你收集整理的Window 消息大全使用详解(无聊没事做)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 编程调整控件背景色
- 下一篇: WINDOWS 逻辑坐标 设备坐标 屏幕