Windows下用GetSystemMetrics获取主显示器分辨率;2. 多显示器可用EnumDisplayMonitors结合GetMonitorInfo;3. 跨平台可选SDL2、GLFW或Qt库。

在C++中获取显示器屏幕分辨率,主要依赖操作系统提供的API。Windows平台下最常用的方法是使用Win32 API中的GetSystemMetrics函数,简单高效。
使用GetSystemMetrics获取分辨率
该函数可以获取系统各类度量值,其中SM_CXSCREEN和SM_CYSCREEN分别代表屏幕的宽度和高度(像素单位)。
示例代码:
#include#include int main() { int width = GetSystemMetrics(SM_CXSCREEN); int height = GetSystemMetrics(SM_CYSCREEN); std::cout << "屏幕分辨率: " << width << "x" << height << std::endl; return 0; }
编译运行后即可输出当前主显示器的分辨率。
立即学习“C++免费学习笔记(深入)”;
获取多显示器环境下的分辨率
如果系统连接了多个显示器,可以使用EnumDisplayMonitors配合GetMonitorInfo来逐个获取每个显示器的分辨率信息。
关键步骤:
- 调用
EnumDisplayMonitors枚举所有显示器 - 在回调函数中使用
GetMonitorInfo获取每个显示器的矩形区域(rcMonitor) - 从矩形数据中提取宽度和高度
这种方式适合需要精确控制多屏显示的应用场景。
跨平台考虑
上述方法仅适用于Windows系统。若项目需跨平台支持(如Linux或macOS),可借助第三方库:
-
SDL2:使用
SDL_GetDesktopDisplayMode -
GLFW:调用
glfwGetVideoMode -
Qt:通过
QScreen::availableGeometry获取
这些库封装了不同系统的底层调用,便于统一处理。
基本上就这些。Windows下直接用GetSystemMetrics最快,复杂需求再考虑枚举显示器或多平台方案。不复杂但容易忽略头文件包含和链接设置。











