句柄HWND数据类型

来源:岁月联盟 编辑:exp 时间:2012-07-09

在VC++6中使用右键转至定义一步一步查看HWND

1、

1
HWND
2、
1
#ifndef WIN_INTERNAL
2
DECLARE_HANDLE            (HWND);  //<-这里
3
DECLARE_HANDLE            (HHOOK);
4
#ifdef WINABLE
5
DECLARE_HANDLE            (HEVENT);
6
#endif
7
#endif
3、

01
#ifdef STRICT          //#ifndef STRICT
02
                       //#define STRICT 1
03
                       //#endif
04
typedef void *HANDLE;
05
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name //<-这里
06
#else
07
typedef PVOID HANDLE;      //typedef void *PVOID;
08
#define DECLARE_HANDLE(name) typedef HANDLE name //<-这里
09
#endif
10
typedef HANDLE *PHANDLE;
整理一下

struct HWND__ {

    int unused ;

};

typedef struct HWND__ *HWND; www.2cto.com

所以HWND应该是一个 HWND__型指针,而HWND__是一个包含一个int型数据结构的结构体。

只有在STRICT未定义的情况下 HWND 才是一个void指针。

PS:不过STRICT未定义的情况还不太了解。


作者:TMDJoJo