如何进行多显示器编程?(130分)

  • 主题发起人 主题发起人 小飞
  • 开始时间 开始时间

小飞

Unregistered / Unconfirmed
GUEST, unregistred user!
例如,程序的一个form在默认显示器上,打开另外一个form显示在第二台显示器上.
 
???
啊???
@@
 
估计是建立多个监视器.
输出form2时用openwindowstation打开其他的监视器, createdesktop并且
连到那个windowstation上. 所有输出全部送忘那个desktop.
 
看来我省了130分,我自己已经解决了.
大家想知道吗,那分来换吧!!!ha ha ha ......
 
呵呵, 我给分, 说吧:-)
 
介绍介绍经验,何必为....
 
这个问题蛮有新一的,说不定那天碰上
这样把,你说说看,我也愿意给份
 
???
说说吧,我也给分
 
自问自答?!?
 
全局系统变量Screen有Monitors属性, 可以控制多个监视器

查查VCL中的Tmonitor 和Tscreen 来搞定这个问题。
 
form.defaultmonitor
 
说说吧,我也给分
 
大方一些,我们会给分的 :)
 
我现在正用两个显示器进行工作,不知是否指的这种情况?
 
还卖关子?快点说说吧!
 
刚做过这样的东东,来晚了....

Seasky说的没错,用的是TScreen和TMonitor.
这两者的区别在于TScreen代表的是一个虚拟的桌面,它可以拥有N个Monitor
,也就是物理的显示器.

这是大富翁上抄下来的代码 :-)

//将一个窗体显示到指定的显示器上
procedure SetWindowToMonitor(Form: TCustomForm;
//你想操作的窗体
MonitorIndex, //你想要显示窗体的显示
// 器索引, 0为主显示
// 器,1为第二显示器
Left, Top: Integer //窗体在显示器上的位置
);
begin

if not Assigned(Form) then
Exit;
if MonitorIndex >= Screen.MonitorCount then
Exit;
with Screendo

begin

Inc(Left, Monitors[MonitorIndex].Left);
Inc(Top, Monitors[MonitorIndex].Top);
end;

Form.SetBounds(Left, Top, Form.Width, Form.Height);
end;


 
多人接受答案了。
 
后退
顶部