none
多显示器程序,设计+实现问题,如何在副显示器上显示内容? RRS feed

  • 问题

  • Thanks,

    题目可能有些大了。其实没那么复杂。

    需求是这样子:一家医院的一个排号系统,C/S模式。Server端接N个X寸的液晶电视,显示排号信息。

    因为信息很简单(背景+“请XX号到YY诊室”),所以我想直接拿到副显示器DC然后直接Draw上去。

    或者……做个Window扔到副显示器上,然后在Window上画?我感觉没有显示视频之类的需求的话,似乎没有这个必要。

    请大家给个建议,任何方面的都可以,谢谢!
    2009年4月9日 14:51

答案

  • 找这个需求,你可以用一个窗口也可以用多个窗口。不过用一个信号复制器比较快。
    MSMVP VC++
    • 已标记为答案 David Zha0 2009年4月14日 9:38
    2009年4月13日 2:28
    版主

全部回复

  • @Sheng Jiang

    Thanks for your reply.

    根据需求,副显示器(用来显示排号)只要求全屏显示就可以了,所以我目前的想法是:

    EnumDisplayMonitor枚举显示器,把用户选择的副显示器DeviceName保存起来

    绘图时直接CreateDC传入DeviceName,拿到DC。

    画图。

    DeleteDC,收工……

    不知道这样是不是可行?

    Ps:我记得在C#里

    IntPtr dc = CreateDC("DISPLAY", Screen.AllScreens[0].DeviceName, "", null);
    Graphics g = Graphics.FromHdc(dc);

    可以拿到副显示器DC
    2009年4月9日 16:35
  • 这样做的话,用户在桌面上按F5->你画的图消失。
    MSMVP VC++
    2009年4月9日 17:29
    版主
  • 恩。是的。

    多显示器的话按F5的时候是会重画整个Virtual Desktop的吧……我也想到这个问题

    最初想到这个方法是因为这个排号服务器上是不准备安装输入设备的,有点类似地铁里那个显示器,只做一个输出终端。

    那么在您看来,我可以怎样做呢?

    New 一个No Border Window 到副显示器上然后在Window上画?

    2009年4月10日 3:08
  • 你的窗口可以跨显示器的
    MSMVP VC++
    2009年4月10日 3:10
    版主
  • 我的意思是,多个显示器(液晶电视)作为副显示器被安装在某系统上,我希望我的代码可以在若干副显示器上显示相同的内容,而在主显示器上显示状态信息。

    因此我首先想到的方法就是拿副显示器的DC,可是就像您说的,重绘的问题……

    所以我考虑New一个窗体到副显示器上然后在这个窗体上画。至于您说的窗口跨显示器,我有些不理解。

    2009年4月13日 2:25
  • 找这个需求,你可以用一个窗口也可以用多个窗口。不过用一个信号复制器比较快。
    MSMVP VC++
    • 已标记为答案 David Zha0 2009年4月14日 9:38
    2009年4月13日 2:28
    版主
  • 呃……是,我也是这样想……客户说希望有一个监视端……我才想到弄2个窗口。

    我的想法是在机器上弄个双显卡,然后副显卡上装信号复制器分若干液晶电视。

    然后软件方面,主显示器上显示个监视端,副显示器就全屏显示信息就可以了。其实我觉得也许做个配置工具,然后配置好了直接用主显卡接复制器就可以,可人家说不行……一定要一个即时监视……囧。

    另,谢谢您一直以来对这个问题的关注。
    2009年4月13日 3:30