办法一: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++后端、客户端的开发常识!==