2011-04-27 76 views
0

我想创建一个简单的无模式对话框,我从CWinApp派生的InitInstance()函数创建。MFC:创建无模式对话框不显示

BOOL CMyApp::InitInstance() 
{ 
    ... 
    m_pMyDialog = new CMyDialog(); 
    m_pMyDialog->Create(CMyDialog::IDD); 
    ... 
    retrun TRUE; 
} 

我在资源编辑器中创建了对话框模板,并且未设置WS_VISIBLE位。我的目的是避免显示对话框,直到我明确调用ShowWindow(SW_SHOW),但由于某种原因调用Create来显示对话框。

我试图将OnInitDialog()的返回值更改为FALSE,但这不起作用。

我甚至在设置WS_VISIBLE位的情况下尝试调用ModifyStyle()。

int CMyDialog::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
    if (CDialog::OnCreate(lpCreateStruct) == -1) 
     return -1; 

    ModifyStyle(WS_VISIBLE, 0); 

    return 0; 

} 

这也行不通。在所有情况下,在我调用Create之后,显示的对话框并不是我读过的,应该可以工作。

+0

我知道我可以在调用Create(...)之后调用ShowWindow(SW_HIDE),但这会导致对话框在屏幕上瞬间闪烁,这并不理想。 – sna14 2011-04-27 20:12:18

回答

2

问题在于AnimateWindow()导致对话框过早显示。

+0

您从未在提及AnimateWindow的问题中提及它。不过,谢谢你回答这个问题。 – 2011-11-16 23:24:13