EnumDisplayMonitors Rückruf
Ich versuche, mithilfe der EnumDisplayMonitors ein dynamisches Array für jeden Monitor zu erstellen und die DISPLAY_DEVICE-Struktur zu speichern. Warum ist der unten stehende Code nicht korrekt?
BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
MONITORINFOEX iMonitor;
iMonitor.cbSize = sizeof(MONITORINFOEX);
GetMonitorInfo(hMonitor, &iMonitor);
if (iMonitor.dwFlags == DISPLAY_DEVICE_MIRRORING_DRIVER)
{
return true;
}
else
{
*reinterpret_cast<ScreenArray*>(dwData) = ScreenArray(&iMonitor);
return true;
};
}
Mit @ angeruf
ScreenArray monitorArray[15];
int i = 0;
EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, reinterpret_cast<LPARAM>(&monitorArray[i++]));
Der erste im Array (monitorArray [0]) gibt die korrekten Informationen für den zweiten Monitor zurück, aber monitorArray [1] enthält die Maximalwerte.
EDIT: Gelöst Die von mir verwendete Methode implementierte nur eine von mir erstellte Funktion:
MonitorArray *mA = reinterpret_cast<MonitorArray*>(dwData);
mA->addScreen(&iMonitor);