﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-技术备忘录-随笔分类-C++</title><link>http://www.cppblog.com/jerrychan/category/9168.html</link><description>c++及图形学</description><language>zh-cn</language><lastBuildDate>Sat, 21 Feb 2009 16:17:37 GMT</lastBuildDate><pubDate>Sat, 21 Feb 2009 16:17:37 GMT</pubDate><ttl>60</ttl><item><title>解决 activex 需要激活的方法</title><link>http://www.cppblog.com/jerrychan/archive/2009/02/21/74529.html</link><dc:creator>jerrychan</dc:creator><author>jerrychan</author><pubDate>Sat, 21 Feb 2009 12:29:00 GMT</pubDate><guid>http://www.cppblog.com/jerrychan/archive/2009/02/21/74529.html</guid><wfw:comment>http://www.cppblog.com/jerrychan/comments/74529.html</wfw:comment><comments>http://www.cppblog.com/jerrychan/archive/2009/02/21/74529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jerrychan/comments/commentRss/74529.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jerrychan/services/trackbacks/74529.html</trackback:ping><description><![CDATA[用脚本来输出object ， 文章<a href="http://www.sitepoint.com/article/activex-activation-issue-ie/">http://www.sitepoint.com/article/activex-activation-issue-ie/</a>&nbsp;解决了flash 的问题，也可以用来处理自己的activex<br>
<img src ="http://www.cppblog.com/jerrychan/aggbug/74529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jerrychan/" target="_blank">jerrychan</a> 2009-02-21 20:29 <a href="http://www.cppblog.com/jerrychan/archive/2009/02/21/74529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中嵌入ie浏览器总结(4) - 对话框拖动</title><link>http://www.cppblog.com/jerrychan/archive/2008/12/20/69951.html</link><dc:creator>jerrychan</dc:creator><author>jerrychan</author><pubDate>Sat, 20 Dec 2008 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/jerrychan/archive/2008/12/20/69951.html</guid><wfw:comment>http://www.cppblog.com/jerrychan/comments/69951.html</wfw:comment><comments>http://www.cppblog.com/jerrychan/archive/2008/12/20/69951.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/jerrychan/comments/commentRss/69951.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jerrychan/services/trackbacks/69951.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 前面忘了写这个问题，就是对话框的拖动问题。就像我前面的图片展示的对话框，一般的windows对话框是可以拖着标题栏移动的，但是我们这里没有任何原来的标题栏了，只有html页面，怎么拖呢？ 好像有点麻烦。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 冥思苦想之后，想到一种办法，通过前面的接口给c++发指令，让c++移动窗口，页面上计算好拖动的距离。html里面页面的拖动还是比较简单的，c++里面移动也就是调用 MoveWindow。由于前面的通讯方法还是比较灵活，没用多少时间，就把这个功能实现了。但是一运行看，不太对劲，拖动过程拖尾现象太明显。可能是c++不断调用 MoveWindow 重绘效率比较低。这可麻烦了<img height=20 src="http://www.cppblog.com/Emoticons/QQ/16.gif" width=20 border=0>。这时候，突然想到普通对话框拖动的时候，是一个虚框在那里动，原来的对话框是不动的，鼠标放开后，对话框才移过去。 能不能做到这样呢？ 但是windows实现这个方法的细节不得而知，怎么做呢？&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还是google好啊，经过一番搜索，找到了答案：&nbsp;<br>&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;TooltipDlg::moveWin(&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">wxString</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">args&nbsp;)<br><img id=Codehighlighter1_62_288_Open_Image onclick="this.style.display='none'; Codehighlighter1_62_288_Open_Text.style.display='none'; Codehighlighter1_62_288_Closed_Image.style.display='inline'; Codehighlighter1_62_288_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_62_288_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_288_Closed_Text.style.display='none'; Codehighlighter1_62_288_Open_Image.style.display='inline'; Codehighlighter1_62_288_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_62_288_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_62_288_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(args.size()</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;x,y;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;args[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].ToLong(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">x);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;args[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].ToLong(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">y);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ix,iy;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ix&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;iy&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;y;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ClientToScreen(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ix,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">iy);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;::SendMessage((HWND)</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetHWND(),WM_NCMOUSEMOVE,HTCAPTION,MAKELPARAM(ix,&nbsp;iy));&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
&nbsp;&nbsp; 搞定了，简单吧，真是没想到这么简单。运行后发现，真的和windows的对话框移动一模一样了，太好了<img height=20 src="http://www.cppblog.com/Emoticons/QQ/14.gif" width=20 border=0><br><br>今天一鼓作气把前面几天的工作都总结了下来，还真是敲得手有点累。但是这些东西确实是不太常规的方法，找解决问题的方法很难，这里先把他们记录下来，免得以后找不到了。以前确实有很多知识都是用了就丢一边找不到了。 也希望给有类似疑问的朋友一个帮助。 <br>
<img src ="http://www.cppblog.com/jerrychan/aggbug/69951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jerrychan/" target="_blank">jerrychan</a> 2008-12-20 23:08 <a href="http://www.cppblog.com/jerrychan/archive/2008/12/20/69951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中嵌入ie浏览器总结(3) - wxIE  的 bug解决及最后效果展示</title><link>http://www.cppblog.com/jerrychan/archive/2008/12/20/69949.html</link><dc:creator>jerrychan</dc:creator><author>jerrychan</author><pubDate>Sat, 20 Dec 2008 14:56:00 GMT</pubDate><guid>http://www.cppblog.com/jerrychan/archive/2008/12/20/69949.html</guid><wfw:comment>http://www.cppblog.com/jerrychan/comments/69949.html</wfw:comment><comments>http://www.cppblog.com/jerrychan/archive/2008/12/20/69949.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/jerrychan/comments/commentRss/69949.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jerrychan/services/trackbacks/69949.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面两个问题的解决，心里想： 这下好了，解决了这两个问题，下一步做界面就简单多了，不像以前，直接用mfc或第三方库做，要做出好看效果真是很难。编译好，运行了，发现效果还不错。但是实现到里面的脚本的时候，发现出了问题，不响应键盘消息了<img height=20 src="http://www.cppblog.com/Emoticons/QQ/11.gif" width=20 border=0>。而且在页面文本框里面按tab键，光标不是跑到下一个文本框，而是不见了。之前有这个现象，但是忙于解决前面的问题，没有注意到。这下可完了，不会前工尽弃吧，那可麻烦大了。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; google了半天，问了朋友，还是不知道什么原因。因为wxIE及嵌入浏览器本身是比较偏门的问题，确实很难找到答案。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 山穷水尽疑无路，柳暗花明又一村。好不容易，在google上找到了一个类似的问题，回答的说，这是wxIE的bug，在wxPython的项目中，这个问题已经解决了。下载下来编译后，运行试试看，搞定了<img height=20 src="http://www.cppblog.com/Emoticons/QQ/23.gif" width=20 border=0>。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是还得和之前的修改合并，合并过程中又发现了一个问题。前文中提到过，通过IOleObject 接口来设置IDocHostUIHandler方法，我开始就是用这种方法。结果合并完后，发现还是不响应键盘消息<img height=20 src="http://www.cppblog.com/Emoticons/QQ/19.gif" width=20 border=0>。<br>&nbsp;&nbsp;&nbsp; 调了半天，才发现，wxIE原来已经实现过IOleClientSite 接口，我把自己的接口设上去，把wxIE的给替换掉了，所以导致了不正常的结果。 经过一番调整后，终于正常了<img height=20 src="http://www.cppblog.com/Emoticons/QQ/14.gif" width=20 border=0>。<br>&nbsp;&nbsp; 自此，用html做c++程序界面的基础工作算是告一段落了，下面就是完成接口工作和页面脚本了。希望不要再遇到什么问题。<br>&nbsp;&nbsp;&nbsp;&nbsp; 我在这里把这些问题记录下来，以备以后查用，也愿其他朋友不要再遇到我一样的困扰。<br><br>&nbsp;&nbsp;&nbsp; 下面截一张做出来的界面图：<br><img height=270 alt="" src="http://www.cppblog.com/images/cppblog_com/jerrychan/login.jpg" width=373 border=0><br><br>这是一个对话框，完成前面的基础工作后，只要设计师设计好页面，我们几分钟就可以继承到c++里面，再花点写接口和脚本的时间，比原来用mfc做界面，不知要节省多少时间。这个界面比较简单，但是只要是能设计出的界面，我们都能让他集成进来。<br>有兴趣的朋友也不妨试试这种做界面的方法。<br><br>
<img src ="http://www.cppblog.com/jerrychan/aggbug/69949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jerrychan/" target="_blank">jerrychan</a> 2008-12-20 22:56 <a href="http://www.cppblog.com/jerrychan/archive/2008/12/20/69949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中嵌入ie浏览器总结(2) - 双向通讯</title><link>http://www.cppblog.com/jerrychan/archive/2008/12/20/69942.html</link><dc:creator>jerrychan</dc:creator><author>jerrychan</author><pubDate>Sat, 20 Dec 2008 14:26:00 GMT</pubDate><guid>http://www.cppblog.com/jerrychan/archive/2008/12/20/69942.html</guid><wfw:comment>http://www.cppblog.com/jerrychan/comments/69942.html</wfw:comment><comments>http://www.cppblog.com/jerrychan/archive/2008/12/20/69942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jerrychan/comments/commentRss/69942.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jerrychan/services/trackbacks/69942.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp; 第一步解决了边框和上下文菜单问题，第二部就是要解决c++程序和html页面交互的问题。最开始的想法是通过c++去更新页面内容的方式来完成c++-&gt;html的通讯，通过BeforeNavigate2 接口，截获页面url地址的方式来完成html-&gt;c++的通讯。但是这种方式存在以下缺点：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/jerrychan/archive/2008/12/20/69942.html'>阅读全文</a><img src ="http://www.cppblog.com/jerrychan/aggbug/69942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jerrychan/" target="_blank">jerrychan</a> 2008-12-20 22:26 <a href="http://www.cppblog.com/jerrychan/archive/2008/12/20/69942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单</title><link>http://www.cppblog.com/jerrychan/archive/2008/12/20/69928.html</link><dc:creator>jerrychan</dc:creator><author>jerrychan</author><pubDate>Sat, 20 Dec 2008 14:00:00 GMT</pubDate><guid>http://www.cppblog.com/jerrychan/archive/2008/12/20/69928.html</guid><wfw:comment>http://www.cppblog.com/jerrychan/comments/69928.html</wfw:comment><comments>http://www.cppblog.com/jerrychan/archive/2008/12/20/69928.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/jerrychan/comments/commentRss/69928.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jerrychan/services/trackbacks/69928.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 最近项目中用html 来做界面，也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作，mfc也基本是类似的，由于wxwidget中已经做了一个封装wxie，但是开发过程中也遇到了不少问题，在此做一下总结：&nbsp;</p>
<ol>
    <li>ie边框 及上下文菜单<br>&nbsp;&nbsp; 普通嵌入到程序里面的浏览器页面都会有一个灰色的边框，这样放到程序里面就很难看。目前网上流行的办法添加css：<br>
    <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_4_18_Open_Image onclick="this.style.display='none'; Codehighlighter1_4_18_Open_Text.style.display='none'; Codehighlighter1_4_18_Closed_Image.style.display='inline'; Codehighlighter1_4_18_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><span style="COLOR: #800000">body</span><span id=Codehighlighter1_4_18_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #ff0000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;border</span><span style="COLOR: #000000">:</span><span style="COLOR: #0000ff">0</span><span style="COLOR: #000000">;</span><span style="COLOR: #ff0000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span></div>
    </li>
</ol>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是这个方法的缺点是，必须要把页面头部的dtd申明去掉。网上的错误提法是类似以下链接的：&nbsp;&nbsp;&nbsp; <a href="http://www.faceker.com/200801/webbrowser-no-border.html">http://www.faceker.com/200801/webbrowser-no-border.html</a>&nbsp;&nbsp; 这里面讲，只要把头部改成：<br>&nbsp;&nbsp;&nbsp; </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #800000">&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&gt;</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是目前很多页面用了比较新的css，改成这样后，页面就无法正常显示了。让网页美工改样式？ 真是有点困难。<br>&nbsp;&nbsp;&nbsp; 后来继续查阅了资料，发现比较好的办法，那就是重载&nbsp; IDocHostUIHandler 接口，其中，实现以下部分： <br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>HRESULT&nbsp;STDMETHODCALLTYPE&nbsp;FrameSite::GetHostInfo(DOCHOSTUIINFO&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pInfo)<br><img id=Codehighlighter1_72_246_Open_Image style="DISPLAY: inline; WIDTH: 11px; HEIGHT: 16px" onclick="this.style.display='none'; Codehighlighter1_72_246_Open_Text.style.display='none'; Codehighlighter1_72_246_Closed_Image.style.display='inline'; Codehighlighter1_72_246_Closed_Text.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><img id=Codehighlighter1_72_246_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_246_Closed_Text.style.display='none'; Codehighlighter1_72_246_Open_Image.style.display='inline'; Codehighlighter1_72_246_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_72_246_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img style="WIDTH: 15px; HEIGHT: 20px" height=20 src="http://www.cppblog.com/Images/dot.gif" width=15></span><span id=Codehighlighter1_72_246_Open_Text style="DISPLAY: inline"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pInfo</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">cbSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(DOCHOSTUIINFO);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pInfo</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">dwFlags&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;DOCHOSTUIFLAG_NO3DBORDER</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">DOCHOSTUIFLAG_SCROLL_NO;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pInfo</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">dwDoubleClick&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;DOCHOSTUIDBLCLK_DEFAULT;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;S_OK;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中&nbsp; DOCHOSTUIFLAG_NO3DBORDER 就表示不要生成边框，<span style="COLOR: #000000">DOCHOSTUIFLAG_SCROLL_NO 表示不要生成滚动条<br></span>这样就可以比较完美的解决边框和滚动条的问题，不用依赖页面的调整 。让设计师爱用什么用什么。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外一个就是禁用右键菜单，网上也有不少办法，但是用这个接口可以很简单的实现：&nbsp;<br>&nbsp; </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">HRESULT&nbsp;STDMETHODCALLTYPE&nbsp;FrameSite::ShowContextMenu(DWORD&nbsp;dwID,&nbsp;POINT&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ppt,&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&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;IUnknown&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pcmdtReserved,&nbsp;IDispatch&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pdispReserved)<br><img id=Codehighlighter1_145_849_Open_Image onclick="this.style.display='none'; Codehighlighter1_145_849_Open_Text.style.display='none'; Codehighlighter1_145_849_Closed_Image.style.display='inline'; Codehighlighter1_145_849_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_145_849_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_145_849_Closed_Text.style.display='none'; Codehighlighter1_145_849_Open_Image.style.display='inline'; Codehighlighter1_145_849_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_145_849_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_145_849_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;result&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;S_FALSE;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Dont&nbsp;Interfere</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;&nbsp;&nbsp;&nbsp;handled&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">&nbsp;(&nbsp;m_contextMenuMode&nbsp;)<br><img id=Codehighlighter1_246_786_Open_Image onclick="this.style.display='none'; Codehighlighter1_246_786_Open_Text.style.display='none'; Codehighlighter1_246_786_Closed_Image.style.display='inline'; Codehighlighter1_246_786_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_246_786_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_246_786_Closed_Text.style.display='none'; Codehighlighter1_246_786_Open_Image.style.display='inline'; Codehighlighter1_246_786_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_246_786_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_246_786_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;kDefaultMenuSupport:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;kNoContextMenu:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;S_OK;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handled&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;kTextSelectionOnly:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(dwID&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;CONTEXT_MENU_TEXTSELECT)<br><img id=Codehighlighter1_419_460_Open_Image onclick="this.style.display='none'; Codehighlighter1_419_460_Open_Text.style.display='none'; Codehighlighter1_419_460_Closed_Image.style.display='inline'; Codehighlighter1_419_460_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_419_460_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_419_460_Closed_Text.style.display='none'; Codehighlighter1_419_460_Open_Image.style.display='inline'; Codehighlighter1_419_460_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_419_460_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_419_460_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;S_OK;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handled&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;kAllowAllButViewSource:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(dwID&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;CONTEXT_MENU_DEFAULT)<br><img id=Codehighlighter1_540_622_Open_Image onclick="this.style.display='none'; Codehighlighter1_540_622_Open_Text.style.display='none'; Codehighlighter1_540_622_Closed_Image.style.display='inline'; Codehighlighter1_540_622_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_540_622_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_540_622_Closed_Text.style.display='none'; Codehighlighter1_540_622_Open_Image.style.display='inline'; Codehighlighter1_540_622_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_540_622_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_540_622_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">result&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;ModifyContextMenu(dwID,&nbsp;ppt,&nbsp;pcmdtReserved);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handled&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;kCustomMenuSupport:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(dwID&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;CONTEXT_MENU_DEFAULT)<br><img id=Codehighlighter1_698_774_Open_Image onclick="this.style.display='none'; Codehighlighter1_698_774_Open_Text.style.display='none'; Codehighlighter1_698_774_Closed_Image.style.display='inline'; Codehighlighter1_698_774_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_698_774_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_698_774_Closed_Text.style.display='none'; Codehighlighter1_698_774_Open_Image.style.display='inline'; Codehighlighter1_698_774_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_698_774_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_698_774_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">result&nbsp;=&nbsp;CustomContextMenu(ppt,&nbsp;pcmdtReserved);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handled&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;handled)<br><img id=Codehighlighter1_806_830_Open_Image onclick="this.style.display='none'; Codehighlighter1_806_830_Open_Text.style.display='none'; Codehighlighter1_806_830_Closed_Image.style.display='inline'; Codehighlighter1_806_830_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_806_830_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_806_830_Closed_Text.style.display='none'; Codehighlighter1_806_830_Open_Image.style.display='inline'; Codehighlighter1_806_830_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_806_830_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_806_830_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;S_FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;result;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>&nbsp;&nbsp;&nbsp; 这里不仅可以控制右键菜单显示，m_contextMenuMode&nbsp; = kNoContextMenu，还可以做到自定义菜单显示，m_contextMenuMode&nbsp; =其他值。因为暂时还不需要自定义菜单，所以这里没有实现。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 如果用wxie，就在FrameSite类增加这个接口即可，不关注的接口直接返回S_FALSE 或E_NOTIMPL;<br><br>&nbsp; 如果用sdk或mfc，可以 调用IOleObject 的SetClientSite 方法，设置一个继承了IOleClientSite 和 IDocHostUIHandler 的接口。 <br>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/jerrychan/aggbug/69928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jerrychan/" target="_blank">jerrychan</a> 2008-12-20 22:00 <a href="http://www.cppblog.com/jerrychan/archive/2008/12/20/69928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>