MFC如何做多屏显示

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

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

不知道怎么下手,请大家多多指点!!
...全文
1001 18 打赏 收藏 转发到动态 举报
写回复
用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返回的也只是一个屏幕的分辨率.

15,976

社区成员

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

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