Нужно ли освобождать какие-либо из этих дескрипторов перед возвратом из функции обратного вызова?
Нет, если только в документе явно не указано, что такое освобождение, как GetWindowDC
функция: После завершения рисования необходимо вызвать функцию ReleaseDC
, чтобы освободить контекст устройства.
Могу ли я сохранитьих для дальнейшего использования?
Вообще-то да.Физический дисплей имеет тот же HMONITOR
, если он является частью рабочего стола.При отправке сообщения WM_DISPLAYCHANGE
любой монитор может быть удален с рабочего стола, поэтому его HMONITOR
становится недействительным или его настройки изменяются.Поэтому приложение должно проверять, все ли HMONITOR
действительны при отправке этого сообщения. Дескриптор
HDC
относится к EnumDisplayMonitors
, и его жизненный цикл зависит от параметра HDC
в EnumDisplayMonitors
.