用多台电视机显示的问题??(50分)

  • 主题发起人 主题发起人 studycyz222
  • 开始时间 开始时间
S

studycyz222

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想实现一个应用程序在计算机上运行时,不同的信息显示在
2台电视机上。譬如:我在应用程序中调用POWERPOINT ,让POWERPOINT
自动播放(计算机的显示器上不显示),把POWERPOINT 的图片显示在
一台电视机上。 而应用程序的其他界面可以显示在另一台电视机上。

请问:
1、 如何实现?
2、 如果要到硬件的话,是用 视频卡 还是 电视卡 什么 的?
 
是显示器还是电视?这儿有一个Vb的文章,你可以参考一下。
和多显示器有关的部分我再转过来,呵呵
-------------------
在msdn中有多显示器的讨论,在Platform SDK/Graphics and Multimedia Sevices
/GDI/Multiple Display Monitors Reference下面,而且在1997年6月的MSJ上也有
David Campbell的一篇详细的讨论多显示器编程的文章,我这里简单说一下,遇到具体
问题你可以查阅这两份资料。
从Windows98和nt4开始windows就支持多显示器了,引入的虚拟桌面的性质使得我
们更好的利用多显示器工作。在VC中有一个头文件multimon.h,这是多显示器编程的
支持文件,定义了很多多显示器函数和结构,在编程时候一定要包含进来。
主要的多显示器支持函数有
MonitorFromPoint
MonitorFromRect
MonitorFromWindow
GetMonitorInfo
ChangeDisplaySettingsEx
ChangeDisplaySettingsEx
EnumDisplayMonitors
EnumDisplayDevices
SystemParametersInfo
GetSystemMetrics
这些API的用法可以查msdn。

在多显示器编程中遇到的两个重要的概念是显示器句柄和显示器名称,呵呵,不是
大饼,我还没有吃晚饭呢。每个显示器对应一个显示器句柄HMONITOR,一般说来,
这个值在关机前是不会变的。这个值可以从MonitorFromPoint、MonitorFromRect、
MonitorFromWindow这三个函数得到,其中遇到的坐标值都是相应于虚拟桌面的。如果
得不到合适的值,可以调节函数中的dwFlags参数指定返回的结果如NULL或者缺省显示器
或者最接近的显示器。
第二个概念是显示器名称,在单显示器的时候,显示器的名称是Display,在多显示
器的时候,这个值只能指定缺省显示器,每个显示器的名字是//./Displayx,其中x是1、
2、3...表示第几个显示器。这两个参数可能在编程时候用到。
为了控制输出显示的位置,需要了解每个显示器的参数及虚拟桌面的性质,函数
GetMonitorInfo、SystemParametersInfo、GetSystemMetrics就是做这些事情的。不过
SystemParametersInfo只能得到缺省显示器的性质,可能用到的参数是SPI_GETWORKAREA
、SPI_SETWORKAREA。GetSystemMetrics可以得到缺省显示器的一些参数(用SM_CXSCREEN
和SM_CYSCREEN),或者用SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN, SM_CXVIRTUALSCREEN
和SM_CYVIRTUALSCREEN得到虚拟桌面的左上角坐标和宽度和高度,SM_SAMEDISPLAYFORMAT
参数可以判断各显示器是否有相同的颜色格式。SM_CMONITORS参数可以得到显示器的数目
参数可以判断各显示器是否有相同的颜色格式。SM_CMONITORS参数可以得到显示器的数目
。GetMonitorInfo可以得到指定显示器的参数,函数需要一个HMONITOR类型的参数指定显
示器,把结果存储在一个MONITORINFO或者MONITORINFOEX结构里,这个结构的用法可以查
阅msdn。用GetMonitorInfo我们可以得到每个显示器在虚拟桌面上的位置、工作区在虚拟
桌面上的位置以及显示器的名字。
另一个重要的函数是EnumDisplayMonitors,它指定了一个回调函数,使对虚拟桌面
的显示请求分别映射到每一个显示器。我们在回调函数里可以对每个显示器进行相应处理
。根据需要调节函数的hmonitor和hdcmonitor参数可以得到不同的结果。
还有一个函数不大重要,EnumDisplayDevices可以得到当前机器上可用的显示器列表

另外,在多显示器编程中需要主要很多在单显示器中遇不到的问题,在显示输出时候
都自己指定输出位置是一个好习惯,而且由于坐标值可能为负,而且很多负坐标值是可见
的,所以很多相关问题的处理上要注意。

---------------

【 在 yigo (kitaro) 的大作中提到: 】
: WIN98支持一台机子带多台显示器,并可手工
: 调整不同的程序窗口显示在不同的显示器上,
: 现在我希望能用程序控制自己编写的程序其
: 窗口自动显示在指定的显示器上。不知如何实现?


示器,把结果存储在一个MONITORINFO或者MONITORINFOEX结构里,这个结构的用法可以查
 
谢谢honghs

能不能介绍用DELPHI 编程有关的
 
发个邮件给我:delphi6@163.com,我把那个vb例子回复给你。
 
HONGHS:能否也发一个例子给我,谢了!lu@3gs.net
 
这个问题我也遇到过,当时我自己做了个MTV播放器,就是在第二个显示器区工作的,
可以通过捕获窗口句柄,然后再把窗口移到第二个显示器上工作。
 
to:delphipig
你能否给一段代码,我现在就是碰到无法把播放窗口移到第二个显示器上去。谢了!
 
这个问题我解决了,to studycyz;
实际上DELPHI 5 AND DELPHI 6 都有一个SCREEN对象,利用它可以很方便的得到显卡所
接的所有显示器,你可以试试.
 
使用多块显卡,只能在win98下使用,进行显示器的位置设置,我曾经最多使用五块显卡,但不稳定,
两块显卡此时相当于将(800*2)*600,但驱动电视机的显卡若设置为640*480分辨率并且为第一显卡,
应用程序的form1.laft:=645;你可以反复试验。
 
再说一句,若设置显示器上下摆放,还要设置form1.Top属性值,应用程序可任意位置显示。只要你能搞清分辨率和像素关系。
 
后退
顶部