句柄HWND数据类型

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

1、

HWND

2、

#ifndef WIN_INTERNAL
DECLARE_HANDLE            (HWND);  //<-这里
DECLARE_HANDLE            (HHOOK);
#ifdef WINABLE
DECLARE_HANDLE            (HEVENT);
#endif
#endif

3、

#ifdef STRICT          //#ifndef STRICT
                       //#define STRICT 1  
                       //#endif
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name //<-这里
#else
typedef PVOID HANDLE;      //typedef void *PVOID;
#define DECLARE_HANDLE(name) typedef HANDLE name //<-这里
#endif
typedef HANDLE *PHANDLE;

整理一下

struct HWND__ { 

    int unused ;

};

typedef struct HWND__ *HWND;

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

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

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

你可能感兴趣的:(mfc,hwnd)