資源描述:
《windows消息機(jī)制》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、windows消息機(jī)制消息本身是作為一個記錄傳遞給應(yīng)用程序的,這個記錄中包含了消息的類型以及其他信息。例如,對于單擊鼠標(biāo)所產(chǎn)生的消息來說,這個記錄中包含了單擊鼠標(biāo)時的坐標(biāo)。?基于windows的應(yīng)用程序是基于事件驅(qū)動的。他們不會顯式地調(diào)用函數(shù)獲得輸入,而是等待操作系統(tǒng)把輸入傳給應(yīng)用程序。一個消息從產(chǎn)生到被一個窗口響應(yīng),其中有5個步驟: 1)系統(tǒng)中發(fā)生了某個事件。 2)Windows把這個事件翻譯為消息,然后把它放到消息隊(duì)列中?! ?)應(yīng)用程序從消息隊(duì)列中接收到這個消息,把它存放在TMsg記錄中?! ?)應(yīng)用程序把消息傳遞給一個適當(dāng)?shù)拇翱诘拇翱谶^程。
2、5)窗口過程響應(yīng)這個消息并進(jìn)行處理。一、消息類型消息主要分為兩種:一是系統(tǒng)定義消息;二是自定義消息。(1)系統(tǒng)定義消息?每一個系統(tǒng)定義消息都有一個唯一的消息標(biāo)識符和相對應(yīng)的符號常量(在系統(tǒng)SDK的頭文件中定義的),這些標(biāo)識符和常量代表著消息意圖。常量的前綴代表著可以解釋處理消息的窗口的類型,一般情況下,第一個字母為控件的頭一個字母,第二個字母是M的是消息(Message)常量,S是風(fēng)格(Style)常量,N是通知、事件(Notify)。下面列出系統(tǒng)定義消息的前綴所代表的消息類別的清單。PrefixMessagecategoryABM????Applicat
3、iondesktoptoolbar?BM?????Buttoncontrol?CB?????Comboboxcontrol?CBEM???ExtendedcomboboxcontrolCDM????Commondialogbox?DBT????Device?DL?????Draglistbox?DM?????Defaultpushbuttoncontrol?DTM????DateandtimepickercontrolEM?????Editcontrol?HDM????Headercontrol?HKM????HotkeycontrolIPM????IPa
4、ddresscontrolLB?????Listboxcontrol?LVM????Listviewcontrol?MCM????MonthcalendarcontrolPBM????Progressbar?PGM????PagercontrolPSM????Propertysheet?RB?????RebarcontrolSB?????Statusbarwindow?SBM????Scrollbarcontrol?STM????Staticcontrol?TB?????Toolbar?TBM????Trackbar?TCM????Tabcontrol?T
5、TM????Tooltipcontrol?TVM????Tree-viewcontrol?UDM????Up-downcontrolWM?????Generalwindow?在SDK中事先定義好的消息,非用戶定義的,其范圍在[0x0000,0x03ff]之間,還可以分為以下三類:1>窗口消息(WindowsMessage)與窗口的內(nèi)部運(yùn)作有關(guān),如創(chuàng)建窗口,繪制窗口,銷毀窗口等??梢允且话愕拇翱冢部梢允荄ialog,控件等。如:WM_CREATE,WM_PAINT,WM_MOUSEMOVE,WM_CTLCOLOR,WM_HSCROLL...2>命令消息(C
6、ommandMessage)與處理用戶請求有關(guān),如單擊菜單項(xiàng)或工具欄或控件時,就會產(chǎn)生命令消息。WM_COMMAND,LOWORD(wParam)表示菜單項(xiàng),工具欄按鈕或控件的ID。如果是控件,HIWORD(wParam)表示控件消息類型3>控件通知(NotifyMessage)控件通知消息,這是最靈活的消息格式,其Message,wParam,lParam分別為:WM_NOTIFY,控件ID,指向NMHDR的指針。NMHDR包含控件通知的內(nèi)容,可以任意擴(kuò)展。(2)程序定義消息用戶自定義的消息,對于其范圍有如下規(guī)定:WM_USER:0x0400-0x7FF
7、F(ex.WM_USER+10)WM_APP(winver>4.0):0x8000-0xBFFF(ex.WM_APP+4)RegisterWindowMessage:0xC000-0xFFFF?應(yīng)用程序定義消息的消息標(biāo)識符取值定義規(guī)則應(yīng)該遵循如下原則:??A.系統(tǒng)對0x0000到0x03ff(WM_USER-1)都保留為系統(tǒng)定義消息,因此應(yīng)用程序不能使用這些值來定義應(yīng)用程序定義消息。??B.取值范圍為0x0400(WM_USER)-0x7FFF,可以用來定義自定義消息的消息標(biāo)識符取值。??C.假如你的應(yīng)用程序是在4.0上的系統(tǒng)運(yùn)行,那么你可以使用0x800
8、0(WM_APP)-0xBFFF范圍的值作為私有消息的標(biāo)識符取值。