2010-10-27 148 views
3

我有一個win32應用程序,它使用DialogBox()來顯示它的主窗口。win32 DialogBox應用程序:如何使對話框在啓動時隱藏?

我現在要開始這個程序了對話框不見了蹤影,後來將它與 SetWindowPos(hDlg,HWND_TOPMOST,可見...

不幸的是

http://msdn.microsoft.com/en-us/library/ms645452(VS.85).aspx

該功能顯示對話框(不管模板是否指定WS_VISIBLE風格)

...似乎沒有辦法使用DialogBox()來做到這一點。

我可以添加一個調用 SetWindowPos(hDlg,HWND_NOTOPMOST ...

我在WM_INITDIALOG處理程序對話框過程。

...但我擔心下重系統加載對話框會短暫出現然後消失,給人一種醜陋的閃爍效果。

有沒有表現出它創建通過對話框()我的對話框的方式?

+0

你可以繞過對話框,直接使用CreateWindowEx等一些成功? – YWE 2010-10-27 15:34:59

+0

@YWE:我不確定。 MSDN說,DialogBox()在內部使用CreateWindowEx(),所以它應該是可能的。我的對話過程期望消息,如WM_INITDIALOG,並進行對話調用,如SendDlgItemMessage():不知道如果我使用CreateWindowEx(),是否所有這些仍然會工作。 – 2010-10-27 16:23:26

+0

我不明白這個問題。如果你不想讓對話框顯示,那麼就不要調用ShowDialog()。如果有必要的話,泵送你自己的消息 – 2010-10-27 16:28:09

回答

0

我有這個技術

void CMyDlg::OnWindowPosChanging(WINDOWPOS* lpWndPos) 
{ 
    // hide dialog 
    lpWndPos->flags &= ~SWP_SHOWWINDOW; 
    CDialog::OnWindowPosChanging(lpWndPos); 
} 

here

相關問題