2011-12-31 41 views
23

thể trùng lặp:
How to get the Monitor Screen Resolution from an hWnd?Cách nhận độ phân giải màn hình bằng C++?

Có cách nào để có được độ phân giải màn hình trong C++?
Tôi đã tìm kiếm MSDN nhưng không có may mắn. Điều gần nhất tôi thấy là ChangeDisplaySettingsEx() nhưng điều đó dường như không có cách nào để chỉ trả lại độ phân giải mà không thay đổi nó.

+1

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

+0

Ok, một câu trả lời cho câu hỏi đó đã hiệu quả. ('GetSystemMetrics()') Gắn cờ là trùng lặp –

Trả lời

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

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

+2

Tính năng này có hoạt động với nhiều màn hình không? –

+0

Dưới đây là cách thực hiện với nhiều màn hình (trong câu trả lời): http://stackoverflow.com/questions/4631292/how-detect-current-screen-resolution – eboix

+1

+1 cho giải pháp duy nhất. Tôi không bao giờ nghĩ đến việc làm theo cách đó –

0

Trong Embarcadero C++ builder bạn có thể nhận được nó như thế này

Screen->Height; 
Screen->Width; 

Đây là cụ thể đối với khuôn khổ VCL mà được cung cấp với các sản phẩm Embarcadero: C++ Builder, Delphi.

+1

Câu trả lời này áp dụng cho các trình biên dịch Embarcadero khác, như Delphi (ví dụ: width: = Screen.Width;). OP không rõ ràng về nền tảng hoặc trình biên dịch được nhắm mục tiêu nên câu trả lời này không sai (rằng nó đã được chỉ rõ cho Embarcadero được chỉ định). – AlainD

Các vấn đề liên quan