<?xml version="1.0" encoding="GB2312"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:admin="http://webns.net/mvcb/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

	<channel>
		<title>
			<![CDATA[madgod的博客]]>
		</title>
		<link>http://madgod.bokee.com/index.html</link>
		<description>
			<![CDATA[欢迎访问madgod的博客]]>
		</description>
		<dc:language>zh-cn</dc:language>
		<dc:creator>email</dc:creator>
		<dc:date>2007-09-07T08:05:39Z</dc:date>
		<admin:generatorAgent rdf:resource="http://blog.bokee.com.com" />
	
					<item>
				<title>
					<![CDATA[告别]]>
				</title>
				<link>http://madgod.bokee.com/6274008.html</link>
				<description>
					<![CDATA[<p><p>告别<br />2007.5.14</p><p>轻轻的我走了<br />正如我轻轻的来<br />我轻轻的招手，作别西天的云彩</p><p>再见了，我的爱<br />再见了，那间清幽的咖啡馆</p><p>在天空，你依然翱翔<br />在这里，我继续寻找我的梦想</p><p>只是，这梦想，已不是当初的模样<br />它带着你最后留下的清香，在我的心中回荡，回荡</p><p>悄悄的我走了<br />正如我悄悄的来<br />我挥一挥衣袖，不带走一片云彩<br />-----------------------------------</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6274008@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-05-14  14:10</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6265523.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6265523&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6265523@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-05-9  13:03</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[被遗忘的时光]]>
				</title>
				<link>http://madgod.bokee.com/6262607.html</link>
				<description>
					<![CDATA[<p><p>是谁在敲打我窗 <br />是谁在撩动琴弦 <br />那一段被遗忘的时光<br />渐渐地回升出我心坎 </p><p>是谁在敲打我窗 <br />是谁在撩动琴弦 <br />记忆中那欢乐的情景 <br />慢慢地浮现在我的脑海 <br />那缓缓飘落的小雨 <br />不停地打在我窗 <br />只有那沉默无语的我 <br />不时地回想过去 </p><p>---------------------------------------</p><p>谨以此歌，献给我一个远去的朋友....</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6262607@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-05-7  17:26</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6260762.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6260762&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6260762@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-05-6  16:28</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6098071.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6098071&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6098071@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-02-8  11:18</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6040523.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6040523&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6040523@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-14  09:27</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6006763.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6006763&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6006763@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-1  00:26</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6006756.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6006756&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6006756@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-1  00:25</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6005499.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6005499&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6005499@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-12-31  19:07</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6002140.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6002140&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6002140@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-12-30  17:13</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/6001707.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6001707&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6001707@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-12-30  14:16</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/5829037.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=5829037&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					5829037@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-11-4  22:34</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/5808053.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=5808053&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					5808053@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-10-29  21:10</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[AMR的标准之争]]>
				</title>
				<link>http://madgod.bokee.com/5803493.html</link>
				<description>
					<![CDATA[]]>
				</description>
				<guid isPermaLink="false">
					5803493@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-10-28  13:06</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/5796066.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=5796066&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					5796066@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-10-26  10:30</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[MAP]]>
				</title>
				<link>http://madgod.bokee.com/5178405.html</link>
				<description>
					<![CDATA[<p><p>2006年6月7日 星期三 天气中雨转暴雨</p><p>由于界面设计过程中，核心队员没有参与，甚至也没有仔细阅读界面设计的制品。导致进入设计阶段后，重新提出很多意见，浪费了美工的工作，延迟了项目的进度。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					5178405@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-06-7  11:44</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[MAP日记]]>
				</title>
				<link>http://madgod.bokee.com/5067452.html</link>
				<description>
					<![CDATA[]]>
				</description>
				<guid isPermaLink="false">
					5067452@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-05-17  17:11</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[MAP日记]]>
				</title>
				<link>http://madgod.bokee.com/5060284.html</link>
				<description>
					<![CDATA[]]>
				</description>
				<guid isPermaLink="false">
					5060284@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-05-16  11:17</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[浅谈女性上进心。]]>
				</title>
				<link>http://madgod.bokee.com/5059799.html</link>
				<description>
					<![CDATA[]]>
				</description>
				<guid isPermaLink="false">
					5059799@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-05-16  09:38</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[MAP日记]]>
				</title>
				<link>http://madgod.bokee.com/5042740.html</link>
				<description>
					<![CDATA[<p><p>2006年5月12日 天气 多云转阵雨 星期五</p><p>今天把MAP项目中关于企信通的调查结果发给了老总，并让人告诉了老板。老板的反应还算好的，起码没有说不做。这让我一颗忐忑的心放了下来。</p><p>之前由于MAP无法通过短信平台下发，我曾一度以为项目将要被取消了。这是我第一次完全负责的一个项目，我可不想它早早夭折。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					5042740@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-05-12  23:58</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[对使用InstallShield的几点建议]]>
				</title>
				<link>http://madgod.bokee.com/894945.html</link>
				<description>
					<![CDATA[<p>我根据自己使用的经验，写下几点建议，希望能和大家分享！<br /><p>1、将目标程序/文件放在InstallShield工程的目录下；</p><p>这样，以后工程共享或者移动都比较方便，不用重新载入目标文件；</p><p>（未完，待续...）</p></p>]]>
				</description>
				<guid isPermaLink="false">
					894945@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-8  16:44</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何在VC中使用自定义的SkinMagic控件？]]>
				</title>
				<link>http://madgod.bokee.com/886906.html</link>
				<description>
					<![CDATA[<p>在SkinMagic中自定义了一个控件皮肤，并且添加到皮肤文件（.smf）；但是，如何在vc程序中使用它呢？本文以CSplitterWnd为例子，说明使用方法。<br /><p>我想对分割条类CSplitterWnd设计皮肤，SkinMagic没有提供该标准控件；于是，我自定义了该控件。</p><p>控件皮肤类型名叫:&quot;SkinSplitter&quot;，三个主要属性：</p><p>SplitterBar:IMAGERECT类型</p><p>Border:IMAGESETION类型</p><p>Gripper:IMAGESETION类型</p><p>并在皮肤文件中添加了该对象，对象名为&quot;SkinSplitter&quot;。</p><p>如图：</p><p><img src="file:///C:/Documents%20and%20Settings/pele/桌面/SkinSplitter.JPG" border="0" /></p><p>现在说说在程序中使用方法，假设我们已经将皮肤文件载入程序，我们重载CSplitterWnd的类名叫CXSplitterWnd。</p><p>1、注册控件皮肤对象</p><p>重载CSplitterWnd::OnCreate()，然后调用RegisterSkinWindow(m_hWnd,0)：</p><p>int CXSplitterWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) <br />{<br />&nbsp;&nbsp;&nbsp; if (CSplitterWnd::OnCreate(lpCreateStruct) == -1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return -1;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; RegisterSkinWindow(m_hWnd, 0);<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; return 0;<br />}<br /></p><p>2、控件销毁时，反注册控件皮肤对象</p><p>重载CSplitterWnd::OnDestroy()，然后调用UnregisterSkinWindow和CloseSkinData:</p><p>void CXSplitterWnd::OnDestroy() <br />{<br />&nbsp;&nbsp;&nbsp; CSplitterWnd::OnDestroy();<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; UnregisterSkinWindow(m_hWnd);<br />&nbsp;&nbsp;&nbsp; CloseSkinData(m_hSkin);// m_hSkin是在CXSplitterWnd添加的HSKIN类型成员<br />}<br /></p><p>3、添加消息WM_SKINDATACHANGED的响应函数</p><p>WM_SKINDATACHANGED是SkinMagic SDK自定义的消息，表示皮肤数据发生改变。编写消息响应函数请读者自行查找，很方便的。:)</p><p>我们定义该消息响应函数为OnSkinDataChanged；在其中载入皮肤文件中的对象SkinSplitter：</p><p>LRESULT CXSplitterWnd::OnSkinDataChanged(WPARAM wParam, LPARAM lParam)<br />{<br />&nbsp;if( m_hSkin ) CloseSkinData( m_hSkin );</p><p>&nbsp;m_hSkin = OpenSkinData(&quot;SkinSplitter&quot;);// 皮肤文件中的自定义皮肤对象<br />&nbsp;if( m_hSkin )<br />&nbsp;{<br />&nbsp;&nbsp;RedrawWindow();<br />&nbsp;}<br />&nbsp;return 1; <br />}<br /></p><p>4、调用DrawSkinImageRect、DrawSkinImageSetion等方法重绘分割条</p><p>我采取的方法是重载CSplitterWnd::OnPaint()，在其中重绘分割条：</p><p>void CXSplitterWnd::OnPaint()</p><p>{</p><p>&nbsp;&nbsp;&nbsp; ......</p><p>&nbsp;&nbsp; // rectSplitter是分割条的真实方形区域</p><p>&nbsp;&nbsp; // 获取分割条的真实方形区域的方法请看我的另一篇文章&quot;<a href="http://madgod.blogchina.com/blog/article_117342.1037268.html" target="_blank">如何获取分割条的真实RECT?</a>&quot;</p><p>&nbsp;&nbsp;DrawSkinImageRect(m_hSkin, _T(&quot;SplitterBar&quot;), dc, &amp;rectSplitter); // 根据皮肤对象SkinSplitter属性SplitterBar重绘<br />&nbsp;&nbsp;DrawSkinImageSection(m_hSkin, _T(&quot;Border&quot;), dc, &amp;rectSplitter); // 根据皮肤对象SkinSplitter属性Border重绘<br />&nbsp;&nbsp;DrawSkinImageSection(m_hSkin, _T(&quot;Gripper&quot;), dc, &amp;rectSplitter); // 根据皮肤对象SkinSplitter属性Gripper重绘<br /></p><p>}</p><p>到此结束！</p><p>其他自定义控件的使用方法大致相同，只是在重载的函数上可能不同。</p><p>希望能帮到大家，:)</p></p>]]>
				</description>
				<guid isPermaLink="false">
					886906@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-7  13:39</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何获取分割条的真实RECT?]]>
				</title>
				<link>http://madgod.bokee.com/876141.html</link>
				<description>
					<![CDATA[<p>是不是想重画分割条，但是用CSplitterWnd::GetRect(...)方法获取后，发现不对呢？这里教你如何获取分割条真实的方形区域。<br /><p>假如你的分割条类型是CMySplitterWnd(继承自CSplitterWnd)，对象是m_Splitter，则m_Splitter.GetRect(rect)获得的方形区域实际上是整个分割窗口的方形区域。如果想获得分割条的RECT，就得自己计算。方法如下：</p><p>//（假设我们重载了CSplitterWnd::OnPaint()）</p><p>void CMySplitterWnd::OnPaint() <br />{<br />&nbsp;&nbsp;&nbsp; CPaintDC dc(this); // device context for painting</p><p>&nbsp;&nbsp;&nbsp; int iColumn = 0;<br />&nbsp;&nbsp;&nbsp; int iRow = 0;<br />&nbsp;&nbsp;&nbsp; RECT rect1, rect2, rectSplitter;</p><p>&nbsp;&nbsp;&nbsp; // 获取每一个垂直的分割条的RECT</p><p>&nbsp;&nbsp;&nbsp; for (iColumn=1; iColumn<getcolumncount(); icolumn++)<br="" />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetPane(0, iColumn-1)-&gt;GetWindowRect(&amp;rect1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetPane(GetRowCount()-1, iColumn)-&gt;GetWindowRect(&amp;rect2);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectSplitter.top = rect1.top;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectSplitter.bottom = rect2.bottom;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectSplitter.right = rect2.left;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;rectSplitter.left = rect1.right;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ScreenToClient(&amp;rectSplitter);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ... do what u want to do!</p><p>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; // 获取每一个水平的分割条的RECT</p><p>&nbsp;&nbsp; &nbsp;for (iRow=1; iRow<getrowcount(); irow++)<br="" />&nbsp;&nbsp; &nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetPane(iRow-1, 0)-&gt;GetWindowRect(&amp;rect1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;GetPane(iRow, GetColumnCount()-1)-&gt;GetWindowRect(&amp;rect2);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectSplitter.top = rect1.bottom;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectSplitter.bottom = rect2.top;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;rectSplitter.right = rect2.right;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectSplitter.left = rect1.left;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ScreenToClient(&amp;rectSplitter);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ...do what u want to do!<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />}</p><p>&nbsp;</p><p>也有另外一种办法，就是用WTL7.1中的CSplitterWindowImpl类。它的成员函数GetSplitterBarRect(...)可以直接获得，但是WTL7.1只能支持Windows2000及XP以上的系统，对于开发商业产品，使不合适的。</p><p>:)</p></p>]]>
				</description>
				<guid isPermaLink="false">
					876141@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-5  16:24</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[带Web浏览器控件的Dialog中的菜单快捷键导致程序死掉！]]>
				</title>
				<link>http://madgod.bokee.com/870820.html</link>
				<description>
					<![CDATA[<p><p>VC6.0基于对话框的程序中使用SkinMagic，对话框带菜单和一个Microsoft Web浏览器控件；并且对菜单的每个子项都定义了快捷键（例如&quot;退出(&amp;X)&quot;）。但在使用的时候，弹出菜单，按下&quot;X&quot;按键时，程序却死掉，不响应任何操作了。</p><br /><p>VC6.0基于对话框的程序中使用SkinMagic，对话框带菜单和一个Microsoft Web浏览器控件；并且对菜单的每个子项都定义了快捷键（例如&quot;退出(&amp;X)&quot;）。但在使用的时候，弹出菜单，按下&quot;X&quot;按键时，程序却死掉，不响应任何操作了。</p><p>如何解决这个问题呢？</p><p>我们经过尝试，得出的办法是重载对话框的CxxDialog::PreTranslateMessage()成员函数，删除所有操作，包括CDialog::PreTranslateMessage()，只用 return FALSE;</p><p>如果对话框需要响应某些消息，可以直接写响应函数或者在PreTranslateMessage()中判断就可以了。</p><p>希望这能帮助大家及时避开这个难题，我们可是花了两天的时间才处理完的。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					870820@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-4  18:56</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[自然流产不都是坏事- -]]>
				</title>
				<link>http://madgod.bokee.com/860219.html</link>
				<description>
					<![CDATA[<p></p>]]>
				</description>
				<guid isPermaLink="false">
					860219@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-3  12:27</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何关闭、重启、重新登录Windows？]]>
				</title>
				<link>http://madgod.bokee.com/860218.html</link>
				<description>
					<![CDATA[<p><p>使用ExitWindowsEx()函数！</p><br /><p>ExitWindowsEx()函数的详细使用方法可以查询MSDN。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					860218@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-3  12:26</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何清除IE历史记录？]]>
				</title>
				<link>http://madgod.bokee.com/860164.html</link>
				<description>
					<![CDATA[<p>如何在程序中清除IE的历史记录呢？使用IUrlHistoryStg2接口！<br /><p>&nbsp;//初始化COM库<br />&nbsp;CoInitialize(NULL);</p><p>&nbsp;//建立IUrlHistoryStg2组件指针<br />&nbsp;IUrlHistoryStg2 * pUrlHistoryStg2=NULL;<br />&nbsp;//建立客户对象<br />&nbsp;HRESULT hr=CoCreateInstance(CLSID_CUrlHistory,NULL,CLSCTX_INPROC,IID_IUrlHistoryStg2,(LPVOID*)(&amp;pUrlHistoryStg2));<br />&nbsp;if(SUCCEEDED(hr))<br />&nbsp;{<br />&nbsp;&nbsp;//接口调用,清除历史记录（不包括今天的）<br />&nbsp;&nbsp;pUrlHistoryStg2-&gt;ClearHistory();</p><p>&nbsp;&nbsp;// 用枚举的方法清除今天的历史记录<br />&nbsp;&nbsp;IEnumSTATURL* pEnumURL = NULL;<br />&nbsp;&nbsp;hr = pUrlHistoryStg2-&gt;EnumUrls(&amp;pEnumURL);<br />&nbsp;&nbsp;STATURL suURL;<br />&nbsp;&nbsp;ULONG pceltFetched;<br />&nbsp;&nbsp;suURL.cbSize = sizeof(suURL);<br />&nbsp;&nbsp;hr = pEnumURL-&gt;Reset();<br />&nbsp;&nbsp;while((hr = pEnumURL-&gt;Next(1, &amp;suURL, &amp;pceltFetched)) == S_OK)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;hr = pUrlHistoryStg2-&gt;DeleteUrl(suURL.pwcsUrl, 0);<br />&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;pEnumURL-&gt;Release();<br />&nbsp;&nbsp;pUrlHistoryStg2-&gt;Release();<br />&nbsp;}<br />&nbsp;//关闭COM库的联接<br />&nbsp;CoUninitialize();<br /></p></p>]]>
				</description>
				<guid isPermaLink="false">
					860164@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-3  12:20</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[情色时代完美七日性处方- -]]>
				</title>
				<link>http://madgod.bokee.com/853714.html</link>
				<description>
					<![CDATA[<p></p>]]>
				</description>
				<guid isPermaLink="false">
					853714@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-2  15:23</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[CFrameWnd、CDocument和CView的访问关系。]]>
				</title>
				<link>http://madgod.bokee.com/853713.html</link>
				<description>
					<![CDATA[<p>用vc写一个稍微大一点的程序，常常会用到框架和视图，但大家常常对他们之间的访问方法感到困惑。本篇文章希望能帮助大家拨开迷雾见青天。<br /><p>1、CFrameWnd访问CDocument</p><p>&nbsp;&nbsp;&nbsp; CFameWnd::GetActiveDocument()能访问到和框架关联的CDocument对象。</p><p>&nbsp;</p><p>2、CDocument访问CView</p><p>&nbsp;&nbsp;&nbsp; 这里给出范例</p><p>&nbsp;&nbsp;&nbsp; CDocument doc;</p><p>&nbsp;&nbsp;&nbsp; ...</p><p>&nbsp;&nbsp; POSITION pos = doc.GetFirstViewPosition();<br />&nbsp;&nbsp; while (pos != NULL)<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CView* pView = doc.GetNextView(pos);<br />&nbsp;&nbsp; }</p><p><br />3、CView访问CDocument</p><p>&nbsp;&nbsp;&nbsp; 用CView::GetDocument()即可。</p><p>&nbsp;</p><p>4、CView访问CFrameWnd</p><p>&nbsp;&nbsp;&nbsp; 用继承自CWnd的GetParent().</p><p>&nbsp;</p><p>5、CDocument访问CFrameWnd</p><p>&nbsp;&nbsp;&nbsp; 通过先获得CView，再获取其父窗口。即结合2、4。</p><p>&nbsp;</p><p>6、CFrameWnd访问CView</p><p>&nbsp;&nbsp;&nbsp; 通过先获得CDocument，在获取CView。即结合1、2。</p><p>&nbsp;</p><p>本人对框架、视图和文档也了解不深，如有不实之处，请指教。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					853713@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-2  15:23</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[对话框如何响应键盘按键？]]>
				</title>
				<link>http://madgod.bokee.com/850918.html</link>
				<description>
					<![CDATA[<p>这里给出一个对话框响应键盘按键的例子。<br /><p>对话框响应键盘按键，有几种方法：</p><p>1、重载对话框的PreTranslateMessage成员函数;<br />2、注册热键；<br />3、用加速键；<br />有某些按键，是无法用方法1捕捉的（如Alt+TAB）;不过，对于多数按键<br />应该可以满足了。<br />这里就给出方法1的例子：</p><p>BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) <br />{<br />&nbsp;&nbsp;&nbsp; if (WM_KEYDOWN == pMsg-&gt;message)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (VK_UP == pMsg-&gt;wParam)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {// 向上键</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE; // 记得要return TRUE哦；不然，窗口会继续处理该消息<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (0x41==pMsg-&gt;wParam &amp;&amp; GetAsyncKeyState(VK_CONTROL)&gt;&gt;((sizeof(SHORT) * 8) - 1) )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {// Ctrl+A </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE; // 记得要return TRUE哦；不然，窗口会继续处理该消息<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; }else if (WM_SYSKEYDOWN == pMsg-&gt;message)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (0x41==pMsg-&gt;wParam &amp;&amp; GetAsyncKeyState(VK_MENU)&gt;&gt;((sizeof(SHORT) * 8) - 1) )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {// Alt+A；记住了哦，Alt键要用WM_SYSKEYDOWN和VK_MENU<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; return CDialog::PreTranslateMessage(pMsg);</p><p>}</p><p>至于热键和加速键，我另外再写文章告诉大家。:)<br /></p></p>]]>
				</description>
				<guid isPermaLink="false">
					850918@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-2  10:35</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何在程序中创建快捷方式？]]>
				</title>
				<link>http://madgod.bokee.com/843632.html</link>
				<description>
					<![CDATA[<p>这里给出一个创建快捷方式的例子，是使用IShellLink和IPersistFile两个COM接口实现的。<br /><p>例子代码如下：</p><p>&nbsp;CFileDialog openDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER );<br />&nbsp;if (IDCANCEL==openDlg.DoModal())<br />&nbsp;{<br />&nbsp;&nbsp;return;<br />&nbsp;}</p><p>&nbsp;CString csFile, csFileLnk, csDirectory;<br />&nbsp;csFile = openDlg.GetPathName();<br />&nbsp;<br />&nbsp;csFileLnk = csFile.Left(csFile.GetLength()-openDlg.GetFileExt().GetLength()-1);<br />&nbsp;csFileLnk += _T(&quot;.lnk&quot;);</p><p>&nbsp;csDirectory = csFile.Left(csFile.GetLength()-openDlg.GetFileName().GetLength());</p><p>&nbsp;HRESULT hres=NULL;<br />&nbsp;IShellLink* psl; <br />&nbsp;&nbsp;&nbsp; // Get a pointer to the IShellLink interface. <br />&nbsp;hres = CoInitialize(NULL);<br />&nbsp;if (!SUCCEEDED(hres))<br />&nbsp;{<br />&nbsp;&nbsp;AfxMessageBox(_T(&quot;COM initialized failed.&quot;));<br />&nbsp;&nbsp;return;<br />&nbsp;}</p><p>&nbsp;&nbsp;&nbsp; hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&amp;psl);</p><p>&nbsp;if (!SUCCEEDED(hres))<br />&nbsp;{<br />&nbsp;&nbsp;AfxMessageBox(_T(&quot;Create instance failed.&quot;));<br />&nbsp;&nbsp;CoUninitialize();<br />&nbsp;&nbsp;return;<br />&nbsp;}</p><p>&nbsp;psl-&gt;SetDescription(_T(&quot;测试快捷方式&quot;));<br />&nbsp;psl-&gt;SetIconLocation(csFile, 0);<br />&nbsp;psl-&gt;SetPath(csFile);<br />&nbsp;psl-&gt;SetShowCmd(SW_SHOWNORMAL);<br />&nbsp;psl-&gt;SetWorkingDirectory(csDirectory);</p><p>&nbsp;IPersistFile* ppf; <br />&nbsp;hres = psl-&gt;QueryInterface(IID_IPersistFile, (void**)&amp;ppf);</p><p>&nbsp;if (!SUCCEEDED(hres))<br />&nbsp;{<br />&nbsp;&nbsp;AfxMessageBox(_T(&quot;Query interface failed.&quot;));<br />&nbsp;&nbsp;CoUninitialize();<br />&nbsp;&nbsp;return;<br />&nbsp;&nbsp;<br />&nbsp;}</p><p>&nbsp;WCHAR wsz[MAX_PATH];<br />&nbsp;MultiByteToWideChar(CP_ACP, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_T(csFileLnk), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wsz, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX_PATH); </p><p>&nbsp;hres = ppf-&gt;Save(wsz, FALSE);<br />&nbsp;if (!SUCCEEDED(hres))<br />&nbsp;{<br />&nbsp;&nbsp;AfxMessageBox(_T(&quot;Save failed.&quot;));<br />&nbsp;<br />&nbsp;}</p><p>&nbsp;ppf-&gt;Release();</p><p>psl-&gt;Release();</p><p>&nbsp;CoUninitialize();</p><p>&nbsp;AfxMessageBox(_T(&quot;创建成功!&quot;));<br /></p><p>&nbsp;</p></p>]]>
				</description>
				<guid isPermaLink="false">
					843632@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-1  14:07</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[女人“骂”男人，奥妙无穷- -]]>
				</title>
				<link>http://madgod.bokee.com/843195.html</link>
				<description>
					<![CDATA[<p></p>]]>
				</description>
				<guid isPermaLink="false">
					843195@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-1  13:28</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[如何去掉Web浏览器控件的滚动条？（非原创作品）]]>
				</title>
				<link>http://madgod.bokee.com/843194.html</link>
				<description>
					<![CDATA[<p>Web浏览器控件的属性中，没有设置滚动条，也没有开放接口设置滚动条属性，那我们该怎么做才能使浏览器控件的滚动条消失呢？<br /><p><strong><font color="#ff3300">[原创作者：Dandy Cheung]</font></strong></p><p>假设你在对话框CTestWebDlg中创建一个浏览器控件m_webNavigator，则在CTestWebDlg创建CWebUIController类型成员m_webUICtrl。然后在CTestWebDlg::OnInitDialog中填入以下代码就可以实现消除浏览器控件的滚动条：</p><p>&nbsp;LPUNKNOWN pUnk = m_webNavigator.GetControlUnknown();<br />&nbsp;if(pUnk != NULL)<br />&nbsp;{<br />&nbsp;&nbsp;IWebBrowser2* pWB2 = NULL;<br />&nbsp;&nbsp;HRESULT hr = pUnk-&gt;QueryInterface(IID_IWebBrowser2, (void**)&amp;pWB2);<br />&nbsp;&nbsp;if(SUCCEEDED(hr) &amp;&amp; pWB2 != NULL)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;m_webUICtrl.Enable3DBorder(FALSE);&nbsp; // 此代码禁止三维边框<br />&nbsp;&nbsp;&nbsp;m_webUICtrl.EnableScrollBar(FALSE); // 此代码禁止滚动条<br />&nbsp;&nbsp;&nbsp;m_webUICtrl.SetWebBrowser(pWB2);<br />&nbsp;&nbsp;&nbsp;pWB2-&gt;Release();<br />&nbsp;&nbsp;}<br />&nbsp;}&nbsp;<br />&nbsp;<br />&nbsp;// 必须！因为第一个页面不能实现禁止滚动条，再下一个页面才可以！<br />&nbsp;m_webNavigator.Navigate(_T(&quot;about:blank&quot;), NULL, NULL, NULL, NULL);<br />&nbsp;// 开始浏览<br />&nbsp;m_webNavigator.Navigate(_T(&quot;http://madgod.blogchina.com&quot;), NULL, NULL, NULL, NULL);<br /></p><p>不过，有一个限制，浏览器控件浏览的第一个页面时，无法消除滚动条。</p><p>CWebUIController的源代码全部放在一个.h文件中，如下：</p><p>// class name: CWebUIController<br />// author:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dandy Cheung<br />// email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dandycheung@21cn.com<br />// date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2005-1-4</p><p>#ifndef __WEBUICONTROLLER_H__<br />#define __WEBUICONTROLLER_H__</p><p>#if _MSC_VER &gt; 1000<br />#pragma once<br />#endif // _MSC_VER &gt; 1000</p><p>#include <mshtmhst.h /><br />#include <exdisp.h /><br />#include <exdispid.h /></p><p>inline <br />HRESULT _CoAdvise(IUnknown* pUnkCP, IUnknown* pUnk, const IID&amp; iid, LPDWORD pdw)<br />{<br />&nbsp;&nbsp;&nbsp; IConnectionPointContainer* pCPC = NULL;<br />&nbsp;&nbsp;&nbsp; IConnectionPoint* pCP = NULL;<br />&nbsp;&nbsp;&nbsp; HRESULT hRes = pUnkCP-&gt;QueryInterface(IID_IConnectionPointContainer, (void**)&amp;pCPC);<br />&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hRes) &amp;&amp; pCPC != NULL)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hRes = pCPC-&gt;FindConnectionPoint(iid, &amp;pCP);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hRes) &amp;&amp; pCP != NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hRes = pCP-&gt;Advise(pUnk, pdw);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCP-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCPC-&gt;Release();<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; return hRes;<br />}</p><p>inline <br />HRESULT _CoUnadvise(IUnknown* pUnkCP, const IID&amp; iid, DWORD dw)<br />{<br />&nbsp;&nbsp;&nbsp; IConnectionPointContainer* pCPC = NULL;<br />&nbsp;&nbsp;&nbsp; IConnectionPoint* pCP = NULL;<br />&nbsp;&nbsp;&nbsp; HRESULT hRes = pUnkCP-&gt;QueryInterface(IID_IConnectionPointContainer, (void**)&amp;pCPC);<br />&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hRes) &amp;&amp; pCPC != NULL)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hRes = pCPC-&gt;FindConnectionPoint(iid, &amp;pCP);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hRes) &amp;&amp; pCP != NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hRes = pCP-&gt;Unadvise(dw);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCP-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCPC-&gt;Release();<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; return hRes;<br />}</p><p>class CWebUIController : public DWebBrowserEvents2, public IDocHostUIHandler<br />{<br />&nbsp;&nbsp;&nbsp; ULONG m_uRefCount;</p><p>&nbsp;&nbsp;&nbsp; IWebBrowser2* m_pWebBrowser2;<br />&nbsp;&nbsp;&nbsp; DWORD m_dwCookie;</p><p>&nbsp;&nbsp;&nbsp; BOOL m_bEnable3DBorder;<br />&nbsp;&nbsp;&nbsp; BOOL m_bEnableScrollBar;</p><p>public:<br />&nbsp;&nbsp;&nbsp; CWebUIController() : m_uRefCount(0), m_pWebBrowser2(NULL), m_dwCookie(0)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bEnable3DBorder = TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bEnableScrollBar = TRUE;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; virtual ~CWebUIController()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetWebBrowser(NULL);<br />&nbsp;&nbsp;&nbsp; }</p><p>protected:<br />&nbsp;&nbsp;&nbsp; // IUnknown Methods<br />&nbsp;&nbsp;&nbsp; STDMETHOD(QueryInterface)(REFIID riid, void** ppvObject)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsEqualGUID(riid, DIID_DWebBrowserEvents2))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ppvObject = (DWebBrowserEvents2*)this;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddRef();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(IsEqualGUID(riid, IID_IDocHostUIHandler) ||<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsEqualGUID(riid, IID_IUnknown))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ppvObject = (IDocHostUIHandler*)this;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddRef();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_FALSE;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD_(ULONG, AddRef)(void)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_uRefCount++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m_uRefCount;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD_(ULONG, Release)(void)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_uRefCount--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ULONG uRefCount = m_uRefCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(uRefCount == 0)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;AfxMessageBox(_T(&quot;hi 1&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete this;<br />&nbsp;&nbsp;&nbsp;AfxMessageBox(_T(&quot;hi 2&quot;));<br />&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return uRefCount;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; // IDispatch Methods<br />&nbsp;&nbsp;&nbsp; STDMETHOD(GetTypeInfoCount)(unsigned int FAR* pctinfo)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo** pptinfo)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int cNames, LCID lcid, DISPID FAR* rgDispId)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(Invoke)(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISPPARAMS* pDispParams, VARIANT* pvarResult,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXCEPINFO* pexcepinfo, UINT* puArgErr)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!pDispParams)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_INVALIDARG;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(dispidMember)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The parameters for this DISPID are as follows:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // [0]: URL to navigate to - VT_BYREF|VT_VARIANT<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // [1]: An object that evaluates to the top-level or frame<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebBrowser object corresponding to the event. <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DISPID_NAVIGATECOMPLETE2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The IDocHostUIHandler association must be set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // up every time we navigate to a new page.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pDispParams-&gt;cArgs &gt;= 2 &amp;&amp; pDispParams-&gt;rgvarg[1].vt == VT_DISPATCH)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCustomDoc(pDispParams-&gt;rgvarg[1].pdispVal);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_INVALIDARG;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_OK;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; // IDocHostUIHandler Methods<br />protected:<br />&nbsp;&nbsp;&nbsp; STDMETHOD(ShowContextMenu)(DWORD dwID, POINT FAR* ppt, IUnknown FAR* pcmdtReserved,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IDispatch FAR* pdispReserved)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(GetHostInfo)(DOCHOSTUIINFO FAR* pInfo)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pInfo != NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pInfo-&gt;dwFlags |= (m_bEnable3DBorder ? 0 : DOCHOSTUIFLAG_NO3DBORDER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pInfo-&gt;dwFlags |= (m_bEnableScrollBar ? 0 : DOCHOSTUIFLAG_SCROLL_NO);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_OK;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(ShowUI)(DWORD dwID, IOleInPlaceActiveObject FAR* pActiveObject,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOleCommandTarget FAR* pCommandTarget,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOleInPlaceFrame&nbsp; FAR* pFrame,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOleInPlaceUIWindow FAR* pDoc)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(HideUI)(void)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(UpdateUI)(void)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; STDMETHOD(EnableModeless)(BOOL fEnable)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(OnDocWindowActivate)(BOOL fActivate)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(OnFrameWindowActivate)(BOOL fActivate)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(ResizeBorder)(LPCRECT prcBorder, IOleInPlaceUIWindow FAR* pUIWindow,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL fRameWindow)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(TranslateAccelerator)(LPMSG lpMsg, const GUID FAR* pguidCmdGroup,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD nCmdID)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(GetOptionKeyPath)(LPOLESTR FAR* pchKey, DWORD dw)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(GetDropTarget)(IDropTarget* pDropTarget,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IDropTarget** ppDropTarget)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(GetExternal)(IDispatch** ppDispatch)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(TranslateUrl)(DWORD dwTranslate, OLECHAR* pchURLIn,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OLECHAR** ppchURLOut)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; STDMETHOD(FilterDataObject)(IDataObject* pDO, IDataObject** ppDORet)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return E_NOTIMPL;<br />&nbsp;&nbsp;&nbsp; }</p><p>public:<br />&nbsp;&nbsp;&nbsp; HRESULT SetWebBrowser(IWebBrowser2* pWebBrowser2)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Unadvise the event sink, if there was a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // previous reference to the WebBrowser control.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m_pWebBrowser2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pWebBrowser2-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _CoUnadvise(m_pWebBrowser2, DIID_DWebBrowserEvents2, m_dwCookie);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pWebBrowser2 = pWebBrowser2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pWebBrowser2 == NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return S_OK;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pWebBrowser2-&gt;AddRef();</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _CoAdvise(m_pWebBrowser2, (IDispatch*)this, DIID_DWebBrowserEvents2, &amp;m_dwCookie);<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; void Enable3DBorder(BOOL bEnable = TRUE)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bEnable3DBorder = bEnable;<br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; void EnableScrollBar(BOOL bEnable = TRUE)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bEnableScrollBar = bEnable;<br />&nbsp;&nbsp;&nbsp; }</p><p>private:<br />&nbsp;&nbsp;&nbsp; void SetCustomDoc(LPDISPATCH lpDisp)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(lpDisp == NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IWebBrowser2* pWebBrowser2 = NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HRESULT hr = lpDisp-&gt;QueryInterface(IID_IWebBrowser2, (void**)&amp;pWebBrowser2);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hr) &amp;&amp; pWebBrowser2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IDispatch* pDoc = NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hr = pWebBrowser2-&gt;get_Document(&amp;pDoc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hr) &amp;&amp; pDoc)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ICustomDoc* pCustDoc = NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hr = pDoc-&gt;QueryInterface(IID_ICustomDoc, (void**)&amp;pCustDoc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SUCCEEDED(hr) &amp;&amp; pCustDoc != NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCustDoc-&gt;SetUIHandler(this);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCustDoc-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDoc-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pWebBrowser2-&gt;Release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />};</p><p>#endif // __WEBUICONTROLLER_H__</p><p><br />&nbsp;</p></p>]]>
				</description>
				<guid isPermaLink="false">
					843194@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-03-1  13:28</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[另类方法改变对话框左下角的“InstallShield Wizard”字样]]>
				</title>
				<link>http://madgod.bokee.com/752894.html</link>
				<description>
					<![CDATA[<p><p>简单方法修改对话框左下角标签</p><br><p>大家知道，InstallShield（我使用InstallShield X Premier）没有开放改变对话框左下角的标签方法。</p><p>我自己想办法修改了一下，虽然比较笨，但还是可行的。</p><p>方法是在同样的位置放置一个控件，大小要比原来的大，且覆盖住。然后写上自己的标签，这样就可以了。:)</p><p>不过，这个方法的缺点是要逐个修改所有的对话框。</p><p>如果您知道另外的方法，请您指教。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					752894@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-02-19  12:47</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://madgod.bokee.com/471426.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=119904','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=471426&blogID=117305'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					471426@http://madgod.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2004-12-31  13:20</dc:date>
			</item>
			</channel>
</rss>

