2010-04-19 41 views
0

因此,我有一个屏幕截图实用程序(它需要全屏截图并将其保存到png文件中),我使用它编写,并使用SM_CXVIRTUALSCREENSM_CYVIRTUALSCREEN来确定桌面的宽度和高度。检测扩展桌面是向左还是向右

然后,我得到桌面DC,并将其复制出来并保存为png。

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

这里X_SRC通常为0,除非DESKTOP已经扩展 “向左”。例如,如果左侧显示器的尺寸是1280像素,则需要-1280像素。

我怎么能确定桌面上的出发点是负的(如果用户已经扩大了他的桌面向左?)

回答

2

您可以获得通过EnumDisplayMonitors方法的所有监视器的定位信息。或者,如果您只关心虚拟屏幕的角落,则可以将SM_XVIRTUALSCREENSM_YVIRTUALSCREEN传递给GetSystemMetrics方法。

1

您应该使用GetSystemMetrics(SM_XVIRTUALSCREEN), GetSystemMetrics(SM_YVIRTUALSCREEN)作为x,y坐标到BitBlt