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);

Antworten auf die Frage(2)

Ihre Antwort auf die Frage