2009-12-17 51 views
0

我使用的ShowWindow从user32.dll中显示信使风格的弹出窗口(总在最前面,不偷焦点),但我不能让他们作出回应。似乎我的新表单缺少一个信息回复,因此无法绘制它的控件或对输入做出反应。的ShowWindow和消息循环

我试图创建一个BackgroundWorker的形式,但似乎并没有帮助(形式还停留反应迟钝)。

如果我显示出与Application.Run(myForm会)的形式,我得到的消息循环和响应的形式,但不总是在最上层+做 - 不偷对焦功能。

所以我的问题是,如何创建我的形式的消息循环?

+0

现在,我会去Application.DoEvents。这不是最优雅的解决方案,但是atm是我唯一能想到的。 – Morri 2009-12-17 09:15:23

回答

1

你可能想看看this关于如何在不窃取焦点的情况下显示表单的SO帖子。这应该有助于
的答案再往下可以看到:

protected override bool ShowWithoutActivation 
{ 
    get 
    { 
     return true; 
    } 
} 

然后只是做form.Show(),你应该得到与非活动窗口中的消息泵。

+0

使用的ShowWindow,不给我一个消息循环和创建的窗体不会做任何事情。 – Morri 2009-12-17 06:03:11

+0

我添加了部分窗体的答案,应该没有ShowWindow会给你一个消息泵的工作 – SwDevMan81 2009-12-17 13:25:02

+0

我也意识到我可以在ShowWindow之后执行Application.Run()来为我的窗体获取消息泵。 – Morri 2009-12-18 11:00:06