本文介绍了VC实现Windows多显示器编程的方法。与所有人共享以供参考。详细信息如下:
一、当多台监视器连接到Windows时,可以将它们设置为复制和扩展屏幕。
设置为1、复制屏幕时,多个显示器的分辨率相同,位置为0〜分辨率值
当将2、设置为扩展屏幕时,显示之间的关系更加复杂。首先,Windows系统将识别主监视器,可以在屏幕分辨率上进行更改。多个显示器之间的位置关系也可以在屏幕分辨率中更改。主显示器的位置是(0,0)到(宽度,高度),其他显示器的位置由与主显示器的位置关系确定。在主显示器的左上方,它是负数数字,用0减去长度和宽度;在右下角,主显示的分辨率加上长度和宽度,驱动或使用mouse_event时也是如此,主显示为0〜65535,其他显示器是根据主显示器的相对位置确定的。

二、相关程序和API如下:
1、获取当前监视器的分辨率
m_iCurScrWidth = ::GetSystemMetrics(SM_CXSCREEN); m_iCurScrHeight = ::GetSystemMetrics(SM_CYSCREEN);

2、移动窗口位置
MoveWindow(0, 0, m_iCurScrWidth, m_iCurScrHeight); //移动窗口 ModifyStyle(WS_CAPTION,0,0); //取消标题栏
3、获取监视器数量
复制代码,代码如下:
GetSystemMetrics(SM_CMONITORS);
4、获取显示器的相对位置和分辨率
void GetScreenRect(int ScreenNo)
{
BOOL flag;
DISPLAY_DEVICE dd;
ZeroMemory(&dd, sizeof(dd));
dd.cb = sizeof(dd);
flag = EnumDisplayDevices(NULL, ScreenNo, &dd, 0);
if (!flag) return;
DEVMODE dm;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
flag = EnumDisplaySettings(dd.DeviceName,ENUM_CURRENT_SETTINGS, &dm);
m_ScrRect[ScreenNo].left = dm.dmPosition.x;
m_ScrRect[ScreenNo].top = dm.dmPosition.y;
m_ScrRect[ScreenNo].right = dm.dmPelsWidth;
m_ScrRect[ScreenNo].bottom = dm.dmPelsHeight;
}
我希望本文对您的VC程序设计有所帮助。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-376239-1.html
写几亿个字儿也是毫无价值的
甲午海战时
看待问题要从全局出发