評論(0

視窗訊息處理程式

標籤: 暫無標籤

WM_CREATE訊息是視窗訊息處理程式接收到的第一個訊息。在CreateWindow函式建立視窗時,Windows產生這個訊息。在處理WM_CREATE訊息時,SYSMETS1呼叫GetDC取得視窗的裝置內容,並呼叫GetTextMetrics取得內定系統字體的文字大小。SYSMETS1將平均字元寬度保具有cxChar中,將字元的分高度(包括外部間距)保具有cyChar中。

1 視窗訊息處理程式 -介紹

註冊視窗類別,建立視窗,然後在螢幕上顯示視窗,程式進入訊息迴圈,然後不斷從訊息佇列中取出訊息來處理。

實際的動作發生在視窗訊息處理程式中。視窗訊息處理程式確定了在視窗的顯示區域中顯示些什麼以及視窗怎樣回應使用者輸入。

2 視窗訊息處理程式 -說明

在HELLOWIN中,視窗訊息處理程式是命名為WndProc的函式。視窗訊息處理程式可任意命名(只要求不和其他名字發生衝突)。一個Windows程式可以包含多個視窗訊息處理程式。一個視窗訊息處理程式總是與呼叫RegisterClass註冊的特定視窗類別相關聯。CreateWindow函式根據特定視窗類別建立一個視窗。但依據一個視窗類別,可以建立多個視窗。

視窗訊息處理程式總是定義為如下形式:

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
注意,視窗訊息處理程式的四個參數與MSG結構的前四個欄位是相同的。第一個參數hwnd是接收訊息的視窗的代號,它與CreateWindow函式的傳回值相同。對於與HELLOWIN相似的程式(只建立一個視窗),這個參數是程式所知道的唯一視窗代號。如果程式是依據同一視窗類別(同時也是同一視窗訊息處理程式)建立多個視窗,則hwnd標識接收訊息的特定視窗。

第二個參數與MSG結構中的message欄位相同,它是標識訊息的數值。最後兩個參數都是32位元的訊息參數,提供關於訊息的更多資訊。這些參數包含每個訊息型態的詳細資訊。有時訊息參數是兩個存放在一起的16位元值,而有時訊息參數又是一個指向字串或資料結構的指標。

程式通常不直接呼叫視窗訊息處理程式,視窗訊息處理程式通常由Windows本身呼叫。通過呼叫SendMessage函式,程式能夠直接呼叫它自己的視窗訊息處理程式。我們將在後面的章節討論SendMessage函式。

上一篇[雀園]  

相關評論

同義詞:暫無同義詞