Mfc 如何使CDHTMLDialog在页面加载之前隐藏?

Mfc 如何使CDHTMLDialog在页面加载之前隐藏?,mfc,visual-c++,Mfc,Visual C++,调用DoModal方法后,将立即显示对话框。但我需要在页面加载之前使其不可见。可能吗 谢谢 xx您好,您可以在开始时将其隐藏在 OnInitDialog() DWORD dwStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE); dwStyle -= WS_VISIBLE; SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle); 然后在OnNavigateComplete中使其可见。 但是如

调用DoModal方法后,将立即显示对话框。但我需要在页面加载之前使其不可见。可能吗

谢谢
xx

您好,您可以在开始时将其隐藏在

OnInitDialog()
   DWORD dwStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
   dwStyle -= WS_VISIBLE;
   SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle);
然后在
OnNavigateComplete
中使其可见。
但是如果你的页面加载速度变慢,你的应用程序似乎会挂断

谢谢,它可以正常工作。但我仍然可以看到开始时显示的对话框,然后消失了。有没有可能在启动前使其不可见?@x_x您使用模态对话框还是非模态对话框?我使用CDHTMLDialog作为主窗口。我认为它可能是模态的,因为我调用了DoModal方法
//CYourDialog.cpp

void CYourDialog::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
     //allow to hide dialog at the startup of dialog,
     //delay the show of dialog until m_bVisible is set
     if(!m_bVisible)
     {
         lpwndpos->flags &= ~SWP_SHOWWINDOW;
     }

     CDialog::OnWindowPosChanging(lpwndpos);
}

//CYourHtmlView.cpp

void CYourHtmlView::OnDocumentComplete()
{
    m_pYourDlg->m_bVisible=TRUE;
    m_pYourDlg->ShowWindow(SW_SHOW);
}
BOOL CYourDialog::OnInitDialog()
{
    DWORD dwStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
    dwStyle -= WS_VISIBLE;
    SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle);
    Invalidate();
    CDHtmlDialog::OnInitDialog();
...
    Navigate(_T("www.google.com"));
    return TRUE;  // return TRUE  unless you set the focus to a control
}

void CYourDialog::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{   
    DWORD dwStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
    dwStyle += WS_VISIBLE;
    SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle);   
    Invalidate();
}