10

Ich schreibe ein Vollbild-3D-Spiel und ich habe ein Menü erstellt, in dem der Benutzer die Bildschirmauflösung auswählen kann, um seine Hardware-Kapazität anzupassen.Unterscheide zwischen Panning und normalen Bildschirmmodi im Code - Windows

ich alle verfügbaren Darstellungsmodi mit EnumDisplaySettingsExA wie dies am aufzählt:

std::vector<DEVMODEA> modes; 
DEVMODEA modeInfo; 
int modeNum = -1; 
while (EnumDisplaySettingsExA(0, ++modeNum, &modeInfo, 0)) { 
    if (modeInfo.dmBitsPerPel < 16) continue; 
    modes.push_back(modeInfo); 
} 

Das Problem ist, ich bin immer Panning-Modi, wie gut! Ich kann nicht unterscheiden, welche welche sind; zum Beispiel hat mein ATI Laptop einen maximalen Normalmodus von 1280x800, aber enthält auch einen Panning-Modus von 1024x600!

Wer kennt eine Möglichkeit, zwischen den 2 zu unterscheiden, damit ich Schwenk-Modi von meinem Menü ablehnen kann?

+2

BTW, die Felder dmPanningWidth und Height von DEVMODEA sind nutzlos, sie geben immer 0 zurück. –

+0

Was meinen Sie mit Panning-Modus? Wenn EnumDisplaySettingsEx 1024x600 zurückgibt, bedeutet dies, dass der Windows-Benutzer die Videoanzeigeeinstellungen auf diese Auflösung ändern kann, und der Monitor wird dies wahrscheinlich ebenfalls unterstützen. –

+2

@Chris: Es bezieht sich auf eine Auflösung, die vom Monitor nicht unterstützt wird, normalerweise weil sie zu groß ist, aber von der Grafikkarte emuliert wird, indem jeweils nur ein Teil des Desktops auf dem Bildschirm angezeigt wird; Bewegen Sie die Maus an den Rand des Bildschirms "schwenken" es um andere Teile des Desktops zu zeigen. –

Antwort

1

@Martin: Ich schätze das OP nur die Res in der falschen Reihenfolge.

Ist this link über das, was Sie suchen?

Es scheint, als ob es die richtige Methode ist, um die Pixelgröße eines Bildschirms in Windows zu erhalten.

+0

Dies ist eine .NET-Funktion. Kann nicht Entsprechung für C++ finden ... –

+0

@Bill Kotsias - Diese Funktion verwendet zugrunde liegende Windows-Monitore Funktionen wie EnumDisplayMonitors, GetMonitorInfo oder MonitorForWindow, aber ich bin mir nicht sicher, es wird Ihnen helfen. –