共计 1242 个字符,预计需要花费 4 分钟才能阅读完成。
办法一:MonitorFromWindow
// 获取程序以后所在显示器的分辨率大小,能够动静的获取程序所在显示器的分辨率
SIZE GetScreenResolution(HWND hWnd) {
SIZE size;
if(!hWnd)
return size;
//MONITOR_DEFAULTTONEAREST 返回值是最靠近该点的屏幕句柄
//MONITOR_DEFAULTTOPRIMARY 返回值是主屏幕的句柄
// 如果其中一个屏幕蕴含该点,则返回值是该屏幕的 HMONITOR 句柄。如果没有一个屏幕蕴含该点,则返回值取决于 dwFlags 的值
HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
MONITORINFOEX miex;
miex.cbSize = sizeof(miex);
if (!GetMonitorInfo(hMonitor, &miex))
return size;
DEVMODE dm;
dm.dmSize = sizeof(dm);
dm.dmDriverExtra = 0;
//ENUM_CURRENT_SETTINGS 检索显示设施的以后设置
//ENUM_REGISTRY_SETTINGS 检索以后存储在注册表中的显示设施的设置
if (!EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm))
return size;
size.cx = dm.dmPelsWidth;
size.cy = dm.dmPelsHeight;
return size;
}
办法二:SystemParametersInfo
// 获取可用桌面大小
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
int cx = rect.right - rect.left;
int cy = rect.bottom - rect.top;
办法三:GetSystemMetrics
// 多显示器时,应用 SM_CXSCREEN,SM_CYSCREEN 获取只是主屏大小
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
办法四:GetDeviceCaps
// 在多显示器零碎中,GetDeviceCaps 函数返回主显示器的性能。如果你想为其余显示器的信息,则必须应用多显示器的 API 函数或调用 CreateDC 函数失去一个 hdc 指定显示器的设施环境
HDC hdcScreen = GetDC(NULL);
int cx = GetDeviceCaps(hdcScreen, HORZRES);
int cy = GetDeviceCaps(hdcScreen, VERTRES);
DeleteObject(hdcScreen);
重要阐明
== 欢送大家关注我的集体微信公众号,一起探讨和学习 C ++ 后端、客户端的开发常识!==
正文完