解釋一下Windows的消息機(jī)制_第1頁
解釋一下Windows的消息機(jī)制_第2頁
解釋一下Windows的消息機(jī)制_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、解釋一下 Windows 的消息機(jī)制Windows 是一個(gè)消息(Message)驅(qū)動(dòng)系統(tǒng)。Windows 的消息 提供了應(yīng)用程序之間、應(yīng)用程序與Windows系統(tǒng)之間進(jìn)行通信的手 段。應(yīng)用程序想要實(shí)現(xiàn)的功能由消息來觸發(fā), 并且靠對(duì)消息的響應(yīng)和 處理來完成。Windows 系統(tǒng)中有兩種消息隊(duì)列:系統(tǒng)消息隊(duì)列和應(yīng)用程序 消息隊(duì)列。計(jì)算機(jī)的所有輸入設(shè)備由 Windows監(jiān)控。當(dāng)一個(gè)事件發(fā) 生時(shí),Windows先將輸入的消息放入系統(tǒng)消息隊(duì)列中,再將消息拷 貝到相應(yīng)的應(yīng)用程序消息隊(duì)列中。應(yīng)用程序的消息處理程序?qū)⒎磸?fù)檢 測(cè)消息隊(duì)列,并把檢測(cè)到的每個(gè)消息發(fā)送到相應(yīng)的窗口函數(shù)中。這便是一個(gè)事件從發(fā)生至到達(dá)窗口

2、函數(shù)必須經(jīng)歷的過程。必須注意的是,消息并非是搶占性的,無論事件的緩急,總是i按照到達(dá)的先后派對(duì),依次處理(一些系統(tǒng)消息除外),這樣可能使一 些實(shí)時(shí)外部事件得不到及時(shí)處理。Windows 中的消息是放在對(duì)應(yīng)的進(jìn)程的消息隊(duì)列里的??梢?通過GetMessage取得,并且對(duì)于一般的消息,此函數(shù)返回非零值, 但是對(duì)于 WM_QUIT消息,返回零??梢酝ㄟ^這個(gè)特征,結(jié)束程序。 當(dāng)取得消息之后,應(yīng)該先轉(zhuǎn)換消息,再分發(fā)消息。所謂轉(zhuǎn)換,就是把 鍵盤碼的轉(zhuǎn)換,所謂分發(fā),就是把消息分發(fā)給對(duì)應(yīng)的窗口,由對(duì)應(yīng)的 窗口處理消息,這樣對(duì)應(yīng)窗體的消息處理函數(shù)就會(huì)被調(diào)用。兩個(gè)函數(shù)可以實(shí)現(xiàn)這兩個(gè)功能:TranslateMess

3、age 和 DispatchMessage 。另外,需要注意,當(dāng)我們點(diǎn)擊窗口的關(guān)閉按鈕關(guān)閉窗口時(shí),程 序并沒有自動(dòng)退出,而是向程序發(fā)送了一個(gè) WM_DESTROY消息(其 實(shí)過程是這樣的,首先向程序發(fā)送 WM_CLOSE消息,默認(rèn)的處理程 序是調(diào)用DestroyWindow 銷毀窗體,從而引發(fā) WM_DESTROY消 息),此時(shí)在窗體中我們要響應(yīng)這個(gè)消息,如果需要退出程序,那么 就要向程序發(fā)送 WM_QUIT消息(通過PostQuitMessage 實(shí)現(xiàn))。一 個(gè)窗體如果想要調(diào)用自己的消息處理函數(shù),可以使用SendMessage向自己發(fā)消息。如上所述,大部分(注意是大部分)的消息是這樣傳遞的:

4、首先 放到進(jìn)程的消息隊(duì)列中,之后由 GetMessage取出,轉(zhuǎn)換后,分發(fā) 給對(duì)應(yīng)的窗口。這種消息成為存儲(chǔ)式消息。存儲(chǔ)式消息基本上是使用 者輸入的結(jié)果,以擊鍵(如 WM_KEYDOWN 和 WM_KEYUP訊息)、 擊鍵產(chǎn)生的字符(WM_CHAR)、鼠標(biāo)移動(dòng)(WM_MOUSEMOVE)和鼠 標(biāo)按鈕(WM_LBUTTONDOWN)的形式給出。存儲(chǔ)式消息還包含時(shí)鐘 消息(WM_TIMER)、更新消息(WM_PAINT)和退出消息 (WM_QUIT)。但是也有的消息是直接發(fā)送給窗口的,它們被稱為非存儲(chǔ)式消 息。例如,當(dāng) WinMain 調(diào)用 CreateWindow 時(shí),Windows 將建 立窗口并在處理中給窗口消息處理函數(shù)發(fā)送一個(gè)WM_CREATE消息。當(dāng) WinMain 調(diào)用 ShowWindow 時(shí),Windows 將給窗口消息 處理函數(shù)發(fā)送 WM_SIZE 和 WM_SHOWWIND

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論