处理多屏
获取桌面的坐标
1 // 获取桌面x坐标,可以为负值
2 int xScreen = ::GetSystemMetrics( SM_XVIRTUALSCREEN );
3 // 获取桌面y坐标,可以为负值
4 int yScreen = ::GetSystemMetrics( SM_YVIRTUALSCREEN );
5 // 获取桌面总宽度
6 int cxScreen = ::GetSystemMetrics(SM_CXVIRTUALSCREEN);
7 // 获取桌面总高度
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;
3 ::GetMonitorInfo(::MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST), &oMonitor);
4 RECT rcWork = oMonitor.rcWork;
oMonitor.rcWork获取的是工作区的大小,它不包含任务栏,如果想获取屏幕大小,可以使用oMonitor.rcScreen
获取屏幕数量
int nScreenCount = GetSystemMetrics(SM_CMONITORS);