2009-12-17 50 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