处理多屏

获取桌面的坐标

1 // 获取桌面x坐标,可以为负值
2 int xScreen = ::GetSystemMetrics( SM_XVIRTUALSCREEN );
3 // 获取桌面y坐标,可以为负值
4 int yScreen = ::GetSystemMetrics( SM_YVIRTUALSCREEN );
5 // 获取桌面总宽度
6 int cxScreen = ::GetSystemMetrics(SM_CXVIRTUALSCREEN);
7 // 获取桌面总高度

8 int cyScreen = ::GetSystemMetrics(SM_CYVIRTUALSCREEN);  

 

获取窗口句柄所在屏幕的位置

 当处理窗口居中显示时,我们需要获取窗口所在屏幕工作区域的大小,这个工作可以使用下面代码完成:

1 MONITORINFO oMonitor = {};
2 oMonitor.cbSize = sizeof(oMonitor);
3 ::GetMonitorInfo(::MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST), &oMonitor);
4 RECT rcWork = oMonitor.rcWork;

oMonitor.rcWork获取的是工作区的大小,它不包含任务栏,如果想获取屏幕大小,可以使用oMonitor.rcScreen

 

获取屏幕数量

 int nScreenCount = GetSystemMetrics(SM_CMONITORS);


posted on 2014-01-04 19:27  sanlo  阅读(1617)  评论(0编辑  收藏  举报