我正在编写一个需要两个显示器的应用程序:一个用于控制面板,另一个用于输出。我所拥有的是这样的:如果只有一个显示器,应用程序会在其上显示两种表单,但如果有两个显示器,则输出表单将转到另一个。
问题是这只在应用程序启动时才会发生。换句话说,如果应用程序在连接第二个显示器之前已经在运行,则除非用户手动将输出发送到新显示器(假设他们知道如何执行此操作),否则不会发生任何情况。
我想要的是,当连接新显示器时,即使应用程序正在运行,输出表单也会自动发送给它。我认为这与轮询线程中的端口有关,但我不知道该怎么做。任何人都可以帮助如何做到这一点吗?如果有更好的解决方案,我将非常欢迎。
(我本来会提供部分代码,但我是通过手机输入的)
看这里:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc.aspx
有一个例子应该对你有帮助。尝试这样的事情:
public class MyForm : System.Windows.Forms.Form
{
protected override void WndProc(ref Message m)
{
const uint WM_DISPLAYCHANGE = 0x007e;
// Listen for operating system messages.
switch (m.Msg)
{
case WM_DISPLAYCHANGE:
// The WParam value is the new bit depth
uint width = (uint)(m.LParam & 0xffff);
uint height = (uint)(m.LParam >> 16);
break;
}
base.WndProc(ref m);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)