MFC如何做多屏显示

LH806732 2011-01-14 10:47:22
现在有一台PC机需要做多屏显示,就是一台主机接两个显示器,而且分辨率会不一样。如:主显示器是800*600,副显示器是1024*768.

看网上说是用SetWindowPos可以做到,没头绪。

不知道怎么下手,请大家多多指点!!
...全文
940 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
LH806732 2011-01-19
  • 打赏
  • 举报
回复
LH806732 2011-01-19
  • 打赏
  • 举报
回复
怎么乱了。。。。
LH806732 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 superdiablo 的回复:]
直接得到你想要的显示器屏幕区域坐标然后用SetWindowPos把窗口显示到那个区域就可以了。
[/Quote]

现在主显示和靠近主显示都可以找到也可以设置。
问题是现在我怎么去找到靠近主显示那个显示区域坐标,虽然我知道它坐标。


主显示(800x480) 靠近主显示的显示区域(1024x768)
(0,0) (799,0) (800,0) (1023,0)
|-------------------------------| |---------------------------------------|
| | | |
| | | |
| | | |
| | | |
| | | |
|-------------------------------| | |
(0,479) (799,479) | |
| |
|---------------------------------------|
(800,767) (1023,767)
现在问题是如何去获取(1024x768)这个显示的坐标。我用以下函数似乎都不行:
MonitorFromPoint
MonitorFromRect
GetMonitorInfo
GetSystemMetrics

ChangeDisplaySettingsEx参数用错了使用CDS_RESET就可以直接改分辨率,用CDS_NORESET就需要重启。

各位多多指点~~~~
MYNAMELIULI 2011-01-19
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/library/dd145071
LH806732 2011-01-19
  • 打赏
  • 举报
回复
现在使用SetWindowPos函数,可以把主显示器应用程序的界面(内容)显示在靠近主显示器的那个显示器中,但这不是我想要的,我想要的是主显示器和靠近主显示器都显示同样的界面(内容)。

大家多多指点~~~~~~~~~~
oldmtn 2011-01-18
  • 打赏
  • 举报
回复
加滚动条~~
superdiablo 2011-01-18
  • 打赏
  • 举报
回复
用EnumDisplayDevices和EnumDisplaySettings即可得到显示器的区域。
superdiablo 2011-01-18
  • 打赏
  • 举报
回复
直接得到你想要的显示器屏幕区域坐标然后用SetWindowPos把窗口显示到那个区域就可以了。
LH806732 2011-01-18
  • 打赏
  • 举报
回复
可以找到4个现实设备:
Device 0
DeviceNmae:\\.\DISPLAY1
DeviceString:VIA/S3G UniChrome Pro II IGP
StateFlags:desktop primary
Current Settings: 长X宽X像素X频率: 800x480x32x60
Registery Settings: 800x480x32

Device 1
DeviceNmae:\\.\DISPLAY2
DeviceString:VIA/S3G UniChrome Pro II IGP
StateFlags:
Current Settings: 长X宽X像素X频率: 0x0x0x0
Registery Settings: 800x600x32


使用ChangeDisplaySettingsEx函数修改DISPLAY2时,重新读取现实设备时,StateFlags仍然是空的,但Registery Settings会被改变,但是Current Settings还是和上面一样0x0x0.

LONG lRet = ChangeDisplaySettingsEx(m_dd[0].DeviceName,
&dmSettings,
NULL,
CDS_UPDATEREGISTRY | CDS_NORESET | CDS_GLOBAL,
NULL);
if(lRet != DISP_CHANGE_SUCCESSFUL)
{
MessageBox(L"Set Primary display error!");
}


大家多多指点~~
忧郁马赛克 2011-01-15
  • 打赏
  • 举报
回复
以上答案是正确的,还有一种就是远程桌面连接在你电脑上面只用(400,300)的大小来进行显示多连接几个且显示大小一致不就是多屏了?
LH806732 2011-01-15
  • 打赏
  • 举报
回复
大家很给力,我还是不太懂,看看5楼的学些学习先,再请教大家。
无言猪 2011-01-14
  • 打赏
  • 举报
回复
那应该就更好做了吧,这个是操作系统来实现的分屏,你就当一个屏幕来做了.另外的屏幕不过就是你这个主屏幕的拷贝而已.
LH806732 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lostying 的回复:]
你就把多个屏幕想像成一个就行了,相当与屏幕的显示分辨率是(X*N)*Y,N就是屏幕数.不过如何获取是否在多屏显示就不知道了,GetSystemMetrics返回的也只是一个屏幕的分辨率.
[/Quote]

问题是,我能需要在副窗口来操作主窗口,两边显示的内容是一样的,但分辨率不一样啊。
无言猪 2011-01-14
  • 打赏
  • 举报
回复
你就把多个屏幕想像成一个就行了,相当与屏幕的显示分辨率是(X*N)*Y,N就是屏幕数.不过如何获取是否在多屏显示就不知道了,GetSystemMetrics返回的也只是一个屏幕的分辨率.
MFC自定义界面HUI,高效简单,含详细注释和示例。 HUI包括基本控件、按钮、标签、编辑框、表格、悬停提示等,可组合出更多功能。资源占用少,效率高,能在低端机上运行,流畅不闪烁,完全满足工控等各种专业软件实现个性化要求。 本资源是“http://download.csdn.net/detail/hhhh63/6961889”的正式发布版。包括3个项目,Hui、HuiDemo1和HuiDemo2。 一、Hui项目 本项目是DLL项目,包括完整的界面库,使用双缓存,局部重画等技术,性能优异。为保证在不同的MFC版本中使用,本次上传提供了这部分的源码,一般不要对其改动。 二、HuiDemo1 简单的应用示例,包括窗口分割,控制面板和主显示区等,展示控件各方向停靠、自动充满、全屏切换、记忆窗口位置和大小、选项设置和保存注册表等功能,用户可直接以此为基础开发新项目。如需扩展其它功能,可从HuiDemo2查找复制相应代码。 三、HuiDemo2 除HuiDemo1的所有功能外,还包括界面库的全部功能和其它实用扩展功能,左中右三栏式分布,左右固定宽度,中间栏大小可变。 1、左边是属性栏,固定宽度,上边是时钟,下边是鼠标信息,当鼠标移到中间的图像区时显示鼠标位置和图像值。 2、中间是图像区,演示如何动态生存索引图像,从下向上移动,自适应大小,长宽比不变,点右边的调色板按钮改变颜色,点保存按钮把当前图像保存到桌面。 3、右边上边是控制栏,在中间的图像区中画各种几何图形,并计算几何图形包围的图像数据的最大值,最小值和平均值。 4、右边下边是表格演示,显示Windows文件夹下的文件列表,自动充满窗口区,随窗口大小改变显示项数,保证界面美观,最下面是搜索和定位功能。 四、运行环境,VC2010或更高版本。 欢迎大家下载并提意见,本资源版权归作者所有,分享供大家研究学心,不得用于商业用途,如有特殊要求请与本人联系。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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