检测扩展桌面是向左还是向右

时间:2010-04-19 20:10:37

标签: c++ windows desktop screenshot

所以,我有一个屏幕截图实用程序(它需要全屏截图并将其保存到png文件)我已经写过了,它使用SM_CXVIRTUALSCREENSM_CYVIRTUALSCREEN来确定宽度和高度桌面。

然后我获取桌面DC并复制出来并将它们保存为png。

    BitBlt(
      backDC, 0, 0,
      backBufferCX, backBufferCX,
      desktopDC, X_SRC, 0, SRCCOPY );

此处X_SRC通常为0,除非桌面已“延伸至左侧”。在这种情况下,例如,如果左侧监视器测量为1280px,则需要为-1280px。

如何判断桌面的起始点是否为负(如果用户将桌面扩展到左侧?)

2 个答案:

答案 0 :(得分:2)

您可以通过EnumDisplayMonitors方法获取所有监视器的定位信息。

或者,如果您只关心虚拟屏幕的角落,则可以将SM_XVIRTUALSCREENSM_YVIRTUALSCREEN传递到GetSystemMetrics方法。

答案 1 :(得分:1)

您应该使用GetSystemMetrics(SM_XVIRTUALSCREEN), GetSystemMetrics(SM_YVIRTUALSCREEN)作为BitBlt

的x,y坐标