windows程序设计之定义窗口句柄
HWND ????????hwnd ;
什么叫做句柄呢?
句柄最原始的定義為typedef void *HANDLE;
就是一個指針,在32位windows中占用4個字節(jié)?,它指向內(nèi)存的大小由它的類型決定。函數(shù)用句柄來傳遞數(shù)據(jù)。句柄在winnt.h中是這么定義的:
#ifdef STRICT typedef void *HANDLE; 這就是HANDLE的定義 #define DECLARE_HANDLE(name) struct name##__ { int unused; };typedef struct name##__ *name #else typedef PVOID HANDLE; #define DECLARE_HANDLE(name) typedef HANDLE name #endif typedef HANDLE *PHANDLE;?STRICT修飾符的意思是變量類型是否要求嚴(yán)格定義。在這里,我們可以看到HANDLE其實就是一個void類型的指針。這樣有什么用呢?學(xué)過c/c++語言的人都知道,void類型的指針可以通過強制類型轉(zhuǎn)換變?yōu)槿魏晤愋偷闹羔?#xff0c;使用最靈活。在很多情況下,句柄是一個對象的指針,或者說是地址,一個對象的地址。比如對于分配的一個內(nèi)存塊(對象),它的句柄就是它的首地址,這沒什么問題。但是這并不總是成立的,對于沒有對象意義的句柄尤其如此。這就取決與系統(tǒng)的定義了。比如系統(tǒng)鉤子的類型HHOOK,說它是地址就沒有任何意義。對于窗口句柄也是如此。在這些情況下,我們可以把句柄理解為某事物在系統(tǒng)該類事物列表中的ID。???
下面是windows應(yīng)用程序的常用句柄類型:
| 句柄類型 | 說明 | 句柄類型 | 說明 |
| HANDLE | 一般句柄類型 | HICON | 圖標(biāo)句柄類型 |
| HWND | 窗口句柄類型 | HCURSOR | 光標(biāo)句柄類型 |
| HINSTANCE | 程序?qū)嵗浔?/p> | HBRUSH | 畫刷句柄類型 |
| HDC | 設(shè)備描述句柄 | HPEN | 畫筆句柄類型 |
| HMENU | 菜單句柄類型 | HFONT | 字體句柄類型 |
| HBITMAP | 位圖句柄類型 | HFILE | 文件句柄類型 |
最基本的句柄定義為HANDLE 其實就是void*類型或者是int 類型。
窗口句柄hwnd用于保存CreateWindow返回的窗口句柄。CreateWindow會根據(jù)應(yīng)用程序名szAppName所對應(yīng)的窗口對象類來創(chuàng)建一個窗口,并將該窗口的句柄返回。
注意窗口句柄和應(yīng)用程序句柄是有區(qū)別的。
窗口句柄是用戶接口,即界面的句柄,用戶可以通過這個句柄來控制界面的輸入或輸出。比如從界面獲得控件的輸入值,或在界面上繪制圖形等。
而應(yīng)用程序?qū)嵗浔强刂普麄€應(yīng)用程序的。
?
總結(jié)
以上是生活随笔為你收集整理的windows程序设计之定义窗口句柄的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非IT,零经验,零基础怎么备考信息系统项
- 下一篇: java信息管理系统总结_java实现科