窗口類參數的意義

要WinMain登記窗口類,首先要填寫一個WNDCLASS結構,其定義如下所示:

   typedef struct _WNDCLASSA

   {

     UINT style ;         //窗口類風格

     WNDPROC lpfnWndProc ;    //指向窗口過程函數的指針

     int cbClsExtra ;       //窗口類附加數據

     int cbWndExtra ;       //窗口附加數據

     HINSTANCE hInstance ;    //擁有窗口類的實例句柄

     HICON hIcon ;        //最小窗口圖標

     HCURSOR hCursor ;      //窗口內使用的光標

     HBRUSH hbrBackground ;   //用來着色窗口背景的刷子

     LPCSTR lpszMenuName ;    //指向菜單資源名的指針

     LPCSTR lpszClassName ;   // 指向窗口類名的指針

   }

其中參數的意義如下:

(1)第一個參數:成員style控制窗口的某些重要特性,在WINDOWS.H中定義了一些前綴爲CS的常量,在程序中可組合使用這些常量.也可把sytle設爲0.本程序中爲wc.style = CS_HREDRAW | CS_VREDRAW,它表示當窗口的縱橫座標發生變化時要重畫整個窗口。你看:無論你怎樣拉動窗口的大小,那行字都會停留在窗口的正中部,而假如把這個參數設爲0的話,當改動窗口的大小時,那行字則不一定處於中部了。

(2)第二個參數:lpfnWndProc包括一個指向該窗口類的消息處理函數的指針,此函數稱爲窗口過程函數。它將接收Windows發送給窗口的消息,並執行相應的任務。其原型爲:

long FAR PASCAL WndProc(HWND ,unsigned,WORD,LONG);並且必須在模快定義中回調它。WndProc是一個回調函數(見第五節),如果暫時無法理解這個模糊的概念意味着什麼,可先放過,等到講消息循環時再詳談。

(3)第三,四個參數:cbWndExtra域指定用本窗口類建立的所有窗口結構分配的額外字節數。當有兩個以上的窗口屬於同一窗口類時,如果想將不同的數據和每個窗口分別相對應。則使用該域很有用。這般來講,你只要把它們設爲0就行了,不必過多考慮。

(4)第五個參數:hInstance域標識應用程序的實例hInstance,當然,實例名是可以改變的。wc.hInstance = hInstance ;這一成員可使Windows連接到正確的程序。

(5)第六個參數:成員hIcon被設置成應用程序所使用圖標的句柄,圖標是將應用程序最小化時出現在任務欄裏的的圖標,用以表示程序仍駐留在內存中。Windows提供了一些默認圖標,我們也可定義自己的圖標,VC裏面專有一個製作圖標的工具。

(6)第七個參數: hCursor域定義該窗口產生的光標形狀。LoadCursor可返回固有光標句柄或者應用程序定義的光標句柄。IDC_ARROW表示箭頭光標.

(7)第八個參數:wc.hbrBackground域決定Windows用於着色窗口背景的刷子顏色,函數GetStockObject返回窗口的顏色,本程序中返回的是白色,你也可以把它改變爲紅色等其他顏色.試試看

(8)第九個參數:lpszMenuName用來指定菜單名,本程序中沒有定義菜單,所以爲NULL。

(9)第十個參數:lpszClassName指定了本窗口的類名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章