Я ищу перечислить все дисплеи, подключенные к конкретному видеоадаптеру. Я успешно получаю информацию о видеоадаптере и создаю HDC
от этого, но когда я звоню EnumDisplayMonitors
на что HDC
, Ничего не произошло. EnumDisplayMonitors
будет хорошо работать, если я позвоню NULL
как HDC.
win32_root.cpp
for (int i = 0;; ++i) {
DISPLAY_DEVICE dd = { 0 };
dd.cb = sizeof(DISPLAY_DEVICE);
if (!EnumDisplayDevices(NULL, i, &dd, 0)) {
break;
}
if (dd.StateFlags & DISPLAY_DEVICE_ACTIVE) {
adapters.push_back(new Mage::Adapter(dd));
}
}
win32_display.cpp
Mage::Adapter::Adapter(DISPLAY_DEVICE dd)
: device(dd)
{
this->context = CreateDC(L"DISPLAY", device.DeviceName, NULL, NULL);
EnumDisplayMonitors(this->context, NULL, MonitorEnumProc, (LPARAM)&(this->displays));
В результате моя функция обратного вызова вообще не вызывается. изменения this->context
в NULL
Перечислим все дисплеи, прикрепленные к моему компьютеру. Кроме того, это правильно перечисляет дисплеи на адаптере, но мне особенно нужны дисплеи HMONITOR
структура:
if (!EnumDisplayDevices(device.DeviceName, i, &dm, 0)) {
return;
}
Как правильно перечислить дисплеи / мониторы по конкретному DISPLAY_DEVICE
?
Задача ещё не решена.