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 直接向服務程式的控制處理函...