EnumDisplayMonitors 的 MONITORENUMPROC 回调中显示的句柄的可用性

Availability of handles presented in MONITORENUMPROC callback of EnumDisplayMonitors

EnumDisplayMonitorsMONITORENUMPROC回调函数给了我两个句柄。一种类型 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参数。