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文档清楚地列出了它可以关闭的句柄。