2 娑堟伅綾誨瀷
2.1 緋葷粺瀹氫箟娑堟伅(System-Defined Messages)
鍦⊿DK涓簨鍏堝畾涔夊ソ鐨勬秷鎭紝闈炵敤鎴峰畾涔夌殑錛屽叾鑼冨洿鍦╗0x0000, 0x03ff]涔嬮棿錛?鍙互鍒嗕負浠ヤ笅涓夌被錛?br />
2.1.1: 紿楀彛娑堟伅(Windows Message)
涓庣獥鍙g殑鍐呴儴榪愪綔鏈夊叧錛屽鍒涘緩紿楀彛錛岀粯鍒剁獥鍙o紝閿姣佺獥鍙g瓑銆傚彲浠ユ槸涓鑸殑紿楀彛錛屼篃鍙互鏄疍ialog,鎺т歡絳夈?br />
濡傦細WM_CREATE, WM_PAINT, WM_MOUSEMOVE, WM_CTLCOLOR, WM_HSCROLL...
2.1.2: 鍛戒護娑堟伅(Command Message)
涓庡鐞嗙敤鎴瘋姹傛湁鍏籌紝 濡傚崟鍑昏彍鍗曢」鎴栧伐鍏鋒爮鎴栨帶浠舵椂錛?灝變細浜х敓鍛戒護娑堟伅銆?br />
WM_COMMAND, LOWORD(wParam)琛ㄧず鑿滃崟欏癸紝宸ュ叿鏍忔寜閽垨鎺т歡鐨処D銆傚鏋滄槸鎺т歡, HIWORD(wParam)琛ㄧず鎺т歡娑堟伅綾誨瀷
2.1.3: 鎺т歡閫氱煡(Notify Message)
鎺т歡閫氱煡娑堟伅錛?榪欐槸鏈鐏墊椿鐨勬秷鎭牸寮忥紝 鍏禡essage, wParam, lParam鍒嗗埆涓猴細WM_NOTIFY, 鎺т歡ID錛屾寚鍚慛MHDR鐨勬寚閽堛侼MHDR鍖呭惈鎺т歡閫氱煡鐨勫唴瀹癸紝 鍙互浠繪剰鎵╁睍銆?br />
2.2 紼嬪簭瀹氫箟娑堟伅(Application-Defined Messages)
鐢ㄦ埛鑷畾涔夌殑娑堟伅錛?瀵逛簬鍏惰寖鍥存湁濡備笅瑙勫畾錛?br />
WM_USER: 0x0400-0x7FFF (ex. WM_USER+10)
WM_APP(winver>4.0): 0x8000-0xBFFF (ex.WM_APP+4)
RegisterWindowMessage: 0xC000-0xFFFF
3 娑堟伅闃熷垪(Message Queues)
Windows涓湁涓ょ綾誨瀷鐨勬秷鎭槦鍒?br />
3.1 緋葷粺娑堟伅闃熷垪(System Message Queue)
榪欐槸涓涓郴緇熷敮涓鐨凲ueue錛岃澶囬┍鍔?mouse, keyboard)浼氭妸鎿嶄綔杈撳叆杞寲鎴愭秷鎭瓨鍦ㄧ郴緇熼槦鍒椾腑錛岀劧鍚庣郴緇熶細鎶婃娑堟伅鏀懼埌鐩爣紿楀彛鎵鍦ㄧ殑綰跨▼鐨勬秷鎭槦鍒?thread-specific message queue)涓瓑寰呭鐞?br />
3.2 綰跨▼娑堟伅闃熷垪(Thread-specific Message Queue)
姣忎竴涓狦UI綰跨▼閮戒細緇存姢榪欐牱涓涓嚎紼嬫秷鎭槦鍒椼?榪欎釜闃熷垪鍙湁鍦ㄧ嚎紼嬭皟鐢℅DI鍑芥暟鏃舵墠浼氬垱寤猴紝榛樿涓嶅垱寤?銆傜劧鍚庣嚎紼嬫秷鎭槦鍒椾腑鐨勬秷鎭細琚佸埌鐩稿簲鐨勭獥鍙h繃紼?WndProc)澶勭悊.
娉ㄦ剰錛?綰跨▼娑堟伅闃熷垪涓璚M_PAINT錛學M_TIMER鍙湁鍦≦ueue涓病鏈夊叾浠栨秷鎭殑鏃跺欐墠浼氳澶勭悊錛學M_PAINT娑堟伅榪樹細琚悎騫朵互鎻愰珮鏁堢巼銆傚叾浠栨墍鏈夋秷鎭互鍏堣繘鍏堝嚭錛團IFO錛夌殑鏂瑰紡琚鐞嗐?/p>
4 闃熷垪娑堟伅(Queued Messages)鍜岄潪闃熷垪娑堟伅(Non-Queued Messages)
4.1 闃熷垪娑堟伅(Queued Messages)
娑堟伅浼氬厛淇濆瓨鍦ㄦ秷鎭槦鍒椾腑錛屾秷鎭驚鐜細浠庢闃熷垪涓彇娑堟伅騫跺垎鍙戝埌鍚勭獥鍙e鐞?br />
濡傞紶鏍囷紝閿洏娑堟伅銆?br />
4.2 闈為槦鍒楁秷鎭?NonQueued Messages)
娑堟伅浼氱粫榪囩郴緇熸秷鎭槦鍒楀拰綰跨▼娑堟伅闃熷垪鐩存帴鍙戦佸埌紿楀彛榪囩▼琚鐞?br />
濡傦細 WM_ACTIVATE, WM_SETFOCUS, WM_SETCURSOR錛?WM_WINDOWPOSCHANGED
娉ㄦ剰: postMessage鍙戦佺殑娑堟伅鏄槦鍒楁秷鎭紝瀹冧細鎶婃秷鎭疨ost鍒版秷鎭槦鍒椾腑錛?SendMessage鍙戦佺殑娑堟伅鏄潪闃熷垪娑堟伅錛?琚洿鎺ラ佸埌紿楀彛榪囩▼澶勭悊
5 PostMessage(PostThreadMessage), SendMessage
PostMessage:鎶婃秷鎭斁鍒版寚瀹氱獥鍙f墍鍦ㄧ殑綰跨▼娑堟伅闃熷垪涓悗绔嬪嵆榪斿洖銆?PostThreadMessage錛氭妸娑堟伅鏀懼埌鎸囧畾綰跨▼鐨勬秷鎭槦鍒椾腑鍚庣珛鍗寵繑鍥炪?br />
SendMessage錛氱洿鎺ユ妸娑堟伅閫佸埌紿楀彛榪囩▼澶勭悊錛?澶勭悊瀹屼簡鎵嶈繑鍥炪?/p>
6 GetMessage, PeekMessage
PeekMessage浼氱珛鍗寵繑鍥?nbsp; 鍙互淇濈暀娑堟伅
GetMessage鍦ㄦ湁娑堟伅鏃惰繑鍥?nbsp;浼氬垹闄ゆ秷鎭?/p>
7 TranslateMessage, TranslateAccelerator
TranslateMessage: 鎶婁竴涓獀irtual-key娑堟伅杞寲鎴愬瓧絎︽秷鎭?character message)錛屽茍鏀懼埌褰撳墠綰跨▼鐨勬秷鎭槦鍒椾腑錛屾秷鎭驚鐜笅涓嬈″彇鍑哄鐞嗐?br />
TranslateAccelerator: 灝嗗揩鎹烽敭瀵瑰簲鍒扮浉搴旂殑鑿滃崟鍛戒護銆傚畠浼氭妸WM_KEYDOWN 鎴?WM_SYSKEYDOWN杞寲鎴愬揩鎹烽敭琛ㄤ腑鐩稿簲鐨刉M_COMMAND 鎴朩M_SYSCOMMAND娑堟伅錛?鐒跺悗鎶婅漿鍖栧悗鐨?WM_COMMAND鎴朩M_SYSCOMMAND鐩存帴鍙戦佸埌紿楀彛榪囩▼澶勭悊錛?澶勭悊瀹屽悗鎵嶄細榪斿洖銆?/p>
8(娑堟伅姝婚攣( Message Deadlocks)
鍋囪鏈夌嚎紼婣鍜孊錛?鐜板湪鏈変互涓嬩笅姝ラ
1) 綰跨▼A SendMessage緇欑嚎紼婤, A絳夊緟娑堟伅鍦ㄧ嚎紼婤涓鐞嗗悗榪斿洖
2) 綰跨▼B鏀跺埌浜嗙嚎紼婣鍙戞潵鐨勬秷鎭紝騫惰繘琛屽鐞嗭紝 鍦ㄥ鐞嗚繃紼嬩腑錛孊涔熷悜綰跨▼A SendMessgae錛岀劧鍚庣瓑寰呬粠A榪斿洖銆?br />
鍥犱負姝ゆ椂錛?綰跨▼A姝g瓑寰呬粠綰跨▼B榪斿洖錛?鏃犳硶澶勭悊B鍙戞潵鐨勬秷鎭紝 浠庤屽鑷翠簡\綰跨▼A,B鐩鎬簰絳夊緟錛?褰㈡垚姝婚攣銆傚涓嚎紼嬩篃鍙互褰㈡垚鐜艦姝婚攣銆?br />
鍙互浣跨敤 SendNotifyMessage鎴朣endMessageTimeout鏉ラ伩鍏嶅嚭鐜版閿併?/p>
9 BroadcastSystemMessage
鎴戜滑涓鑸墍鎺ヨЕ鍒扮殑娑堟伅閮芥槸鍙戦佺粰紿楀彛鐨勶紝 鍏跺疄錛?娑堟伅鐨勬帴鏀惰呭彲浠ユ槸澶氱澶氭牱鐨勶紝瀹冨彲浠ユ槸搴旂敤紼嬪簭(applications), 鍙畨瑁呴┍鍔?installable drivers), 緗戠粶璁懼(network drivers), 緋葷粺綰ц澶囬┍鍔?system-level device drivers)絳夛紝
BroadcastSystemMessage榪欎釜API鍙互瀵逛互涓婄郴緇熺粍浠跺彂閫佹秷鎭?/p>