本文介紹windows api中的視窗註冊類和訊息結構的相關知識。
wndclas***視窗註冊類:
結構體原型:
typedef structwndclas*** 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 structtagmsg 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。類具有以下特點 類...