?? d008.bmp.txt
字號:
該函數(shù)被稱為窗口函數(shù),其中定義了處理發(fā)送到該類的窗口對象的消息的方法。窗口函
數(shù)是一個回調(diào)函數(shù),所以在定義窗口函數(shù)時要使用CALLLBACK類型進行說明。參數(shù)hWnd
是一個窗口對象的句柄,一個窗口函數(shù)可以通過該句柄檢測出當前正在處理哪個窗口對象的
消息。參數(shù)message是消息標識符。參數(shù)wParam和lParam是隨同消息一起傳送來的參數(shù),
隨著消息的不同,這兩個參數(shù)所表示的含義也不大相同,在定義消息時對這兩個參數(shù)的含義
同時進行定義。
當程序員設(shè)置了WNDCLASS變量的各個域之后,使用函數(shù)RegisterClass向Windows
注冊這個類。至此,完成了定義一個窗口類的過程。函數(shù)RegisterClass的原型為:
BOOL RegistaClass(LPWNDCLASS lpWndClass);
該函數(shù)惟一的一個參數(shù)是指向WNDCLASS類型的變量的指針。函數(shù)返回非零,表示注
冊成功,否則注冊失敗。不能向Windows注冊具有相同名字(lpszClassName域指向相同的
兩個字符串)的兩個類,否則第二次注冊失敗并被忽略。
窗口的某些特征(如窗口的顏色等)屬于窗口類中定義的,并由該窗口類的所有實例英
享。在注冊了窗口類之后,程序員使用函數(shù)CreateWindow創(chuàng)建窗口,得到窗口類的一個實
例(一個窗口對象)的句柄。一個窗口可以是一個重疊式窗口,或是一個彈出式窗口,或是
一個隸屬窗口,或是一個子窗口,這也是在使用CreateWindow函數(shù)時指定的。每一個子窗
口都有一個父窗口,每一個隸屬窗口都有一個擁有者,這個擁有者是另一個窗口對象,而彈
出式窗口是一種特殊的窗口。
一個窗口對象所接受到的消息的響應(yīng)是由該對象的方法決定的,這些方法被定義在窗口
函數(shù)中。同一類的所有對象共用同一個窗口函數(shù)。窗口函數(shù)決定著對象如何用內(nèi)部方法對消
息作出響應(yīng),例如,如何在屏幕上畫出窗口自身。
一個最簡單的窗口函數(shù)為:
LRESULT CALLBACK WndProc(HWND hwnd, UNIT message, WPARAM wParam, LPARAM
IParam)
{
return DefWindowProc (hwnd, message, wParam,lParam);
}
該窗口函數(shù)通過調(diào)用Windows的函數(shù)DefWindowProc(默認窗口函數(shù)),讓W(xué)indows的
默認窗口函數(shù)來處理所有發(fā)送到窗口對象上的消息。
當用戶操作屏幕上的一個富口對象時(例如用戶改變了屏幕上窗口對象的位置或大?。?或發(fā)生其他事件時,該事件的消息被存于應(yīng)用程序的消息隊列中,消息循環(huán)首先從該隊列中
檢索出該消息,然后將消息發(fā)送到某個對象上。發(fā)送過程由Windows來控制,Windows根
據(jù)消息結(jié)構(gòu)中的hWnd域所指示的消息發(fā)送的目標對象,調(diào)用該對象所在類的窗口函數(shù)完成
消息的發(fā)送工作。窗口函數(shù)根據(jù)消息的種類,選擇執(zhí)行一段代碼(方法),對消息進行處理,
并通過return語句回送一個處理結(jié)果或狀態(tài)。消息循環(huán)、Windows和窗口函數(shù)協(xié)同配合,完
成一條消息的發(fā)送和處理。在處理完一條消息之后,如果應(yīng)用程序隊列中還有其他消息,則
繼續(xù)進行上述處理過程。否則,應(yīng)用程序產(chǎn)生的消息就在消息處理隊列中進行等待。
在窗口函數(shù)中,使用switch語句來判斷窗口函數(shù)接收到什么消息,通過執(zhí)行相應(yīng)的語句
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -