多个监视器系统指标
GetSystemMetrics 函数返回主监视器的值,但引用整个桌面的 SM_CXMAXTRACK 和 SM_CYMAXTRACK 除外。 以下指标适用于所有设备驱动程序:SM_CXCURSOR、SM_CYCURSOR、SM_CXICON、SMCYICON。 以下显示功能适用于所有监视器:LOGPIXELSX、LOGPIXELSY、DESTOPHORZRES、DESKTOPVERTRES。
GetSystemMetrics 还具有仅引用多监视器系统的常量。 SM_XVIRTUALSCREEN和SM_YVIRTUALSCREEN标识虚拟屏幕的左上角,SM_CXVIRTUALSCREEN和SM_CYVIRTUALSCREEN是虚拟屏幕的垂直和水平度量值,SM_CMONITORS是连接到桌面的监视器数,SM_SAMEDISPLAYFORMAT指示桌面上的所有监视器是否具有相同的颜色格式。
若要获取有关桌面中单个显示监视器或所有显示监视器的信息,请使用 EnumDisplayMonitors。 为了与现有应用程序兼容, GetWindowRect 或 GetClientRect 返回的桌面窗口的矩形始终等于主监视器的矩形。 因此,结果
GetWindowRect(GetDesktopWindow(), &rc);
将为:
rc.left = 0;
rc.top = 0;
rc.right = GetSystemMetrics (SM_CXSCREEN);
rc.bottom = GetSystemMetrics (SM_CYSCREEN);
若要更改监视器的工作区域,请使用 SPI_SETWORKAREA 调用 SystemParametersInfo , pvParam 指向所需监视器上的 RECT 结构。 如果 pvParam 为 NULL,则修改主监视器的工作区域。 使用 SPI_GETWORKAREA 始终返回主监视器的工作区域。 若要获取主监视器以外的监视器的工作区域,请调用 GetMonitorInfo。