windows程式設計之定義視窗控制代碼

2021-10-01 13:22:44 字數 1375 閱讀 9671

hwnd         hwnd ;

什麼叫做控制代碼呢?

控制代碼最原始的定義為typedef void *handle;

就是乙個指標,在32位windows中占用4個位元組 ,它指向記憶體的大小由它的型別決定。函式用控制代碼來傳遞資料。控制代碼在winnt.h中是這麼定義的:

#ifdef  strict

typedef void *handle; 這就是handle的定義

#define declare_handle(name) struct name##__ ;

typedef struct name##__ *name

#else

typedef pvoid handle;

#define declare_handle(name) typedef handle name

#endif

typedef handle *phandle;

strict修飾符的意思是變數型別是否要求嚴格定義。在這裡,我們可以看到handle其實就是乙個void型別的指標。這樣有什麼用呢?學過c/c++語言的人都知道,void型別的指標可以通過強制型別轉換變為任何型別的指標,使用最靈活。在很多情況下,控制代碼是乙個物件的指標,或者說是位址,乙個物件的位址。比如對於分配的乙個記憶體塊(物件),它的控制代碼就是它的首位址,這沒什麼問題。但是這並不總是成立的,對於沒有物件意義的控制代碼尤其如此。這就取決與系統的定義了。比如系統鉤子的型別hhook,說它是位址就沒有任何意義。對於視窗控制代碼也是如此。在這些情況下,我們可以把控制代碼理解為某事物在系統該類事物列表中的id。   

下面是windows應用程式的常用控制代碼型別:

控制代碼型別

說明控制代碼型別

說明handle

一般控制代碼型別

hicon

圖示控制代碼型別

hwnd

視窗控制代碼型別

hcursor

游標控制代碼型別

hinstance

程式例項控制代碼

hbrush

畫刷控制代碼型別

hdc裝置描述控制代碼

hpen

畫筆控制代碼型別

hmenu

選單控制代碼型別

hfont

字型控制代碼型別

hbitmap

位圖控制代碼型別

hfile

檔案控制代碼型別

最基本的控制代碼定義為handle 其實就是void*型別或者是int 型別。

所對應的視窗物件類來建立乙個視窗,並將該視窗的控制代碼返回。

注意視窗控制代碼和應用程式控制代碼是有區別的。

視窗控制代碼是使用者介面,即介面的控制代碼,使用者可以通過這個控制代碼來控制介面的輸入或輸出。比如從介面獲得控制項的輸入值,或在介面上繪製圖形等。

而應用程式例項控制代碼是控制整個應用程式的。

C Windows程式設計之建立視窗

windows程式設計之註冊視窗類介紹了註冊視窗類。接下來就是建立窗體。我們用visual studio建立乙個win32專案上會自動生成乙個建立窗體函式。如下 函式 initinstance hinstance,int 目的 儲存例項控制代碼並建立主視窗 注釋 在此函式中,我們在全域性變數中儲存例...

Windows程式設計之時間

查msdn可以看到,windows中的時間分為以下幾類 format type description system systemtime year,month,day,hour,second,and millisecond,taken from the internal hardware cloc...

Windows 程式設計之服務 2

除了系統定義的五種控制碼外 還有一種是 service control shutdown 使用者還可自定義控制碼,其取值範圍是128 255。使用者可以通過控制面板中的服務 項向特定服務程式的控制處理函式傳送控制碼,程式設計師可以呼叫系統函式 controlservice 直接向服務程式的控制處理函...