【问题标题】:MFC: Creating modeless dialog box without displayingMFC:创建无模式对话框而不显示
【发布时间】:2011-04-27 20:08:38
【问题描述】:

我正在尝试创建一个简单的无模式对话框,该对话框是从我的 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 之后,都会显示对话框,这不是我阅读的方式。

【问题讨论】:

  • 我知道我可以在调用 Create(...) 后调用 ShowWindow(SW_HIDE) 但这会导致对话框在屏幕上瞬间闪烁,这并不理想。

标签: c++ visual-studio-2010 mfc


【解决方案1】:

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

【讨论】:

  • 您从未在问题中提到过 AnimateWindow,因此无法弄清楚。不过,感谢您回来回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多