从 CreateWindow() 返回的 HWND 的格式值是多少?

问题描述

这是 32 位机器上(理论上)2^32-1 的内存地址吗? 我想知道的原因是我试图以某种方式将 CreateWindow() 返回的 HWND 与类实例相关联,所以为了知道如何正确存储该 HWND 值,我需要知道这些值是什么,所以我可以看到什么更适合,AA 数组,带有哈希表的链表等等。

解决方法

From the documentation for MFC(为避免混淆:这是文档,其中文章中的 CWnd 和“window object”是您的中的 C++ 类程序,而不是 USER32):

另一方面,Windows 窗口 is an opaque handle 到一个内部 Windows 数据结构,该数据结构对应于一个窗口并在存在时消耗系统资源。

不透明句柄必须被视为“黑匣子”或原子团,不得更改,也可能不会通过内省显示任何有用的信息。

另请参阅维基百科:https://en.wikipedia.org/wiki/Handle_(computing)

,

要存储一个值,你只需要知道它的类型。如 Windows Data Types 所述,HWNDHANDLE 的类型别名,PVOIDvoid* 的类型别名,而 HWND 又是 {{1}} 的类型别名}}。

换句话说:{{1}} 是指向未知数据的指针。它是指针大小的并且可以简单地复制。