<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>准确 &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/%E5%87%86%E7%A1%AE/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Sun, 03 May 2020 13:25:32 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创]在CHtmlView中，判断一个页面加载完成的准确方法</title>
		<link>https://www.codelast.com/%e5%9c%a8chtmlview%e4%b8%ad%ef%bc%8c%e5%88%a4%e6%96%ad%e4%b8%80%e4%b8%aa%e9%a1%b5%e9%9d%a2%e5%8a%a0%e8%bd%bd%e5%ae%8c%e6%88%90%e7%9a%84%e5%87%86%e7%a1%ae%e6%96%b9%e6%b3%95/</link>
					<comments>https://www.codelast.com/%e5%9c%a8chtmlview%e4%b8%ad%ef%bc%8c%e5%88%a4%e6%96%ad%e4%b8%80%e4%b8%aa%e9%a1%b5%e9%9d%a2%e5%8a%a0%e8%bd%bd%e5%ae%8c%e6%88%90%e7%9a%84%e5%87%86%e7%a1%ae%e6%96%b9%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 14 Sep 2010 02:54:53 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[CHtmlView]]></category>
		<category><![CDATA[DocumentComplete]]></category>
		<category><![CDATA[准确]]></category>
		<category><![CDATA[判断]]></category>
		<category><![CDATA[加载]]></category>
		<category><![CDATA[完成]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[页面]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=93</guid>

					<description><![CDATA[<p>
	&#160;</p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">凌晨了，但是关于这个问题一定要记录下来，要不然以后不记得了，还得走弯路。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在做一个测试的时候，为了便于自动操作，用VC写了个软件来代替人工操作。简单地说，功能就是：不断地刷某URL，服务器那一端的程序会返回另一个URL，要看服务器端程序会不会出问题，同时要记录一些信息。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">两年多以来一直用VC开发，但是从未开发过浏览器相关的程序，这次我只能仓促上阵：用CHtmlView来实现一个超简浏览器，然后判断页面是否加载完成，在页面加载完成后再做后续处理。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
<span id="more-93"></span>	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#fff;">文章来源：http://www.codelast.com/</span></span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">查MSDN，便知道了OnDocumentComplete函数会由框架在加载完页面后触发，于是重载该函数，可是navigate到很多页面（例如<a href="http://www.sina.com.cn/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); ">www.sina.com.cn</a>）时，均会发生该函数被触发N次的现象，于是查啊查，发现原因在于这些页面中含有多个frame，每一个frame加载完成后，均会通知，在顶级frame加载完成后，会做最后一次通知，于是要判断整个页面加载完，就只能用其他的方法了。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">后来查到，未公开的函数DocumentComplete是一个关键，需要重载该函数。感谢VAssist的强大，我不需要查手册就直接把这个函数的原型敲出来了，具体说来，如果你要手工添加的话，请在你的CHtmlView继承类头文件中添加：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">public:<br />
	void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">然后在实现文件中添加：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">{</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#006400;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">// 这里写什么呢？</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">}</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">上面函数的实现部分写什么呢？就是前面所说的&#8220;判断页面是否加载完成&#8221;的代码了。我们从MS的<a href="http://support.microsoft.com/kb/180366/" target="_blank" rel="noopener noreferrer">这篇</a>惨不忍睹的机器翻译的文章里，还是可以得到很多启发的，我修改了一下，使得代码适合于VC 2005+IE7的环境，如下：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)<br />
	{<br />
	m_nCount++;&#160;&#160;&#160; <span style="color:#006400;">//&#160;这是一个类成员变量，用于计数</span><br />
	LPDISPATCH lpWBDisp = NULL;<br />
	HRESULT&#160;&#160;&#160; hr = NULL;</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">hr = m_pBrowserApp-&#62;QueryInterface(IID_IDispatch, (void**)&#38;lpWBDisp);<br />
	ASSERT(SUCCEEDED(hr));</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">if (pDisp == lpWBDisp)<br />
	{<br />
	CString strMessage;<br />
	strMessage.Format(&#8220;页面加载完成！\n\n进入DocumentComplete函数的次数：%d&#8221;,</span></span></span>&#8230; <a href="https://www.codelast.com/%e5%9c%a8chtmlview%e4%b8%ad%ef%bc%8c%e5%88%a4%e6%96%ad%e4%b8%80%e4%b8%aa%e9%a1%b5%e9%9d%a2%e5%8a%a0%e8%bd%bd%e5%ae%8c%e6%88%90%e7%9a%84%e5%87%86%e7%a1%ae%e6%96%b9%e6%b3%95/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
	&nbsp;</p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">凌晨了，但是关于这个问题一定要记录下来，要不然以后不记得了，还得走弯路。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在做一个测试的时候，为了便于自动操作，用VC写了个软件来代替人工操作。简单地说，功能就是：不断地刷某URL，服务器那一端的程序会返回另一个URL，要看服务器端程序会不会出问题，同时要记录一些信息。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">两年多以来一直用VC开发，但是从未开发过浏览器相关的程序，这次我只能仓促上阵：用CHtmlView来实现一个超简浏览器，然后判断页面是否加载完成，在页面加载完成后再做后续处理。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
<span id="more-93"></span>	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#fff;">文章来源：http://www.codelast.com/</span></span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">查MSDN，便知道了OnDocumentComplete函数会由框架在加载完页面后触发，于是重载该函数，可是navigate到很多页面（例如<a href="http://www.sina.com.cn/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); ">www.sina.com.cn</a>）时，均会发生该函数被触发N次的现象，于是查啊查，发现原因在于这些页面中含有多个frame，每一个frame加载完成后，均会通知，在顶级frame加载完成后，会做最后一次通知，于是要判断整个页面加载完，就只能用其他的方法了。</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">后来查到，未公开的函数DocumentComplete是一个关键，需要重载该函数。感谢VAssist的强大，我不需要查手册就直接把这个函数的原型敲出来了，具体说来，如果你要手工添加的话，请在你的CHtmlView继承类头文件中添加：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">public:<br />
	void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">然后在实现文件中添加：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">{</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#006400;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">// 这里写什么呢？</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">}</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">上面函数的实现部分写什么呢？就是前面所说的&ldquo;判断页面是否加载完成&rdquo;的代码了。我们从MS的<a href="http://support.microsoft.com/kb/180366/" target="_blank" rel="noopener noreferrer">这篇</a>惨不忍睹的机器翻译的文章里，还是可以得到很多启发的，我修改了一下，使得代码适合于VC 2005+IE7的环境，如下：</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)<br />
	{<br />
	m_nCount++;&nbsp;&nbsp;&nbsp; <span style="color:#006400;">//&nbsp;这是一个类成员变量，用于计数</span><br />
	LPDISPATCH lpWBDisp = NULL;<br />
	HRESULT&nbsp;&nbsp;&nbsp; hr = NULL;</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">hr = m_pBrowserApp-&gt;QueryInterface(IID_IDispatch, (void**)&amp;lpWBDisp);<br />
	ASSERT(SUCCEEDED(hr));</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">if (pDisp == lpWBDisp)<br />
	{<br />
	CString strMessage;<br />
	strMessage.Format(&ldquo;页面加载完成！\n\n进入DocumentComplete函数的次数：%d&rdquo;, m_nCount);<br />
	// Top-level Window object, so document has been loaded<br />
	MessageBox(strMessage);<br />
	}</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">lpWBDisp-&gt;Release();<br />
	}</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#fff;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">文章来源：http://www.codelast.com/</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); ">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">程序运行的部分效果如下（加载<a href="http://www.sina.com.cn/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); ">www.sina.com.cn</a>的页面时）：</span></span></span></p>
<p style="text-align: center;">
	<span style="color:#000;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><a href="http://www.codelast.com/wp-content/uploads/2010/09/1.png"><img decoding="async" alt="" class="size-full wp-image-94 aligncenter" height="126" src="http://www.codelast.com/wp-content/uploads/2010/09/1.png" title="1" width="230" /></a></span></span></span></p>
<p>
	<span style="color:#fff;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">文章来源：http://www.codelast.com/</span></span></span></p>
<p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Simsun; ">
	<span style="color: rgb(0, 0, 0); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color:#f00;">更新</span>：<span style="color:#800080;">根据网上的一篇文章得知：页面上的JavaScript脚本更改页面结构时，也有可能会触发加载完成事件，但是上面所说的方法却不适用于此情况。在这种情况下，可以延后一定的时间再处理。</span></span></span></span></p>
<p>	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%9c%a8chtmlview%e4%b8%ad%ef%bc%8c%e5%88%a4%e6%96%ad%e4%b8%80%e4%b8%aa%e9%a1%b5%e9%9d%a2%e5%8a%a0%e8%bd%bd%e5%ae%8c%e6%88%90%e7%9a%84%e5%87%86%e7%a1%ae%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
