IE中事件详细解析
DWebBrowserEvents2::DocumentComplete Event
void DocumentComplete( IDispatch *pDisp, VARIANT *URL );
pDisp: 指向一个文档所属window或者frame的IDispatch接口,次参数可以QueryInterface接口IWebBrowser2。
URL: 一个VT_BSTR类型的VARIANT指针,代表URL
DISPID : DISPID_DOCUMENTCOMPLETE
notes:
- URL可能和传递给WebBrowserControl的URL不一致,参数中得URL是规范化后的URL。也可能是经过服务器重定位后的URL。
- 这个事件在当文档被完整下载完后,READSTATE状态变为READYSTATE_COMPLETE后触发。
- 在没有frame的页面中,这个事件在加载完成后只触发一次。
- 有多个frame时,这个事件对每个frame均触发一次,对应一个相应DownloadBegin事件
- 参数的pDisp是触发这个事件的frame的IDispatch指针。
- 在下载过程中,highest frame(不一定是top-level frame),触发最终的DocumentComplete事件,这次的pDisp是指向highest frame的。
当控件的 IWebBrowser2::Visible属性是false时,是不会触发这个事件的,微软给出的解决方案是,将窗体的left的设为控件大小的负值,这样,IWebBrowser2::Visible为true,因而就能触发事件。
DWebBrowserEvents2::DownloadComplete Event
当一个navigation操作完成时(或挂起,失败时)触发。
DWebBrowserEvents2::ProgressChange Event
void ProgressChange( long Progress, long ProgressMax );
progress: 当前进度
progressMax: 最大进度
可以用这个事件来更新当前下载了多少字节数。当Progress是-1时,表示完成。