当前位置: 代码迷 >> 综合 >> windows屏幕分辨率获取方式
  详细解决方案

windows屏幕分辨率获取方式

热度:30   发布时间:2023-10-31 05:57:26.0

方法一:MonitorFromWindow

// 使用桌面的句柄.
HWND hWnd = ::GetDesktopWindow();
// 获取窗口当前显示的监视器
HMONITOR hMonitor = ::MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
// 获取监视器逻辑宽度与高度
MONITORINFOEX miex;
miex.cbSize = sizeof(miex);
GetMonitorInfo(hMonitor, &miex);
int cxLogical = (miex.rcMonitor.right - miex.rcMonitor.left);
int cyLogical = (miex.rcMonitor.bottom - miex.rcMonitor.top);

方法二:SystemParametersInfo

RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, SPIF_SENDCHANGE);
int client_width = (rect.right - rect.left);
int client_height = (rect.bottom - rect.top);

方法三:GetSystemMetrics

// 带标题栏和菜单栏
int have_menu_bar_width = GetSystemMetrics(SM_CXSCREEN);
int have_menu_bar_height = GetSystemMetrics(SM_CYSCREEN);
// 不带菜单栏的大小
int no_menu_bar_width = GetSystemMetrics(SM_CXFULLSCREEN);
int no_menu_bar__height = GetSystemMetrics(SM_CYFULLSCREEN);

方法四:GetDeviceCaps

HDC hdc = ::GetDC(NULL);
int client_width = GetDeviceCaps(hdc, DESKTOPHORZRES);
int client_height = GetDeviceCaps(hdc, DESKTOPVERTRES);
::ReleaseDC(NULL, hdc);

方法五:GetWindowRect

HWND hd = ::GetDesktopWindow();
RECT rect;
::GetWindowRect(hd, &rect);
int window_width = (rect.right - rect.left);
int window_height = (rect.bottom - rect.top);

  相关解决方案