視窗註冊類結構和訊息結構詳解

2021-09-06 02:57:35 字數 1644 閱讀 9598

本文介紹windows api中的視窗註冊類和訊息結構的相關知識。

wndclas***視窗註冊類:

結構體原型:

typedef struct

wndclas*** wndclas***, *pwndclas***;

引數詳解:

cbsize:

wndclas*** 的大小。我們可以用sizeof(wndclas***)來獲得準確的值。 

style:

從這個視窗類派生的視窗具有的風格。您可以用「or」操作符來把幾個風格或到一起。

lpfnwndproc:

視窗處理函式的指標。  

cbcl***tra:

指定緊跟在視窗類結構後的附加位元組數。  

cbwndextra:

指定緊跟在視窗事例後的附加位元組數。如果乙個應用程式在資源中用class偽指令註冊乙個對話方塊類時,則必須把這個成員設成dlgwindowextra。

hinstance:

本模組的事例控制代碼。

hicon:

圖示的控制代碼。

hcursor:

游標的控制代碼。

hbrbackground:

背景畫刷的控制代碼。

lpszmenuname:

指向選單的指標。

lpszclassname:

指向類名稱的指標。

hiconsm:

和視窗類關聯的小圖示。如果該值為null。則把hcursor中的圖示轉換成大小合適的小圖示。

wndclas*** 中最重要的成員莫過於lpfnwndproc了。字首 lpfn 表示該成員是乙個指向函式的長指標。在 win32中由於記憶體模式是 flat 型,所以沒有 near 或 far 的區別。每乙個視窗類必須有乙個視窗過程,當 windows 把屬於特定視窗的訊息傳送給該視窗時,該視窗的視窗類負責處理所有的訊息,如鍵盤訊息或滑鼠訊息。由於視窗過程差不多智慧型地處理了所有的視窗訊息迴圈,所 以您只要在其中加入訊息處理過程即可。

msg訊息結構如下:

typedef struct

tagmsg msg, *pmsg;

引數詳解:

hwnd:

所要傳送訊息到視窗的控制代碼。

message:

指定的訊息識別符號。應用程式只能用低位元組,系統用高位元組。

wparam:

lparam:

time:

標識傳送訊息的時間。

pt:當傳送訊息時標識滑鼠的游標位置。

wm_create訊息響應函式和wm_initdialog訊息響應函式之區別:

在響應wm_create訊息響應函式的時候,對話方塊及子控制項還未建立完成,亦是說只是通知系統說要開始建立視窗啦,這個訊息響應完之後,對話方塊和子控制項才開始建立。因此在此訊息響應函式中無法對控制項進行修改和初始化。

而wm_initdialog訊息響應函式是在程式執行時,當其對話方塊和子控制項全部建立完畢,將要顯示內容的時候傳送的訊息。因此可以在wm_initdialog訊息響應函式中新增對編輯框控制項的初始化和修改。

完畢。^_^

視窗抖動和類訊息提示視窗的實現

這兩個函式都用到了sleep函式,不過在windows裡面sleep函式是以毫秒為單位的,而在linux系統裡sleep是以秒為單位的,小弟在嵌入式試驗中有過教訓啊!下面我們看一段實現視窗抖動和訊息提示視窗的 上面的 裡面有幾個含函式還是要關注一下的。getsystemmetrics 該函式用於得到...

類關聯結構詳解

首先我們先寫兩個類 乙個是person類,乙個car類 現在我們來講解一下這兩個類的關係 首先乙個人可以有一輛車,現在假設這個車出車禍了我們能從這個車找到這個人,所以我們現在就引出了關聯這個概念 具體 反之我們也能根據人來查詢車的資訊,現在我們在加深一步類的複雜程度,現在我們這個張三有兩個兒子,張三...

物件 類和結構

物件具有以下特點 c 中使用的全都是物件,包括 windows 窗體和控制項。物件是例項化的 也就是說,物件是從類和結構所定義的模板中建立的。物件使用屬性 c 程式設計指南 獲取和更改它們所包含的資訊。物件通常具有允許它們執行操作的方法和事件。所有 c 物件都繼承自 object。類具有以下特點 類...