多显卡多显示器扩展桌面

仙度瑞城 2011-08-26 07:43:22
一台机器
系统windows7
显卡4块
每块显卡两个输出(VGA和DVI)
最多可以同时接入8个显示器
现在机器连接了N(1<= N <=8)台显示器 PS:每台显示器支持的最大分辨率未知
但是系统桌面只在一台显示器上显示(即主显示器)
现在要写个函数实现将桌面扩展到所有已经连接好的显示器上
扩展顺序是按照系统识别的显示器编号依次扩展
每台显示器的分辨率为最佳分辨率(或最大分辨率)
相关代码如下

void ExtrendMonitor()
{
DWORD DispNum = 0;
DISPLAY_DEVICE DisplayDevice;
DEVMODE DeviceMode;

ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb = sizeof(DisplayDevice);

while(EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0))
{
ZeroMemory(&DeviceMode, sizeof(DEVMODE));
DeviceMode.dmSize = sizeof(DEVMODE);
EnumDisplaySettings((LPCTSTR)DisplayDevice.DeviceName, ENUM_REGISTRY_SETTINGS, &DeviceMode);
//这里获得的DeviceMode值来自哪里?注册表?那注册表的值又来自哪里?
ChangeDisplaySettingsEx((LPCTSTR)DisplayDevice.DeviceName, &DeviceMode, NULL, CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, NULL);

ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb = sizeof(DisplayDevice);

DispNum++;
}//while循环退出时为什么DispNum == 11?不是应该等于8吗?

ChangeDisplaySettingsEx(NULL, NULL, NULL, 0, NULL);
}
...全文
1075 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meteor_Code 2011-08-31
  • 打赏
  • 举报
回复
mark this
luciferisnotsatan 2011-08-31
  • 打赏
  • 举报
回复
帮断楼
仙度瑞城 2011-08-31
  • 打赏
  • 举报
回复
哎呀呀...彻底沉了..
仙度瑞城 2011-08-29
  • 打赏
  • 举报
回复
继续mark...
仙度瑞城 2011-08-29
  • 打赏
  • 举报
回复
不要沉了呀..
  • 打赏
  • 举报
回复
mark 一下
luciferisnotsatan 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jackyjkchen 的回复:]

引用 7 楼 ljljlj 的回复:

现在的windows7都能同时使用四块显示卡了?
但不知那三块显示的都是什么??在win7里又怎么切换使用?

如果8个显示器要显示同一桌面的内容,不如买个分线盒好了,一变N,多好。

现代化的显卡不是用来显示桌面的,那是15年前了

两块同样的显卡可以组成SLI或CrossFire,相当于双CPU的概念,能大大提高某些游戏性能
[/Quote]
见过4张GTX580,组4路SLI的。用来跑分的。
xiaohuh421 2011-08-28
  • 打赏
  • 举报
回复
Win已经不使用ChangeDisplaySettingsEx了吧
应该用SetDisplayConfig
参考:
http://download.csdn.net/source/3479152
pathuang68 2011-08-28
  • 打赏
  • 举报
回复
估计把打印机或者软打印机的数量也算进去了。

你可能需要这样CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)调用一下,它将创建一个涵盖所有显示器的DC。

楼主不妨到MSDN上,看看:
http://msdn.microsoft.com/en-us/library/dd183490%28v=VS.85%29.aspx

尤其是上面页面中的Remark部分的内容。
jackyjkchen 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ljljlj 的回复:]

现在的windows7都能同时使用四块显示卡了?
但不知那三块显示的都是什么??在win7里又怎么切换使用?

如果8个显示器要显示同一桌面的内容,不如买个分线盒好了,一变N,多好。
[/Quote]
现代化的显卡不是用来显示桌面的,那是15年前了

两块同样的显卡可以组成SLI或CrossFire,相当于双CPU的概念,能大大提高某些游戏性能
ljhhh0123 2011-08-28
  • 打赏
  • 举报
回复
现在的windows7都能同时使用四块显示卡了?
但不知那三块显示的都是什么??在win7里又怎么切换使用?

如果8个显示器要显示同一桌面的内容,不如买个分线盒好了,一变N,多好。
wintree 2011-08-28
  • 打赏
  • 举报
回复
我差,这么牛逼,的东西, 顶一下楼主,向楼主致敬,秋分~
独自听枫 2011-08-28
  • 打赏
  • 举报
回复
mark一下 以后也许用的到
仙度瑞城 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jackyjkchen 的回复:]
不知道显卡驱动的接口和操作系统的接口一不一样,都可以调
[/Quote]
祝你这个月拿黄花...
jackyjkchen 2011-08-27
  • 打赏
  • 举报
回复
不知道显卡驱动的接口和操作系统的接口一不一样,都可以调
xunxun 2011-08-27
  • 打赏
  • 举报
回复
没玩过
猜驱动装好后就在注册表里放什么信息
仙度瑞城 2011-08-27
  • 打赏
  • 举报
回复
自己顶顶...

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧