【问题标题】:How to make CDHTMLDialog hidden until the page is loaded?如何在页面加载之前隐藏 CDHTMLDialog?
【发布时间】:2010-12-23 08:37:59
【问题描述】:

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

谢谢 xx

【问题讨论】:

    标签: mfc visual-c++


    【解决方案1】:

    你好,你可以在开始时隐藏它

    OnInitDialog()
       DWORD dwStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
       dwStyle -= WS_VISIBLE;
       SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle);
    

    然后在OnNavigateComplete 中使其可见。 但是,如果您的页面加载缓慢,则看起来您的应用挂断了

    【讨论】:

    • 谢谢,它有效。但我仍然可以看到开始时显示的对话框然后消失了。是否可以在启动之前使其不可见?
    • @x_x 你使用模态对话框还是非模态对话框?
    • 我使用 CDHTMLDialog 作为主窗口。我认为它可能是模态的,因为我确实调用了 DoModal 方法
    【解决方案2】:
    //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);
    }
    

    【讨论】:

      【解决方案3】:
      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多