Как сделать CDHTMLDialog скрытым до загрузки страницы? - PullRequest
0 голосов
/ 23 декабря 2010

после вызова метода DoModal диалоговое окно будет показано немедленно.но мне нужно сделать его невидимым, пока страница не загрузится.это возможно?

спасибо хх

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011
//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);
}
0 голосов
/ 07 августа 2016
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();
}
0 голосов
/ 23 декабря 2010

Привет, вы можете спрятать его при запуске в

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

, а затем в OnNavigateComplete сделать его видимым. Но если ваша страница будет загружаться медленно, это будет похоже на зависание вашего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...