Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 枚举窗口和关闭句柄_C_Windows_Winapi - Fatal编程技术网

C 枚举窗口和关闭句柄

C 枚举窗口和关闭句柄,c,windows,winapi,C,Windows,Winapi,我需要调用返回的句柄吗?我会说不。这是为了销毁您不再需要的东西。你没有调用CreateWindow我会说没有。那是为了销毁你不再需要的东西。您没有调用CreateWindow您只对内核32中函数返回的句柄使用CloseHandle()。它们是引用计数的,关闭最后一个句柄将销毁对象。文件、互斥体、事件之类的对象 窗口句柄不同,它们的生存期由用户决定。或程序中的显式DestroyWindow()调用。枚举窗口时,不希望调用DestroyWindow() GDI句柄是不同的,但它们通常有专用的释放函数

我需要调用返回的句柄吗?

我会说不。这是为了销毁您不再需要的东西。你没有调用
CreateWindow

我会说没有。那是为了销毁你不再需要的东西。您没有调用
CreateWindow

您只对内核32中函数返回的句柄使用CloseHandle()。它们是引用计数的,关闭最后一个句柄将销毁对象。文件、互斥体、事件之类的对象

窗口句柄不同,它们的生存期由用户决定。或程序中的显式DestroyWindow()调用。枚举窗口时,不希望调用DestroyWindow()

GDI句柄是不同的,但它们通常有专用的释放函数。CreatePen vs DeleteObject、GetDC vs ReleaseDC、CreateDC vs DeleteDC等。如有疑问,请始终咨询相应的创建函数,以了解如何再次释放它。SDK文档从未跳过这一点。这是以省略的方式记录的,EnumWindows文档没有说您需要释放句柄,所以您不需要


所以没有。

您只在内核32中的函数返回的句柄上使用CloseHandle()。它们是引用计数的,关闭最后一个句柄将销毁对象。文件、互斥体、事件之类的对象

窗口句柄不同,它们的生存期由用户决定。或程序中的显式DestroyWindow()调用。枚举窗口时,不希望调用DestroyWindow()

GDI句柄是不同的,但它们通常有专用的释放函数。CreatePen vs DeleteObject、GetDC vs ReleaseDC、CreateDC vs DeleteDC等。如有疑问,请始终咨询相应的创建函数,以了解如何再次释放它。SDK文档从未跳过这一点。这是以省略的方式记录的,EnumWindows文档没有说您需要释放句柄,所以您不需要


所以没有。

我希望答案有证据支持,随机猜测对我来说不够好。例如,关闭或不关闭窗口句柄是否会影响任何资源释放?
CloseHandle
适用于
handle
类型。窗口句柄的类型为
HWND
。这应该已经是一个强烈的暗示,你不应该把一个和另一个一起使用。@jamesdlin:这不明显-
HANDLE
有很多别名。@ivan_pozdeev,除了你通过
unhookwinowshookx
释放
HHOOK
HGLOBAL
通过
GlobalFree
释放
HLOCAL
通过
LocalFree
HPOWERNOTIFY
通过
UnregisterPowerSettingNotification
。当然,这些类型恰好是
typedef
ed到
HANDLE
引擎盖下的,但是这样对待它们会违反抽象。CloseHandle文档清楚地列出了它可以关闭的句柄。我希望答案有证据支持,随机猜测对我来说不够好。例如,关闭或不关闭窗口句柄是否会影响任何资源释放?
CloseHandle
适用于
handle
类型。窗口句柄的类型为
HWND
。这应该已经是一个强烈的暗示,你不应该把一个和另一个一起使用。@jamesdlin:这不明显-
HANDLE
有很多别名。@ivan_pozdeev,除了你通过
unhookwinowshookx
释放
HHOOK
HGLOBAL
通过
GlobalFree
释放
HLOCAL
通过
LocalFree
HPOWERNOTIFY
通过
UnregisterPowerSettingNotification
。当然,这些类型恰好是
typedef
隐藏在引擎盖下的
HANDLE
,但是这样对待它们将违反抽象。CloseHandle文档清楚地列出了它可以关闭的句柄。