程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 雙屏/多顯示器截屏

雙屏/多顯示器截屏

編輯:關於C語言

截屏程序的源碼網上到處都有,但是基本都不支持多顯示器。
這讓我一度以為支持多顯示器是一件很困難的事情。


(demo http://download.csdn.net/detail/problc/3841959 包含多顯示器支持,窗口高亮,十字放大等)


其實多顯示的截屏跟主顯示器的截屏區別並不大,甚至根本不需要EnumDisplayMonitors之類的調用。只是因為網上有了源碼,我們就懶得想了。
1. DC的問題。
hScrDC = CreateDC( _T("DISPLAY"),NULL,NULL,NULL );//主顯示器DC
hScrDC = ::GetDC(GetDesktopWindow()); //多屏DC


2. 坐標問題。
獲取坐標的時候用VIRTUALSCREEN參數
GetSystemMetrics(SM_CXVIRTUALSCREEN);
GetSystemMetrics(SM_CYVIRTUALSCREEN);
GetSystemMetrics(SM_XVIRTUALSCREEN );
GetSystemMetrics(SM_YVIRTUALSCREEN );


特別注意的是,多顯示器的時候,SM_XVIRTUALSCREEN和SM_YVIRTUALSCREEN是可以為負值的。
所以多顯示器處理時,邊界不要以為是(0,0)->(cx,cy)。
多顯示器的坐標是以主屏幕的左上角為(0,0)。

 

如果你有單顯示器的源碼,不妨改改上面的幾個小地方,你會發現多屏截屏其實很容易。

摘自 problc的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved