Доступность дескрипторов, представленных в обратном вызове MONITORENUMPROC EnumDisplayMonitors - PullRequest
0 голосов
/ 05 июня 2019

Функция обратного вызова MONITORENUMPROC в EnumDisplayMonitors дает мне две ручки. Один из типов HMONITOR и один HDC.

  • HMONITOR должен ссылаться на монитор.
  • HDC - дескриптор контекста устройства этого монитора.

Нужно ли освобождать какие-либо из этих дескрипторов, прежде чем вернуться из функции обратного вызова? Если нет, то как долго они останутся? Могу ли я сохранить их для дальнейшего использования?

1 Ответ

0 голосов
/ 05 июня 2019

Нужно ли освобождать какие-либо из этих дескрипторов перед возвратом из функции обратного вызова?

Нет, если только в документе явно не указано, что такое освобождение, как GetWindowDC функция: После завершения рисования необходимо вызвать функцию ReleaseDC, чтобы освободить контекст устройства.

Могу ли я сохранитьих для дальнейшего использования?

Вообще-то да.Физический дисплей имеет тот же HMONITOR, если он является частью рабочего стола.При отправке сообщения WM_DISPLAYCHANGE любой монитор может быть удален с рабочего стола, поэтому его HMONITOR становится недействительным или его настройки изменяются.Поэтому приложение должно проверять, все ли HMONITOR действительны при отправке этого сообщения. Дескриптор

HDC относится к EnumDisplayMonitors, и его жизненный цикл зависит от параметра HDC в EnumDisplayMonitors.

...