CHtmlView \ WebBrowser2 如何真正知道DocumentComplete

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

CHtmlView \ WebBrowser2 如何真正知道DocumentComplete

(下文针对CHtmlView,由于WebBrowser2与其类似不再累赘。)

虽然CHtmlView提供了下面虚函数来得到文档解析完毕的事件。

virtual void OnDocumentComplete(

LPCTSTR lpszURL

);

但这个事件在网页存在 frame 的时候不再那么有效了,因为一旦某个frame激发了OnDownloadBegin,那么就会激发OnDocumentComplete,结果你会发现你的一个网页激发了多个OnDocumentComplete,而你也不知道哪个OnDocumentComplete真正能告诉你网页处理完毕了。

解决办法有三个:

方法一: 通过CHtmlView::OnProgressChange获取结束事件。 不理会OnDocumentComplete,

在OnProgressChange中有两个参数:

virtual void OnProgressChange(

long nProgress,

long nProgressMax

);

当第一个参数nProgress为-1时表示网页处理完毕。

另外两种方法可以在微软的知识库获得:

http://support.microsoft.com/support/kb/articles/q180/3/66.asp

HOWTO: Determine When a Page Is Done Loading in WebBrowser Control

Q180366

对于其中的方法一有一点补充,在上文support的代码中其在通过调用GetControlUnknown()获得WebBrowser控件的IUnknown指针后调用Release将接口释放了。

这是千万不行的!这将导致你的WebBrowser控件无法清除,详细可以参见MSDN对CWnd::GetControlUnknown的介绍。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航