窗口句柄(HWND)是唯一的,还是被重用?

我在想如果有相同的价值处理?

为了澄清我的问题,比方说,我打开记事本,键入一些文本,保存它,然后closures记事本。 如果我重复这一千次(甚至更多),我是否有机会看到第一次使用的记事本主窗口使用相同的窗口句柄(HWND)值? 如果是这样,为什么?

Solutions Collecting From Web of "窗口句柄(HWND)是唯一的,还是被重用?"

是的,他们不可能是独一无二的。 实际上,Microsoft仍然保持与16位Windows的兼容性,因此句柄是16位值。 所以最多有65536个可能的句柄值。

是。 只有有限数量的值可以表示句柄,所以Windows必须最终重用它们。

一旦一个句柄关闭,它就不存在了,你不能做任何事情,它不存在,你甚至不应该看它。

如果您随后打开另一个句柄,那么Windows可能会重用句柄值。

我建议你绝对不要假设处理值。

所有的实际目的都不应该考虑具体的句柄值。 一个句柄应该被认为是另一个不透明的占位符。 你可以传递句柄来引用某个东西(比如一个窗口),而不需要引用真实的东西,但是你不应该再看看句柄本身 。 它是一个数值的事实应该被认为是一个实现细节,即。 不重要(除非你可能做某种低级别的系统编程)。

话虽如此,我会支持@ jalf的回答:处理值可以被重用。 如果我不得不对此做任何假设,我会假设一个句柄值可以随时被重用。

是的,窗口句柄被重用。

IsWindow函数的文档说:

一个线程不应该使用IsWindow来创建一个它没有创建的窗口,因为在这个函数被调用之后窗口可能被销毁。 而且,由于窗口句柄被回收,句柄甚至可以指向不同的窗口