1. 手工重载添加两个虚拟函数:
virtual void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);
virtual void NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL);
注意:不是以下两个函数
virtual void OnDocumentComplete( VARIANT* URL);
virtual void OnNavigateComplete2( VARIANT* URL);
-------------------------------------------------------------------------
2. 声明一个成员变量,并在构造函数中进行初始化:
LPDISPATCH m_lpDisp;//用于判断网页加载是否真正完毕
m_lpDisp = NULL;//构造函数中初始化
-------------------------------------------------------------------------
3. 这两个函数的具体实现:(参照微软)
//配合NavigateComplete2,判断网页是否真正加载完毕,用于多Frame网页
void CXXXXView::DocumentComplete(LPDISPATCH pDisp,VARIANT* URL)
{
if(m_lpDisp &&(m_lpDisp == pDisp))//判断网页是否真正加载完毕,用于多Frame网页
{
//if the LPDISPATCH are same,that means it is the final DocumentComplete
TRACE("Document is done downloading");
AfxMessageBox("下载完毕");
m_lpDisp=NULL;//Reset glpDisp
}
}
//配合DocumentComplete,判断网页是否真正加载完毕,用于多Frame网页
void CXXXXView::NavigateComplete2(LPDISPATCH pDisp,VARIANT* URL)
{
//Check if glpDisp is NULL.If NULL,that means it is
//the top level NavigateComplete2. Save the LPDISPATCH
if(!m_lpDisp) m_lpDisp=pDisp;
}