2011-12-31 31 views
23

Duplicar posible:
How to get the Monitor Screen Resolution from an hWnd?¿Cómo obtener resolución de pantalla en C++?

¿Hay una manera de conseguir la resolución de la pantalla en C++?
He buscado en MSDN pero sin suerte. Lo más parecido que encontré fue ChangeDisplaySettingsEx(), pero parece que no tiene forma de devolver las imágenes sin cambiarlas.

+1

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

+0

Ok, uno de las respuestas a esa pregunta funcionó. ('GetSystemMetrics()') Marcando como duplicado –

Respuesta

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

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

+2

¿Funciona esto con múltiples monitores? –

+0

He aquí cómo hacerlo con varios monitores (en las respuestas): http://stackoverflow.com/questions/4631292/how-detect-current-screen-resolution – eboix

+1

+1 para obtener una solución única. Nunca pensé en hacerlo de esa manera –

0

En Embarcadero constructor de C++ se puede conseguir como esto

Screen->Height; 
Screen->Width; 

Esto es específico para el marco VCL que se suministra con los productos de Embarcadero: C++ Builder, Delphi.

+1

Esta respuesta se aplica a otros compiladores de Embarcadero, como Delphi (es decir, width: = Screen.Width;). El OP no fue explícito en cuanto a la plataforma o el compilador específico, por lo que esta respuesta no es incorrecta (se especificó que era específico de Embarcadero). – AlainD

Cuestiones relacionadas