创建不显示的非模态对话框

MFC: Creating modeless dialog box without displaying

本文关键字:模态 对话框 显示 创建      更新时间:2023-10-16

我试图创建一个简单的非模态对话框,我从我的CWinApp派生InitInstance()函数创建。

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

我已经在资源编辑器中创建了对话框模板,WS_VISIBLE位未设置。我的意图是避免显示对话框,直到我显式地调用ShowWindow(SW_SHOW),但由于某种原因,调用Create显示对话框。

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

我甚至尝试调用ModifyStyle(),以防其他东西设置WS_VISIBLE位。

int CMyDialog::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
   if (CDialog::OnCreate(lpCreateStruct) == -1)
      return -1;
   ModifyStyle(WS_VISIBLE, 0);   
   return 0;
 }

那也不行。在所有情况下,在我调用Create之后,显示对话框,这不是我读它应该工作的方式。

问题是AnimateWindow()导致对话框过早显示