多个监视器系统指标

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。 为了与现有应用程序兼容, GetWindowRectGetClientRect 返回的桌面窗口的矩形始终等于主监视器的矩形。 因此,结果

GetWindowRect(GetDesktopWindow(), &rc);

将为:

rc.left = 0; 
rc.top = 0; 
rc.right = GetSystemMetrics (SM_CXSCREEN); 
rc.bottom = GetSystemMetrics (SM_CYSCREEN);

若要更改监视器的工作区域,请使用 SPI_SETWORKAREA 调用 SystemParametersInfopvParam 指向所需监视器上的 RECT 结构。 如果 pvParamNULL,则修改主监视器的工作区域。 使用 SPI_GETWORKAREA 始终返回主监视器的工作区域。 若要获取主监视器以外的监视器的工作区域,请调用 GetMonitorInfo