EnumDisplayMonitors 的 MONITORENUMPROC 回调中显示的句柄的可用性
Availability of handles presented in MONITORENUMPROC callback of EnumDisplayMonitors
EnumDisplayMonitors
的MONITORENUMPROC
回调函数给了我两个句柄。一种类型 HMONITOR
和一种 HDC
.
HMONITOR
应该引用显示器。
HDC
是该监视器的设备上下文句柄。
我是否需要在从回调函数返回之前释放这些句柄中的任何一个?如果没有,他们会待多久?我可以保存它们以备后用吗?
Do I need to release any of those handles before returning from the
callback function?
不能,除非文档中明确说明要释放,比如必须调用GetWindowDC
function: After painting is complete, the ReleaseDC
函数才能释放设备上下文。
May I save them for later use?
一般来说,是的。只要物理显示器是桌面的一部分,它就具有相同的 HMONITOR
。当发送 WM_DISPLAYCHANGE
消息时,任何监视器都可能从桌面上删除,因此其 HMONITOR
变为无效或更改其设置。因此,应用程序应在发送此消息时检查所有 HMONITOR
是否有效。
HDC
句柄来自EnumDisplayMonitors
,其生命周期取决于EnumDisplayMonitors
中的HDC
参数。
EnumDisplayMonitors
的MONITORENUMPROC
回调函数给了我两个句柄。一种类型 HMONITOR
和一种 HDC
.
HMONITOR
应该引用显示器。HDC
是该监视器的设备上下文句柄。
我是否需要在从回调函数返回之前释放这些句柄中的任何一个?如果没有,他们会待多久?我可以保存它们以备后用吗?
Do I need to release any of those handles before returning from the callback function?
不能,除非文档中明确说明要释放,比如必须调用GetWindowDC
function: After painting is complete, the ReleaseDC
函数才能释放设备上下文。
May I save them for later use?
一般来说,是的。只要物理显示器是桌面的一部分,它就具有相同的 HMONITOR
。当发送 WM_DISPLAYCHANGE
消息时,任何监视器都可能从桌面上删除,因此其 HMONITOR
变为无效或更改其设置。因此,应用程序应在发送此消息时检查所有 HMONITOR
是否有效。
HDC
句柄来自EnumDisplayMonitors
,其生命周期取决于EnumDisplayMonitors
中的HDC
参数。