【MFC】在CHtmlView中准确判断页面加载完成
生活随笔
收集整理的這篇文章主要介紹了
【MFC】在CHtmlView中准确判断页面加载完成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以前的方法繁瑣,這里抄了別人的方法,做了簡單修改。記錄下。
首先要在CHtmlView的子類中,重載如下函數:
virtual void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL); virtual void NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL);這2個函數,不是下面的函數:
virtual void OnDocumentComplete(VARIANT* URL); virtual void OnNavigateComplete2(VARIANT* URL);在CHtmlView的子類中,添加一個成員,并在構造函數時初始化為NULL:
LPDISPATCH m_lpURLDisp;在NavigateComplete2中記錄訪問的LPDISPATCH。
void CXxxView::NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL) {if ( !m_lpURLDisp )m_lpURLDisp = pDisp;/* 可以不調用父類的方法, 建議調用。不調用Navigate相關的其他函數可能受到印象 */CHtmlView::NavigateComplete2(pDisp, URL); }在DocumentComplete中判斷這個DISPATCH。
void CXxxView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL) {if ( m_lpURLDisp && m_lpURLDisp == pDisp ){CUtils::DbgView(TEXT("真在完成: %s\n"), (LPCTSTR)(_bstr_t)URL);}/* 不調用父類的方法, 會導致OnDocumentComplete不會觸發 */CHtmlView::DocumentComplete(pDisp, URL); }在訪問URL前,重置m_lpWBDisp成員為NULL。
void CXxxView::_FreeDISP() {if ( m_lpURLDisp )m_lpURLDisp->Release();m_lpURLDisp = NULL; }void CXxxView::Browser(LPCTSTR Url) {this->_FreeDISP();DWORD dwFlags = navNoHistory;CHtmlView::Navigate2(Url, dwFlags, NULL); }?
轉載于:https://www.cnblogs.com/yvqvan/p/8583658.html
總結
以上是生活随笔為你收集整理的【MFC】在CHtmlView中准确判断页面加载完成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVA Function Covera
- 下一篇: 求不同字母全排列两种递归模板