Devolución de llamada de EnumDisplayMonitors
Estoy tratando de usar los EnumDisplayMonitors para crear una matriz dinámica de cada monitor y almacenar la estructura DISPLAY_DEVICE. ¿Por qué el código siguiente no es correcto?
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;
};
}
Llamado usando
ScreenArray monitorArray[15];
int i = 0;
EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, reinterpret_cast<LPARAM>(&monitorArray[i++]));
El primero en la matriz (monitorArray [0]) devuelve información correcta para el segundo monitor, pero monitorArray [1] tiene valores máximos.
EDITAR: Resuelto El método que utilicé fue simplemente implementar una función que creé:
MonitorArray *mA = reinterpret_cast<MonitorArray*>(dwData);
mA->addScreen(&iMonitor);