10

Sto scrivendo un gioco 3D a tutto schermo e ho creato un menu in cui l'utente può selezionare la risoluzione dello schermo per adattarla alla sua capacità hardware.Distinguere tra il panning e le normali modalità di schermo nel codice - Windows

sto enumerare tutte le modalità di schermo disponibili con EnumDisplaySettingsExA come questo:

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

Il problema è, io sono sempre Panning-modalità, come pure! Non riesco a distinguere quali sono quali; ad esempio il mio laptop ATI ha una modalità normale massima di 1280x800, ma contiene anche una modalità panoramica di 1024x600!

Qualcuno conosce un modo per distinguere tra il 2, quindi posso rifiutare le modalità di panoramica dal mio menu?

+2

BTW, i campi dmPanningWidth e Height di DEVMODEA sono inutili, restituiscono sempre 0. –

+0

Che cosa intendete per panning-mode? Quando EnumDisplaySettingsEx restituisce 1024x600, ciò significa che l'utente di Windows può modificare le impostazioni di visualizzazione del video con quella risoluzione e probabilmente anche il monitor lo supporterà. –

+2

@Chris: si riferisce a una risoluzione che non è supportata dal monitor, in genere perché è troppo grande, ma viene emulata dalla scheda grafica visualizzando solo una parte del desktop sullo schermo alla volta; spostando il mouse sul bordo dello schermo, lo si "scorrerà" per mostrare altre parti del desktop. –

risposta

1

@ Martin: Sto indovinando l'OP solo mettere le res nell'ordine sbagliato.

È this link su cosa stai cercando?

Sembra che sia il modo corretto per ottenere le dimensioni in pixel di uno schermo in Windows.

+0

Questa è una funzione .NET. Impossibile trovare l'equivalente per C++ ... –

+0

@Bill Kotsias - Questa funzione utilizza le funzioni di monitoraggio di Windows sottostanti come EnumDisplayMonitors, GetMonitorInfo o MonitorForWindow, ma non sono sicuro che possa esserti d'aiuto. –

Problemi correlati