2011-12-31 18 views
23

Eventuali duplicati:
How to get the Monitor Screen Resolution from an hWnd?Come ottenere la risoluzione dello schermo in C++?

C'è un modo per ottenere la risoluzione dello schermo in C++?
Ho cercato MSDN ma senza fortuna. La cosa più vicina che ho trovato è stata ChangeDisplaySettingsEx() ma questo non sembra avere un modo di restituire la res senza cambiarla.

+1

correlati: http://stackoverflow.com/questions/2156212/how-to-get-the-monitor-screen-resolution-from-an-hwnd – Mat

+0

Ok, uno delle risposte a quella domanda ha funzionato. ('GetSystemMetrics()') Segnala come duplicato –

risposta

45
#include "wtypes.h" 
#include <iostream> 
using namespace std; 

// Get the horizontal and vertical screen sizes in pixel 
void GetDesktopResolution(int& horizontal, int& vertical) 
{ 
    RECT desktop; 
    // Get a handle to the desktop window 
    const HWND hDesktop = GetDesktopWindow(); 
    // Get the size of screen to the variable desktop 
    GetWindowRect(hDesktop, &desktop); 
    // The top left corner will have coordinates (0,0) 
    // and the bottom right corner will have coordinates 
    // (horizontal, vertical) 
    horizontal = desktop.right; 
    vertical = desktop.bottom; 
} 

int main() 
{  
    int horizontal = 0; 
    int vertical = 0; 
    GetDesktopResolution(horizontal, vertical); 
    cout << horizontal << '\n' << vertical << '\n'; 
    return 0; 
} 

Fonte: http://cppkid.wordpress.com/2009/01/07/how-to-get-the-screen-resolution-in-pixels/

+2

Funziona con più monitor? –

+0

Ecco come farlo con più monitor (nelle risposte): http://stackoverflow.com/questions/4631292/how-detect-current-screen-resolution – eboix

+1

+1 per una soluzione unica. Non ho mai pensato di farlo in questo modo –

0

In Embarcadero C++ Builder è possibile ottenere in questo modo

Screen->Height; 
Screen->Width; 

Questo è specifico per VCL quadro che viene fornito con Embarcadero prodotti: C++ Builder, Delphi.

+1

Questa risposta si applica ad altri compilatori Embarcadero, come Delphi (cioè larghezza: = Screen.Width;). L'OP non era esplicito per quanto riguarda la piattaforma o il compilatore di destinazione, quindi questa risposta non è sbagliata (è stato specificato che era specifico per Embarcadero). – AlainD

Problemi correlati