<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11882077</id><updated>2011-11-27T18:50:12.273-06:00</updated><title type='text'>蒋晟(JIANG, Sheng)</title><subtitle type='html'>Jiang,Sheng ,a Microsoft Most Valuable Professional of Visual C++, became a Visual C++ programmer at 1999. He actives on several online Visual C++ forums ,blogs and newsgroups</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default?start-index=101&amp;max-results=100'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>101</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11882077.post-5915369128975440285</id><published>2010-09-05T09:40:00.001-05:00</published><updated>2010-09-05T09:41:24.966-05:00</updated><title type='text'>MSDN Forums random thoughts</title><content type='html'>&lt;p&gt;User &lt;a href="http://social.msdn.microsoft.com/profile/qurrel/?type=forum&amp;amp;referrer=http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/817cfd2b-309c-4ef3-8366-bd3127228c39/"&gt;Qurrel&lt;/a&gt; wants to know &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/817cfd2b-309c-4ef3-8366-bd3127228c39"&gt;how to differentiate mouse clicks in CHTMLView&lt;/a&gt; so a context menu can be truly contextual. The documentation of CHTMLView could be more useful if it said when to override the function, not just how to use the function. This requires a collaboration between the Visual C++ team and the Windows SDK team.&lt;/p&gt;  &lt;p&gt;User &lt;a href="http://social.msdn.microsoft.com/profile/josexd/?type=forum&amp;amp;referrer=http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/48a1a10b-3f4e-4c45-9f21-ec1ee19f19f4/"&gt;JosexD&lt;/a&gt; wants to know &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/48a1a10b-3f4e-4c45-9f21-ec1ee19f19f4/#830e24e4-213b-420d-81d5-3a49812a2687"&gt;how to get the serial number of the motherboard and processor&lt;/a&gt;. The thread is marked as answered by a Microsoft Admin a year and a half ago, I guess to express him/herself JosexD twice voted the answer as helpful instead.&lt;/p&gt;  &lt;p&gt;User &lt;a href="http://social.msdn.microsoft.com/profile/lorend/?type=forum&amp;amp;referrer=http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b28ad8ff-e84a-4d1e-8f87-f5901d1cd711/"&gt;LorenD&lt;/a&gt; wants to know &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b28ad8ff-e84a-4d1e-8f87-f5901d1cd711/#5733f2d7-8a93-4015-96ba-c79307f04351"&gt;why a MPEG-2 video is playing in his DirectShow-based software on Windows XP but not on Windows 7&lt;/a&gt;. The answer isn’t satisfactory, but that is how the standard behavior of video playing is. Maybe that’s why so many video players embed ffmpeg instead of relying on DirectShow?&lt;/p&gt;  &lt;p&gt;It looks like &lt;a href="http://social.microsoft.com/Forums/en-US/whatforum/thread/cadc1075-87f9-43d6-9bab-ffec1e471cba"&gt;a lot of people can’t find MSDN forums&lt;/a&gt;. Maybe other forums should have better navigation to point user to different brands, like consumer questions to Microsoft Answers, developer questions to MSDN forums, design questions to Expression, and network administrator questions to Technet.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-5915369128975440285?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/5915369128975440285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=5915369128975440285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/5915369128975440285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/5915369128975440285'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2010/09/msdn-forums-random-thoughts.html' title='MSDN Forums random thoughts'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-6960121096955086280</id><published>2010-06-24T16:54:00.001-05:00</published><updated>2010-06-24T16:54:18.759-05:00</updated><title type='text'>分析Hilo项目</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oj_yns0sz2M/TCPUBv1PcJI/AAAAAAAABes/j5seuhEU9dg/s1600-h/image6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oj_yns0sz2M/TCPUCT9bGLI/AAAAAAAABew/emSGgL2N_8k/image_thumb4.png?imgmax=800" width="967" height="233" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/ff686707.aspx"&gt;&lt;u&gt;Hilo项目&lt;/u&gt;&lt;/a&gt;是微软的一个用于演示Windows 7 API和Visual C++ 2010的功能的一个开源项目。这个项目不仅演示了Windows API的使用，而且也提供了设计和开发高性能Windows程序的建议。这个项目的目标在它的&lt;a href=" http://www.twitter.com/projecthilo"&gt;twitter主页&lt;/a&gt;表现无遗：将开发本地代码重新作为重点。&lt;/p&gt;  &lt;p&gt;这个项目是&lt;a href="http://msdn.microsoft.com/en-us/library/ff742833.aspx"&gt;&lt;u&gt;基于免费的Visual C++ Express和Windows 7 SDK&lt;/u&gt;&lt;/a&gt;，这意味着更多的程序员可以尝试这个项目而不必购买Visual Studio 2010。这有助于扩展这个项目的影响力。不过这也意味着不能使用成熟MFC和ATL类库。作为替代，Hilo项目包含了以下类&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ComPtr COM指针管理 &lt;/li&gt;    &lt;li&gt;WindowApplication 消息循环处理 &lt;/li&gt;    &lt;li&gt;Window 窗口API封装 &lt;/li&gt;    &lt;li&gt;WindowFactory 窗口类和窗口过程 &lt;/li&gt;    &lt;li&gt;WindowLayout 窗口布局 &lt;/li&gt;    &lt;li&gt;WindowMessageHandler 窗口消息分发 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;可以很明显地看到，这些类都被放在了一个比较容易重用的DLL模块里面，文档中也允许程序员在自己的程序中直接拿来使用。&lt;/p&gt;  &lt;p&gt;由于WIndows Vista/7中WDDM 1.0的驱动是没有GDI硬件加速的，直到WDDM1.1才有有限度的支持，所以在不支持DirectX 10.1的显卡下GDI会很慢。在对于用户界面技术的选择上，Hilo项目组根据这个现象选择了在现代硬件上更快、更节省内存和CPU(当然，这也意味着更耗显存和GPU)的DirectX，而不是比较慢的GDI。这也减少了窗口的数目，整个程序现在只有一个窗口。这样做的好处是发明MFC的消息映射的时候所针对的项目需求，例如大量的窗口、很小内存、派生类需要继承消息处理函数现在都不成为问题了，所以在这唯一的一个窗口的过程里面可以放一个大大的switch语句。&lt;/p&gt;  &lt;p&gt;Hilo在模块化这方面做得比较深好，基本上看到类名字就知道这个类是做什么的，不像看文档里面成员函数看到眼花的CWnd，可以看到Hilo对窗口的各个方面处理是分开的。而且虽然Hilo并不是一个COM服务器，但是在耦合的时候是使用COM的接口而不是直接使用类的名字，这样在编译的时候就可以执行类型检同时也保留可扩展性。MFC就做得比较差，不但CObject::IsKindOf需要在运行的时候判断，而且有引用视图类的头文件之前必须先包含文档类的头文件的问题。&lt;/p&gt;  &lt;p&gt;比较遗憾的是，在推广本地代码开发方面，Hilo项目似乎做得还不够。Visual C++ Express的使用者主要是学生和业余人员，而这个项目演示的代码复用、COM和模板对于他们来说需要花一些时间来理解。另外，项目的&lt;a href="http://code.msdn.microsoft.com/Hilo/Project/License.aspx"&gt;许可协议&lt;/a&gt;看起来也让人一头雾水，里面把Hilo描述为软件而不是源代码。不过Visual C++项目组宣布这个项目的时候声称Hilo只是本地开发示例系列的第一个例子，作为原型来说，Hilo的作用在把“酷”这个词和Windows本地开发联系起来这个方面还是做得不错的。上一次VC开发被人称为酷的时间应该是远在98年了吧……&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-6960121096955086280?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/6960121096955086280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=6960121096955086280' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/6960121096955086280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/6960121096955086280'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2010/06/hilo.html' title='分析Hilo项目'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_oj_yns0sz2M/TCPUCT9bGLI/AAAAAAAABew/emSGgL2N_8k/s72-c/image_thumb4.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-3617043935899432559</id><published>2010-06-11T23:12:00.000-05:00</published><updated>2010-06-11T23:13:17.214-05:00</updated><title type='text'>二十万分之一</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Simsun, 'Arial Unicode MS', Mingliu, Helvetica; color: rgb(86, 91, 94); line-height: 28px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;因为有些人问起中国互联网状况白皮书的数据，所以做了一些个人统计来做比较。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;我在网上发表言论的位置主要是在技术论坛。2000之前的数据没有了，因为网易虚拟社区被解散，以前的帖子也不能访问。不过我贡献的一些精华贴在http://www.moon-soft.com/program/bbs/docelite9532.htm还是可以看到。这里统计的是2000年之后的数据。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;从2000年到2010年6月，我在CSDN社区的参与讨论的问题大概有两万，速度大概是每年2000个的样子.根据CSDN的统计（截至2009年5月600万），这相当于CSDN每年总问题数的三百分之一。说起来很奇怪，我都不去灌水乐园的，难道灌水乐园的问题不参与统计？还是被和谐的太多？&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;我在微软的MSDN论坛参与讨论的问题也有一万多，MSDN论坛是2005年创建的，所以我的发帖速度大概是每年3000个问题，每个问题可能有多个回复，所以发帖量要比这个还要多。另外，在微软的新闻组的帖子有一千多，新闻组是2003年才去，所以速度是每年大概两百多贴，和在QQ问问中回答问题的速度差不多。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;非技术论坛方面，在寄托天下和未名这两个海外人比较集中的社区也灌了几千贴，大多是和海外生活有关，例如签证、留学、移民、德克萨斯等，有个标准水车的头衔。在一些游戏论坛的帖子大概有几千，发帖比较多的地方是在机战世界论坛，算下来每年大概冠几百贴没有技术含量的水，数量大概是技术问题的十分之一。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;博客方面，每年大概几十贴。比较经常更新的有CSDN和博客堂这两个，新浪和网易的在我这里访问速度太慢，估计是用户太多的原因，所以不怎么用。blogspot和msn space是兴致所至去更新一下。微博客方面，2008年起大概有一千贴的样子，平均每年500贴。新闻评论比较少写，大概一年只有几十贴的样子。总计的话，每年也就600吧。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;综合起来，我每年大概要发表6000条帖子、评论和博客。按照国务院发表的中国互联网状况白皮书的数据，这相当于全国人民每年发表的信息的二十万分之一。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;题外话&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;刚才又上机战世界论坛，看见一帖被雷到了：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;家长：啊，老师，不好意思，我儿子和女朋友私奔了，我给他们请两天假&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; "&gt;这年代还有人学琼瑶小说私奔啊。&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-3617043935899432559?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/3617043935899432559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=3617043935899432559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3617043935899432559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3617043935899432559'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2010/06/blog-post.html' title='二十万分之一'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-4212271353443576905</id><published>2010-03-22T01:13:00.001-05:00</published><updated>2010-03-29T18:55:15.724-05:00</updated><title type='text'>DirectUI和无窗口用户界面</title><content type='html'>&lt;p&gt;DirectUI/DirectUser是一个用户界面框架（&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.automationelementinformation.frameworkid.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.automationelementinformation.frameworkid.aspx&lt;/a&gt;）。用Spy++可以在MSN Messenger、Windows XP、Office、IE和Windows Media Player中看到窗口类名字是DirectUIHWND的窗口。&lt;/p&gt;  &lt;p&gt;从文件描述来看，DUI70.dll和DUser.dll看起来是这个框架的实现文件，而没有导入这些DLL的软件应该是复制了这个库的代码。举例来说，Windows Vista和IE7的测试版的IEFrame.dll导入了DUser.dll（&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/6b801577-1699-4093-8a58-198c64b120e0"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/6b801577-1699-4093-8a58-198c64b120e0&lt;/a&gt;）而正式版使用IEUI.DLL。这应该是微软不愿意公开支持这个功能变化频繁的类库，而反垄断案禁止非Windows组件调用未公开Windows API的缘故。&lt;/p&gt;  &lt;p&gt;再看看DUser.dll的函数导出表（&lt;a href="http://www.webtropy.com/articles/dll-api.aspx?dll=duser"&gt;http://www.webtropy.com/articles/dll-api.aspx?dll=duser&lt;/a&gt;），可以看到Gadget这个词被广泛使用，而没有具体的控件。因为没有窗口句柄，所以控件不会是用的窗口类来区分，&lt;strike&gt;而是可能和Windows Vista Sidebar Gadgets一样采用HTML做接口&lt;/strike&gt;（更正）从Office Communicator的资源来看，是用的XML做的接口。。&lt;/p&gt;  &lt;p&gt;从这个类库的名字和行为来看，实际上应该是基于DirectX，和WPF类似的界面类库框架。在微软的招聘网站上可以看到Office Communications项目组的一个职位的介绍中描述说“Native Win32/64 UX experience via DirectUI, and Web UX experience via Silverlight”，说明这个项目组把它和Silverlight同等对待。DirectUIHWND窗口可以在需要性能和安全性的场合看到，例如IE的Tab窗口、Shell中的DefView、Windows登录界面等等。在Windows Vista上使用DirectUI的微软程序和WPF程序一样兼容Desktop Composition和远程桌面，应该是直接或者间接调用的Direct3D。&lt;/p&gt;  &lt;p&gt;那么我们怎么做到类似的效果？&lt;/p&gt;  &lt;p&gt;无窗口模式的用户界面并不是一个新的概念（&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx&lt;/a&gt;），VC的应用程序向导就可以创建无窗口ActiveX。但是做过无窗口模式的RichEdit的实现的人都知道，微软的系统控件集中了各种各样的功能，比如各种快捷键、滚动条、界面风格、Accessibility、用户界面自动化等等，要像IE项目组那样几乎完全实现无窗口并不容易。Raymond Chen在（&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx&lt;/a&gt;）提到可以使用DrawThemeBackground和DrawFrameControl这两个API，不过这只对和Windows界面风格一致的程序有用。要是界面不复杂的话，可以简单的集成IE的Trident引擎，比如使用MFC的CHTMLView和CDHTMLDialog，以及Windows Forms的WebBrowser类。这样做的代价就是程序需要牺牲性能和可能在严格的IE安全性配置下无法工作，Visual Studio.Net开始的各种向导、Google Task、Microsoft Outlook、Outlook Express等就是使用的这种方案。&lt;/p&gt;  &lt;p&gt;另外一个方案就是集成WPF或者Silverlight。VC项目组在用户调查中发现，需要使用WPF的Visual C++用户大都用C#编写WPF代码再用C++/CLI和非托管代码做接口(&lt;a href="http://social.msdn.microsoft.com/forums/en-US/wpf/thread/dd1e31bb-feb4-4d77-b524-42a282f519b1/"&gt;http://social.msdn.microsoft.com/forums/en-US/wpf/thread/dd1e31bb-feb4-4d77-b524-42a282f519b1/&lt;/a&gt;)，所以他们决定致力于改进更多用户使用的功能，例如编辑器的智能感知，而不提供对WPF的支持。Visual Studio 2010就是使用这种方案。&lt;/p&gt;  &lt;p&gt;为什么不能使用未公开的API?参考&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx&lt;/a&gt;和&lt;a href="http://blogs.technet.com/stefan_gossner/archive/2005/07/27/undocumented_API_Part1.aspx"&gt;http://blogs.technet.com/stefan_gossner/archive/2005/07/27/undocumented_API_Part1.aspx&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;题后话：&lt;/p&gt;  &lt;p&gt;*如果微软在产品文档中讨论未公开的API，那么API还是未公开的吗？（http://msdn.microsoft.com/en-us/library/aa140182(office.10).aspx）&lt;/p&gt;  &lt;p&gt;*Visual Studio代码画廊中有个叫作DirectUI的类库，设计思想和微软的DirectUser库类似（http://visualstudiogallery.msdn.microsoft.com/en-us/1B69C9FE-E422-4799-9EB5-6AC7034C52E1），不过也有人误认为这就是微软用来实现MSN的界面的库。&lt;/p&gt;  &lt;p&gt;*IE9将会使用Dierct2D作为渲染引擎，不知道IE项目组在移植完代码之后是否能把控件类库的接口公开&lt;/p&gt;  &lt;p&gt;DirectUI/DirectUser是一个用户界面框架（&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.automationelementinformation.frameworkid.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.automationelementinformation.frameworkid.aspx&lt;/a&gt;）。用Spy++可以在MSN Messenger、Windows XP、Office、IE和Windows Media Player中看到窗口类名字是DirectUIHWND的窗口。&lt;/p&gt;  &lt;p&gt;从文件描述来看，DUI70.dll和DUser.dll看起来是这个框架的实现文件，而没有导入这些DLL的软件应该是复制了这个库的代码。举例来说，Windows Vista和IE7的测试版的IEFrame.dll导入了DUser.dll（&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/6b801577-1699-4093-8a58-198c64b120e0"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/6b801577-1699-4093-8a58-198c64b120e0&lt;/a&gt;）而正式版使用IEUI.DLL。这应该是微软不愿意公开支持这个功能变化频繁的类库，而反垄断案禁止非Windows组件调用未公开Windows API的缘故。&lt;/p&gt;  &lt;p&gt;再看看DUser.dll的函数导出表（&lt;a href="http://www.webtropy.com/articles/dll-api.aspx?dll=duser"&gt;http://www.webtropy.com/articles/dll-api.aspx?dll=duser&lt;/a&gt;），可以看到Gadget这个词被广泛使用，而没有具体的控件。因为没有窗口句柄，所以控件不会是用的窗口类来区分，而是可能和Windows Vista Sidebar Gadgets一样采用HTML做接口。&lt;/p&gt;  &lt;p&gt;从这个类库的名字和行为来看，实际上应该是基于DirectX，和WPF类似的界面类库框架。在微软的招聘网站上可以看到Office Communications项目组的一个职位的介绍中描述说“Native Win32/64 UX experience via DirectUI, and Web UX experience via Silverlight”，说明这个项目组把它和Silverlight同等对待。DirectUIHWND窗口可以在需要性能和安全性的场合看到，例如IE的Tab窗口、Shell中的DefView、Windows登录界面等等。在Windows Vista上使用DirectUI的微软程序和WPF程序一样兼容Desktop Composition和远程桌面，应该是直接或者间接调用的Direct3D。&lt;/p&gt;  &lt;p&gt;那么我们怎么做到类似的效果？&lt;/p&gt;  &lt;p&gt;无窗口模式的用户界面并不是一个新的概念（&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx&lt;/a&gt;），Visual C++的应用程序向导就可以创建无窗口ActiveX。但是做过无窗口模式的RichEdit的实现的人都知道，微软的系统控件集中了各种各样的功能，比如各种快捷键、滚动条、界面风格、Accessibility、用户界面自动化等等，要像IE项目组那样几乎完全实现无窗口并不容易。Raymond Chen在&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx&lt;/a&gt;提到可以使用DrawThemeBackground和DrawFrameControl这两个API，不过这只对和Windows界面风格一致的程序有用。要是界面不复杂的话，可以简单的集成IE的Trident引擎，比如使用MFC的CHTMLView和CDHTMLDialog，以及Windows Forms的WebBrowser类。这样做的代价就是程序需要牺牲性能和可能在严格的IE安全性配置下无法工作，Visual Studio.Net开始的各种向导、Google Task、Microsoft Outlook、Outlook Express等就是使用的这种方案。&lt;/p&gt;  &lt;p&gt;另外一个方案就是集成WPF或者Silverlight。VC项目组在用户调查中发现，需要使用WPF的Visual C++用户大都用C#编写WPF代码再用C++/CLI和非托管代码做接口(&lt;a href="http://social.msdn.microsoft.com/forums/en-US/wpf/thread/dd1e31bb-feb4-4d77-b524-42a282f519b1/"&gt;http://social.msdn.microsoft.com/forums/en-US/wpf/thread/dd1e31bb-feb4-4d77-b524-42a282f519b1/&lt;/a&gt;)，所以他们决定致力于改进更多用户使用的功能，例如编辑器的智能感知，而不提供对WPF的支持。Visual Studio 2010就是使用这种方案。&lt;/p&gt;  &lt;p&gt;为什么不能使用未公开的API?如果要看惊恐故事的话，可以参考&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx&lt;/a&gt;和&lt;a href="http://blogs.technet.com/stefan_gossner/archive/2005/07/27/undocumented_API_Part1.aspx"&gt;http://blogs.technet.com/stefan_gossner/archive/2005/07/27/undocumented_API_Part1.aspx&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;题后话：&lt;/p&gt;  &lt;p&gt;*如果微软在产品文档中讨论未公开的API，那么API还是未公开的吗？（&lt;a href="http://msdn.microsoft.com/en-us/library/aa140182(office.10).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa140182(office.10).aspx&lt;/a&gt;）&lt;/p&gt;  &lt;p&gt;*Visual Studio代码画廊中有个叫作DirectUI的类库，设计思想和微软的DirectUser库类似（&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/1B69C9FE-E422-4799-9EB5-6AC7034C52E1"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/1B69C9FE-E422-4799-9EB5-6AC7034C52E1&lt;/a&gt;），不过也有人误认为这就是微软用来实现MSN的界面的库。&lt;/p&gt;  &lt;p&gt;*IE9将会使用Dierct2D作为渲染引擎，不知道IE项目组在移植完代码之后是否能把控件类库的接口公开&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-4212271353443576905?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/4212271353443576905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=4212271353443576905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/4212271353443576905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/4212271353443576905'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2010/03/directui.html' title='DirectUI和无窗口用户界面'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-3683629238831111060</id><published>2010-03-04T12:24:00.001-06:00</published><updated>2010-03-04T12:24:44.085-06:00</updated><title type='text'>Getting out of Active Document</title><content type='html'>&lt;p&gt;do{   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(m_pDocObjectServer==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComPtr&amp;lt;IOleObject&amp;gt; pOleObject;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_pDocObjectServer-&amp;gt;ExternalQueryInterface(&amp;amp;IID_IOleObject,(LPVOID*)&amp;amp;pOleObject);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pOleObject==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComPtr&amp;lt;IOleClientSite&amp;gt; pOleClientSite;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pOleObject-&amp;gt;GetClientSite(&amp;amp;pOleClientSite);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pOleClientSite==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComPtr&amp;lt;IOleContainer&amp;gt; pOleContainer;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pOleClientSite-&amp;gt;GetContainer(&amp;amp;pOleContainer);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pOleContainer==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComQIPtr&amp;lt;IServiceProvider&amp;gt; pServiceProvider(pOleContainer);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pServiceProvider==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComQIPtr&amp;lt;IServiceProvider&amp;gt; pTopLevelServiceProvider;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pServiceProvider-&amp;gt;QueryService(SID_STopLevelBrowser, IID_IServiceProvider, (LPVOID*)&amp;amp;pTopLevelServiceProvider);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pTopLevelServiceProvider==NULL) break;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComPtr&amp;lt;IWebBrowser2&amp;gt; pWebBrowser2;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pTopLevelServiceProvider-&amp;gt;QueryService(SID_SWebBrowserApp, IID_IWebBrowser2,(LPVOID*)&amp;amp;pWebBrowser2);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pWebBrowser2==NULL) break;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pServiceProvider=pWebBrowser2;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CComPtr&amp;lt;IOleWindow&amp;gt; pOleWindow;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pServiceProvider-&amp;gt;QueryService(SID_SShellBrowser, IID_IOleWindow,(LPVOID*)&amp;amp;pOleWindow);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(pOleWindow==NULL) break;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HWND hwndBrowserOrTab = NULL;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pOleWindow-&amp;gt;GetWindow(&amp;amp;hwndBrowserOrTab);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(hwndBrowserOrTab==NULL) break;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CString newTitle;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newTitle.Format(&amp;quot;%s (%d strokes)&amp;quot;,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_strPathName,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_strokeList.GetSize());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BOOL result=::SetWindowText(hwndBrowserOrTab,(LPCTSTR)newTitle);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(result==FALSE)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int errorCode=GetLastError(); //no error here but looks like no way to update tab caption, which is in a DirectUIHWND window in the frame process.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }while(FALSE);&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-3683629238831111060?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/3683629238831111060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=3683629238831111060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3683629238831111060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3683629238831111060'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2010/03/getting-out-of-active-document.html' title='Getting out of Active Document'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-7117781813951037160</id><published>2009-11-10T16:50:00.001-06:00</published><updated>2009-11-10T16:50:30.300-06:00</updated><title type='text'>Class Wizard is back to Visual C++ in Visual Studio 2010... Control Shift X.</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oj_yns0sz2M/SvnuM7-HyII/AAAAAAAAAdY/ubAbRshIO7w/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oj_yns0sz2M/SvnuNTsiOkI/AAAAAAAAAdc/zH7F-_KV9kI/image_thumb%5B2%5D.png?imgmax=800" width="547" height="358" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After 4 versions. Finally.&lt;/p&gt;  &lt;p&gt;More features: Now you have partial search in options&lt;/p&gt;  &lt;p&gt;The Wizard does not always find every handler function.&amp;#160; I got warning when trying to create a handler if there is one already. Delete handler does not work when an existing handler is not detected.&lt;/p&gt;  &lt;p&gt;Sometimes I have “value does not fall in expected range” when trying to bring the class wizard if I have source files open.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-7117781813951037160?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/7117781813951037160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=7117781813951037160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/7117781813951037160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/7117781813951037160'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2009/11/class-wizard-is-back-to-visual-c-in.html' title='Class Wizard is back to Visual C++ in Visual Studio 2010... Control Shift X.'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_oj_yns0sz2M/SvnuNTsiOkI/AAAAAAAAAdc/zH7F-_KV9kI/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-4627207965301034810</id><published>2009-08-27T11:01:00.001-05:00</published><updated>2009-08-27T11:01:54.223-05:00</updated><title type='text'>关于最近Visual Studio的ATL更新</title><content type='html'>&lt;p&gt;如果使用Visual C++ 2005或者2008，那么这个更新可能已经被自动安装了。这个更新修补了ATl库中的一些安全问题。在安装这个更新之后，Visual C++运行时刻库会升级。这意味着如果代码面向的CRT版本是_CRT_ASSEMBLY_VERSION或者_BIND_TO_CURRENT_VCLIBS_VERSION，那么要随着新编译的程序发布新版本的CRT。如果程序没有定义这些宏，那么安全更新安装的重定向策略会把绑定到旧版本的引用自动转向新的CRT版本。&lt;/p&gt;  &lt;p&gt;一个常见的问题是链接到旧版本的编译器生成的库文件。这样会在编译器生成的应用程序清单中生成两个不同版本的CRT引用。这时候要用合并模块或者手动编辑策略文件，确保重定向策略被正确安装到系统。&lt;/p&gt;  &lt;p&gt;由于用户未必安装了Windows Update补丁，程序员需要随程序发布最新的Visual C++文件。对于vcredist发布的程序，可以直接下载&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update&lt;/a&gt;。这个再发布包也可以在安装了Visual Studio的计算机中找到。对于使用安装程序制作工具的场合，Visual Studio会更新安装和部署项目使用的合并模块（Program Files\Common Files\Merge Modules）和bootstrapper（Program Files\Microsoft SDKs\Windows\版本号\Bootstrapper\Packages或者Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages），第三方安装程序制作软件则可能需要安装补丁或者手动替换Visual C++文件。如果应用程序把VC文件发布到安装文件夹，那么安装文件夹内的文件也需要更新以使用最新的运行时刻库和版本重定向策略。&lt;/p&gt;  &lt;p&gt;一些旧版本的Windows SDK也包含ATL，建议使用新版本的ATL以避免安全问题。如果在安装了Visual Studio 2008 SP1之后安装了Windows SDK 6.1，那么&lt;a href="http://support.microsoft.com/kb/974223/" target="_blank"&gt;在编译ATL项目时会出现编译错误&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;error C2039: '_Swap_adl' : is not a member of 'std' c:\program files\microsoft visual studio 9.0\vc\include\xutility 2764    &lt;br /&gt;error C3861: '_Swap_adl': identifier not found c:\program files\microsoft visual studio 9.0\vc\include\xutility 2764&lt;/p&gt;  &lt;p&gt;这是由于Windows SDK 6.1包含Visual Studio 2008版本的ATL。解决办法是卸载SDK和VisualStudio，先装SDK，后装Visual Studio、SP1和ATL更新。&lt;/p&gt;  &lt;p&gt;这个更新包含的不只是ATL的头文件，可以在&lt;a href="http://support.microsoft.com/kb/971092/" target="_blank"&gt;KB971092&lt;/a&gt;里面看到大堆的PDB和再发布文件也被更新了。不建议手动更改ATL头文件来绕过安全问题，这样的话微软的更新程序不能更新修改过的文件。如果你已经手动更改了ATL的头文件，可以重新运行VisualStudio安装程序，卸载VisualC++之后重新安装，再应用SP1和ATL更新。下次修改系统头文件的时候，可以把文件复制到自己的目录，修改之后更改Visual C++的目录搜索路径。&lt;/p&gt;  &lt;p&gt;关于这个更新的更多信息，可以参考&lt;a href="http://channel9.msdn.com/posts/Charles/Out-of-Band-Inside-the-ATL-Security-Update/" target="_blank"&gt;MSDN第9频道的视频&lt;/a&gt;。&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-4627207965301034810?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/4627207965301034810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=4627207965301034810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/4627207965301034810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/4627207965301034810'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2009/08/visual-studioatl.html' title='关于最近Visual Studio的ATL更新'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-5437764902265690752</id><published>2009-05-31T22:30:00.001-05:00</published><updated>2009-06-08T08:48:29.524-05:00</updated><title type='text'>Bug in Media Player causes shutdown of Internet in China.</title><content type='html'>&lt;p&gt;China’s Internet Service Providers (ISPs) do not  like to talk to each other. the vast majority (90% in 2006) of customer complains received by the Ministry of  Information Industry is about super slow interconnectivity of the two major ISPs, China Telecom and China Netcom, and people’s workarounds of the interconnectivity problem have side effects, like the recent Internet outrage caused by the Baofeng Media Player.&lt;/p&gt;  &lt;p&gt;Here is a little background. The interconnectivity problem arose after the spin-off of China Netcom from China Telecom 2002. Before the split,  China Telecom had a monopoly on network bandwidth, and local ISPs could not really compete with China Telecom because they had to rent China Telecom’s bandwidth for non-local services. The government ordered a split of the company after most of local ISPs went out of business, and created the interconnectivity problem. &lt;/p&gt;  &lt;p&gt;After the spin-off, the China Telecom network is now split into two subnets, China Telecom in south and China Netcom in north. The two companies employed some anticompetitive tactics, including exclusive service agreements with estate developers and not keeping up with growing demand of interconnectivity between major networks.  In 2006, the only bridge between them was a connection point at Beijing, which was often so overwhelmed that it was usually slower than routing though a USA network or switching to China Mobile’s  CDMA wireless network.&lt;/p&gt;  &lt;p&gt;In fact, the majority of connectivity was done by businesses. With ISPs reluctant to connect each other themselves, the only solution was to connect both networks  and double the connectivity expense. At the beginning, the users were directed to ISP-specific addresses like &lt;a href="http://chinatelecom.example.com/"&gt;http://chinatelecom.example.com&lt;/a&gt; in the China Telecom network, and &lt;a href="http://chinatelecom.example.com/"&gt;http://&lt;/a&gt;chinanetcom.example.com in the China Netcom network. The problem was, users often didn’t know what their ISP is when they are not visiting Internet at home. Soon ISP-specific domain name service (DNS) server were created to direct visitor to the the address  inside the visitor’s network. Now the user can use http://www.example .com and the DNS will decide which address the user will be visiting based on the user’s network. The free, personal financed DNSPod is this kind of DNS service. &lt;/p&gt;  &lt;p&gt;Unfortunately, several DNS servers of DNSPod were hit by a distributed denial-of-service (DDOS) attack on the night of May 18. DNSPod’s owner did not think the attack was serious, because he dealt with larger attacks before. However, the DNS server China Telecom shut-off this time was hosting a web site used by the Baofeng Media Player, which manifested the DNS outrage to a much greater magnitude.&lt;/p&gt;  &lt;p&gt;There was no explanation why the Baofeng Media Player’s company, a multi-million dollar investment with a self-claimed user base of 200 million , is using a free (*read* no warranty of any kind, agreed not liable to damage before using) DNS service. However, the greater mistake was that the Baofeng Media Player’s advertisement  downloading service was programmed to go through each server on its server list until it gets an answer. When the ISP’s local DNS cache pointing to the downed DNSPod server expired, the requests to find servers put almost all DNS servers in China under a DDOS attack . At the attack’s peak, Baofeng Media Player’s DNS requests occupied 40% of China Telecom’s total bandwidth. A DDOS attack targeting a specific domain now transformed into a DDOS attach on almost all DNS servers in China, which slowed down the Internet in China to a crawl. &lt;/p&gt;  &lt;p&gt;After a day of network outrage, there are lessons to be learned , from programming errors to doubtful business tactics. One thing is for sure, Baofeng Media Player’s advertisement  downloading service is the one to blame for this disaster. However, Baofeng Media Player is not the first software with bugs, nor will it be the last one. China ISPs need to think about how to avoid this problem in the future, the sooner the better.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-5437764902265690752?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/5437764902265690752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=5437764902265690752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/5437764902265690752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/5437764902265690752'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2009/05/bug-in-media-player-causes-shutdown-of.html' title='Bug in Media Player causes shutdown of Internet in China.'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-394397291881558192</id><published>2009-05-29T17:57:00.001-05:00</published><updated>2009-05-29T17:57:19.234-05:00</updated><title type='text'>Not sure what is going on at Microsoft Connect</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=444237 " target="_blank"&gt;An item&lt;/a&gt; I submitted to Microsoft connect changed 3 times at 1:34 am this morning&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:    &lt;br /&gt;The following fields or values changed:     &lt;br /&gt;Field Status changed from [Active] to [Resolved]     &lt;br /&gt;Field Resolution changed from [Not Set] to [Fixed]&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:&lt;/p&gt;  &lt;p&gt;he following fields or values changed:    &lt;br /&gt;Field Status changed from [Active] to [Resolved]&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:&lt;/p&gt;  &lt;p&gt;The following fields or values changed:    &lt;br /&gt;Field Status changed from [Resolved] to [Active]&lt;/p&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=425510" target="_blank"&gt;Another item&lt;/a&gt; changed 5 times yesterday&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:&lt;/p&gt;  &lt;p&gt;Field Status changed from [Active] to [Resolved]    &lt;br /&gt;Field Resolution changed from [Not Set] to [Not Reproducible]&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated&lt;/p&gt;  &lt;p&gt;The following fields or values changed:    &lt;br /&gt;Field Status changed from [Resolved] to [Closed]&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:&lt;/p&gt;  &lt;p&gt;Field Status changed from [Closed] to [Active]&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; The following feedback item you submitted at Microsoft Connect has been updated:   &lt;p&gt;Field Status changed from [Resolved] to [Closed]&lt;/p&gt;  &lt;p&gt;The following feedback item you submitted at Microsoft Connect has been updated:&lt;/p&gt;  &lt;p&gt;Field Status changed from [Active] to [Resolved]    &lt;br /&gt;Field Resolution changed from [Not Reproducible] to [Fixed]&lt;/p&gt;  &lt;p&gt;Conclusion: the operator update connect feedbacks in the same way I wrote Wikipedia articles. Stay up after midnight and have a lot of revisions, some good.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-394397291881558192?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/394397291881558192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=394397291881558192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/394397291881558192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/394397291881558192'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2009/05/not-sure-what-is-going-on-at-microsoft.html' title='Not sure what is going on at Microsoft Connect'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-6402610900119042904</id><published>2009-05-19T09:22:00.001-05:00</published><updated>2009-05-19T09:22:32.111-05:00</updated><title type='text'>the Windows Server 2008 SP2 and Windows Vista SP2 Beta program has concluded.</title><content type='html'>&lt;p&gt;Nice run&lt;/p&gt;  &lt;p&gt;uninstalling pre-release SP and installing the RTM version…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-6402610900119042904?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/6402610900119042904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=6402610900119042904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/6402610900119042904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/6402610900119042904'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2009/05/windows-server-2008-sp2-and-windows.html' title='the Windows Server 2008 SP2 and Windows Vista SP2 Beta program has concluded.'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-3875713855061680103</id><published>2007-08-05T19:24:00.001-05:00</published><updated>2007-08-05T19:24:09.305-05:00</updated><title type='text'>AutoComplete with DataSource</title><content type='html'>&lt;p&gt;&lt;a href="http://jiangsheng.net/Documents/AutoCompleteDemo.zip" rel="nofollow"&gt;Download the code for this article (22KB)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;.Net 2.0 &lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/05/NETFramework20/" rel="nofollow"&gt;introduced&lt;/a&gt;&amp;nbsp;autocompletion in &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.textbox.aspx" rel="nofollow"&gt;TextBox&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.textbox.aspx" rel="nofollow"&gt;ComboBox&lt;/a&gt;.&amp;nbsp;It is obvious that autocomplete is not very useful when the number of options is small. However, when your option becomes too many, pre-filling of all options to an &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.autocompletestringcollection.aspx" rel="nofollow"&gt;AutoCompleteStringCollection&lt;/a&gt; becomes impractical, especially when your data comes from a remote computer. An alternative is to replace the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.textbox.autocompletecustomsource.aspx" rel="nofollow"&gt;AutoCompleteCustomSource&lt;/a&gt; in a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx" rel="nofollow"&gt;TextChanged&lt;/a&gt; event, however, users are &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=270349&amp;amp;SiteID=1" rel="nofollow"&gt;getting random AccessViolationException&lt;/a&gt;&amp;nbsp;when trying to replace it.&amp;nbsp; In this article I will demonstrate another alternative,&amp;nbsp;using a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx" rel="nofollow"&gt;BindingSource&lt;/a&gt; as the data source of options and bypassing the .Net framework and call the underline Windows API directly.&lt;/p&gt; &lt;p&gt;The first thing I need to do is to port the APIs to managed code. The autocompletion API is exposed as a COM object, so I need to write managed version of its interfaces:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComImport]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [InterfaceType(ComInterfaceType::InterfaceIsIUnknown)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Guid("EAC04BC0-3791-11D2-BB95-0060977B464C")]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [SuppressUnmanagedCodeSecurity]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interface&amp;nbsp; class IAutoComplete2&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [PreserveSig] int Init(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HandleRef hwndEdit,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumString^ punkACL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String^ pwszRegKeyPath,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String^ pwszQuickComplete&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Enable( [MarshalAs(UnmanagedType::Bool)] bool value);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int SetOptions(int dwFlag);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void GetOptions([Out]IntPtr pdwFlag);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br&gt;Second, I need to create the autocomplete object and query the IAutoComplete2 interface:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type^ autoCompleteType = Type::GetTypeFromCLSID(CLSID_AutoComplete);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoComplete2 =(IAutoComplete2^)(Activator::CreateInstance(autoCompleteType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception^ e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Marshal::ReleaseComObject(autoComplete2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoComplete2 = nullptr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;Third, I need to bind it to an TextBox control:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool AutocompleteBindingSource::Bind()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nullptr==this-&amp;gt;autoComplete2)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;autoComplete2-&amp;gt;SetOptions((int)ControlToBind-&amp;gt;AutoCompleteMode);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;autoComplete2-&amp;gt;Init(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HandleRef(ControlToBind,ControlToBind-&amp;gt;Handle),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String::Empty&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,String::Empty);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception^e) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;Finally, I need to implement &lt;a href="http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices.comtypes.ienumstring(VS.80).aspx" rel="nofollow"&gt;IEnumString&lt;/a&gt; to provide a list of options. Luckily, .Net has declared this interface, so I don't need to port it to managed code, however, I still need to write my binding code in my implementation of IEnumString.  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void AutocompleteBindingSource::Reset()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;current = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(BindingSource!=nullptr)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;size=BindingSource-&amp;gt;Count;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int AutocompleteBindingSource::Next(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int celt, [Out, MarshalAs(UnmanagedType::LPArray, ArraySubType=UnmanagedType::LPWStr, SizeParamIndex=0)] array&amp;lt;String^&amp;gt;^ rgelt, IntPtr pceltFetched)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (celt &amp;lt; 0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return E_INVALIDARG;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int index = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((this-&amp;gt;current &amp;lt; this-&amp;gt;size) &amp;amp;&amp;amp; (celt &amp;gt; 0))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object^ item=this-&amp;gt;BindingSource-&amp;gt;default[this-&amp;gt;current];  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool useDisplayMember=false;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!String::IsNullOrEmpty(DisplayMember))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ICustomTypeDescriptor^ customTypeDescriptor=dynamic_cast&amp;lt;ICustomTypeDescriptor^&amp;gt;(item);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(customTypeDescriptor!=nullptr)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyDescriptorCollection^ propertyDescriptorCollection=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; customTypeDescriptor-&amp;gt;GetProperties();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(propertyDescriptorCollection!=nullptr)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyDescriptor^ propertyDescriptor=propertyDescriptorCollection-&amp;gt;default[DisplayMember];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(propertyDescriptor!=nullptr)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rgelt[index] = propertyDescriptor-&amp;gt;GetValue(item)-&amp;gt;ToString();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useDisplayMember=true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!useDisplayMember)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(item!=nullptr)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rgelt[index] = item-&amp;gt;ToString();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;current++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; celt--;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((pceltFetched != IntPtr::Zero))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Marshal::WriteInt32(pceltFetched, index);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((celt != 0))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;Here the DisplayMember property is the name of the property in the data source to be displayed. If the property specified by the value of the DataMember property does not exist, I use ToString to get a text representation of the current item in the data source.  &lt;p&gt;You may want to ask, where is the filtering code? Well, that is implemented by BindingSource class.  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System::Void FormTest::textBoxDemo_TextChanged(System::Object^&amp;nbsp; sender, System::EventArgs^&amp;nbsp; e) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(String::IsNullOrEmpty(textBoxDemo-&amp;gt;Text))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bindingSourceAutoComplete-&amp;gt;Filter=nullptr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bindingSourceAutoComplete-&amp;gt;Filter=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String::Format("{0} LIKE '{1}%'"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,dataSetDemo-&amp;gt;Tables[0]-&amp;gt;Columns[0]-&amp;gt;Caption&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,textBoxDemo-&amp;gt;Text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autocompleteBindingSource1-&amp;gt;Reset();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;The BindingSource class checks the data source to see if they support the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.ibindinglistview.aspx" rel="nofollow"&gt;IBindingListView&lt;/a&gt;. If IBindingListView is supported, the BindingSource class delegates sorting and filtering to the data source.&amp;nbsp;&amp;nbsp;In this sample, the data source of the BindingSource object is a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.dataset.aspx" rel="nofollow"&gt;DataSet&lt;/a&gt;, and the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.bindingsource.datamember.aspx" rel="nofollow"&gt;DataMember&lt;/a&gt; of BindingSource object is the name of the first table , so BindingSource creates a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.dataview.aspx" rel="nofollow"&gt;DataView&lt;/a&gt; as its data source. The DataView class implements IBindingListView and filters its data using expressions parsed from the filter string. In reality, the data source could be a business object that implements IBindingListView&amp;nbsp;and supports filtering and sorting&amp;nbsp;with stored procedures.  &lt;p&gt;This sample does not consider compound autocomplete object support. If you want to get your options from multiple sources, you need to use &lt;a href="http://msdn2.microsoft.com/en-us/library/ms644897.aspx" rel="nofollow"&gt;IObjMgr&lt;/a&gt; to add sources to the autocomplete object.  &lt;p&gt;Reference  &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa969386.aspx" rel="nofollow"&gt;Using Autocomplete&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/0yy0c9z8(VS.80).aspx" rel="nofollow"&gt;BindingSource Component Architecture&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-3875713855061680103?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/3875713855061680103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=3875713855061680103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3875713855061680103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/3875713855061680103'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2007/08/autocomplete-with-datasource.html' title='AutoComplete with DataSource'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-116192693717207621</id><published>2006-10-27T00:28:00.000-05:00</published><updated>2009-06-08T08:48:59.749-05:00</updated><title type='text'>how JScript cleans up</title><content type='html'>&lt;p&gt;From &lt;a href="http://msdn.microsoft.com/msdnmag/issues/01/05/web/"&gt;http://msdn.microsoft.com/msdnmag/issues/01/05/web/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;JScript uses a mark-and-sweep garbage collector with a variety of heuristics used to determine when to run garbage collection. The JScript garbage collector works like this:&lt;br /&gt;&lt;/em&gt;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;em&gt;When the script engine is shut down, garbage is collected.&lt;br /&gt;&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;When 256 variants, or more than 64KB of strings, or more than 4096 array slots have been allocated, the garbage collector sets a flag that says collect soon.&lt;br /&gt;&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;Whenever a new statement is executed or the script debugger starts, that flag is checked, and if it is set, a collection is done.&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;em&gt;&lt;img height="4" alt="" src="http://msdn.microsoft.com/msdnmag/images/dingbats/indent.gif" width="10" /&gt;There is an undocumented JScript function called CollectGarbage that forces a garbage collection. This is for testing purposes only—do not ship code that calls this function. It is a poor programming practice to write code in JScript that depends on garbage collections being done at particular times. If you need predictable garbage collection, use a language that supports it (like Visual Basic® or VBScript). Note that all of this is the implementation detail of the engine and should not be relied upon because it may change in the future. Note also that the version of JScript supported by Microsoft® .NET will use the .NET Framework garbage collector, a multigenerational mark-and-sweep collector.&lt;br /&gt;&lt;img height="4" alt="" src="http://msdn.microsoft.com/msdnmag/images/dingbats/indent.gif" width="10" /&gt;And remember, if you want a deterministic-lifetime app, use a deterministic-lifetime language like C++, Visual Basic 6.0, or VBScript; not an indeterministic-lifetime language like JScript, Scheme, or Java. If you're writing a program that depends on being able to have a deterministic object lifetime, JScript is not the right tool for the job. Trying to make it a deterministic-lifetime language will just create headaches down the road.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;From &lt;a href="http://www.faqts.com/knowledge_base/view.phtml/aid/10251"&gt;http://www.faqts.com/knowledge_base/view.phtml/aid/10251&lt;/a&gt;&lt;/p&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt;&lt;pre nd="1"&gt;&lt;em&gt;This function uses &lt;/em&gt;&lt;a class="iAs" style="font-weight: normal; font-size: 100%; padding-bottom: 1px; color: darkgreen; border-bottom: darkgreen 0.07em solid; background-color: transparent; text-decoration: underline" href="http://www.faqts.com/knowledge_base/view.phtml/aid/10251#" target="_blank" itxtdid="2403912"&gt;&lt;em&gt;ActiveX&lt;/em&gt;&lt;/a&gt;&lt;em&gt; to get a forms input into a &lt;/em&gt;&lt;a class="iAs" style="font-weight: normal; font-size: 100%; padding-bottom: 1px; color: darkgreen; border-bottom: darkgreen 0.07em solid; background-color: transparent; text-decoration: underline" href="http://www.faqts.com/knowledge_base/view.phtml/aid/10251#" target="_blank" itxtdid="2460492"&gt;&lt;em&gt;spreadsheet&lt;/em&gt;&lt;/a&gt;&lt;em&gt; cell.&lt;br /&gt;&lt;br /&gt;function xlWrite(r,c) {&lt;br /&gt; var xlApp, xlSheet;&lt;br /&gt; xlApp = new ActiveXObject("Excel.Application");&lt;br /&gt; xlApp.Visible = true;&lt;br /&gt; xlApp.Workbooks.Add();&lt;br /&gt; xlSheet = xlApp.ActiveSheet;&lt;br /&gt; xlSheet.Cells(r,c).Value = frm.txt.value;&lt;br /&gt; xlSheet.SaveAs("C:\\xlText.xls");&lt;br /&gt;&lt;br /&gt;Note that Excel has a bug and doesn't shut down after calling the&lt;br /&gt;Quit() method when automating from JScript. To work around this&lt;br /&gt;problem, the CollectGarbage() method is used to force JScript's garbage&lt;br /&gt;collection to occur almost immediately.&lt;br /&gt;&lt;br /&gt; xlApp.Quit();&lt;br /&gt; xlApp = null;&lt;br /&gt; setTimeout("CollectGarbage()",1);&lt;br /&gt;}&lt;/em&gt;&lt;/pre&gt;&lt;/blockquote&gt;Beware of garbage collector. If your declare your DHTML objects inside a function, it may be garbage collected when it goes out of scope and disappears.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3710396369816898";
google_ad_width = 180;
google_ad_height = 150;
google_ad_format = "180x150_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;a rel="author" href="https://plus.google.com/u/0/106311635397653590840?rel=author"&gt;Google Profile&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11882077-116192693717207621?l=jiangsheng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jiangsheng.blogspot.com/feeds/116192693717207621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11882077&amp;postID=116192693717207621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/116192693717207621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11882077/posts/default/116192693717207621'/><link rel='alternate' type='text/html' href='http://jiangsheng.blogspot.com/2006/10/how-jscript-cleans-up_27.html' title='how JScript cleans up'/><author><name>Sheng Jiang</name><uri>http://www.blogger.com/profile/17295186096995775561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11882077.post-114186045854501004</id><published>2006-03-05T09:25:00.000-06:00</published><updated>2006-03-08T17:27:39.506-06:00</updated><title type='text'>Jiangsheng的CSDN Digest(March 4, 2006)</title><content type='html'>为了便于搜索,这里尽可能保留了论坛上讨论的原文，但是这并不表示本人赞同帖子中的表述方式和观点。&lt;br /&gt;&lt;p&gt;CSDN 讨论总结系列：&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Jiangsheng的CSDN Digest (Jan 21 2006)( &lt;a href="http://blog.csdn.net/jiangsheng/archive/2006/03/05/615669.aspx"&gt;http://blog.csdn.net/jiangsheng/archive/2006/03/05/615669.aspx&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Jiangsheng的CSDN Digest (Jan 7 2006)（&lt;a href="http://blog.csdn.net/jiangsheng/archive/2006/01/07/573288.aspx"&gt;http://blog.csdn.net/jiangsheng/archive/2006/01/07/573288.aspx&lt;/a&gt;） &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Jiangsheng的CSDN Digest (Jan 1 2006)&lt;a href="http://blog.csdn.net/jiangsheng/archive/2006/01/01/568362.aspx"&gt;http://blog.csdn.net/jiangsheng/archive/2006/01/01/568362.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Jiangsheng的CSDN Digest (Dec 2005)(&lt;a href="http://blog.csdn.net/jiangsheng/archive/2005/12/24/561501.aspx"&gt;&lt;font color="#000080"&gt;http://blog.csdn.net/jiangsheng/archive/2005/12/24/561501.aspx&lt;/font&gt;&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Jiangsheng的CSDN Digest (Oct 2005)(&lt;a href="http://blog.csdn.net/jiangsheng/archive/2005/12/27/563274.aspx"&gt;&lt;font color="#000080"&gt;http://blog.csdn.net/jiangsheng/archive/2005/12/27/563274.aspx&lt;/font&gt;&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Win32 &amp;amp; .Net Q&amp;amp;A 200509 (&lt;a href="http://blog.csdn.net/jiangsheng/archive/2005/09/13/480540.aspx"&gt;&lt;font color="#000080"&gt;http://blog.csdn.net/jiangsheng/archive/2005/09/13/480540.aspx&lt;/font&gt;&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Win32 &amp;amp; .Net Q&amp;amp;A (&lt;a href="http://blog.csdn.net/jiangsheng/archive/2005/02/28/304654.aspx"&gt;&lt;font color="#000080"&gt;http://blog.csdn.net/jiangsheng/archive/2005/02/28/304654.aspx&lt;/font&gt;&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;VC/MFC Q&amp;amp;A 200407 (&lt;a href="http://blog.csdn.net/jiangsheng/archive/2004/07/13/40771.aspx"&gt;&lt;font color="#000080"&gt;http://blog.csdn.net/jiangsheng/archive/2004/07/13/40771.aspx&lt;/font&gt;&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;在c++中如何创建一个文件？ (VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;已知IStream *pIStream取道内容，如何将pIStream内容写到一个文件中去？&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.codeproject.com/cpp/memorystream.asp"&gt;http://www.codeproject.com/cpp/memorystream.asp&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;HANDLE hFile &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CreateFile( lpFileName,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;GENERIC_WRITE,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;FILE_SHARE_READ,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;NULL,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;CREATE_ALWAYS,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;FILE_ATTRIBUTE_NORMAL,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;NULL );&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ( hFile )&lt;br /&gt;&lt;img id="Codehighlighter_136_903_Open_Image" onclick="this.style.display='none'; Codehighlighter_136_903_Open_Text.style.display='none'; Codehighlighter_136_903_Closed_Image.style.display='inline'; Codehighlighter_136_903_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_136_903_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_136_903_Closed_Text.style.display='none'; Codehighlighter_136_903_Open_Image.style.display='inline'; Codehighlighter_136_903_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_136_903_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_136_903_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HGLOBAL hMem &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;GetHGlobalFromStream( pStream, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hMem );&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LPVOID lpData &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GlobalLock( hMem );&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DWORD dwBytesWritten;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;bResult &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; WriteFile( hFile, lpData, lBytesStreamed, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwBytesWritten, NULL );&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;bResult &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ( dwBytesWritten &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (DWORD)lBytesStreamed );&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; clean up&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GlobalUnlock(hMem);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CloseHandle(hFile);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;The GetHGlobalFromStream function retrieves the global memory handle to a stream that was created through a call to the CreateStreamOnHGlobal function. it may not work on other streams.&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;The general approach &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;is&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; a buffer &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;as&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; follows:&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; szBuff[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;100&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ULONG cbRead &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; cbRead &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_772_900_Open_Image" onclick="this.style.display='none'; Codehighlighter_772_900_Open_Text.style.display='none'; Codehighlighter_772_900_Closed_Image.style.display='inline'; Codehighlighter_772_900_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_772_900_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_772_900_Closed_Text.style.display='none'; Codehighlighter_772_900_Open_Image.style.display='inline'; Codehighlighter_772_900_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_772_900_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_772_900_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pStream&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Read(szBuff, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(szBuff)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;cbRead);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK)&lt;br /&gt;&lt;img id="Codehighlighter_845_898_Open_Image" onclick="this.style.display='none'; Codehighlighter_845_898_Open_Text.style.display='none'; Codehighlighter_845_898_Closed_Image.style.display='inline'; Codehighlighter_845_898_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_845_898_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_845_898_Closed_Text.style.display='none'; Codehighlighter_845_898_Open_Image.style.display='inline'; Codehighlighter_845_898_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_845_898_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_845_898_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;szBuff[cbRead] &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WriteToFile(szBuff,cbRead);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h1&gt;想获取windows下CPU温度，请高手指点(其他开发语言 汇编语言)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;搜索过以前的帖子,发现没有好的解决方案.那我想只能分成下面几个步骤进行:&lt;br /&gt;&lt;br /&gt;1，获取主板上用于监测的芯片型号。&lt;br /&gt;2，针对特定型号写特定的访问程序。&lt;br /&gt;&lt;br /&gt;现在想请高手指点，如何获取主板上使用的芯片型号？现在我对windows驱动是一窍不通。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;try &lt;a href="http://support.microsoft.com/default.aspx?scid=306852"&gt;http://support.microsoft.com/default.aspx?scid=306852&lt;/a&gt; &lt;br /&gt;or contact your motherboard manufacturer.&lt;br /&gt;虽然ms在win2k之后就提供wmi中的win32_temperatureProbe,但大部分主板不能直接支持（需要安装主板自己的驱动程序）现在的普遍做法是通过访问superio的register来获取,所以程序第一步就是必须获取主板上的superio芯片的型号,不同型号的访问方法不同&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何监控Outlook Express接收新邮件? (VC/MFC ATL/ActiveX/COM )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;想做的是像杀毒软件的邮件监控程序那样,每当Outlook Express接收到新邮件时,先启动自己编的一个程序,由这个程序中先检查这封电子邮件的标题和内容。查了好多资料,最多的都是用Office里的Outlook.可我们的要求是OE。如果可以实现我上面的功能,那能否扩展到任何邮件处理程序(如foxmail...)都适用可以监控呢?&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;检查这封电子邮件的标题和内容可以通过抓pop3包来实现。直接hook winsock的相关函数，然后检查进程名称，是邮件发生程序则执行自己的工作。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Outlook Express is not designed for automation. however, if you target Windows XP or later, you may use some new OE interfaces to obtain information. &lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/outlookexpress/oe/reference/ifaces/istorenamespace/openspecialfolder.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/outlookexpress/oe/reference/ifaces/istorenamespace/openspecialfolder.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;把一个WebBrowser窗口里的内容都写到bmp里（VC/MFC 图形处理/算法）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;有两个思路，第一个是提取WebBrowser的hdc，然后得到hBitmap，然后按Bmp的格式保存。还有一个很痛苦的方法， 就是在hMemDC里按WebBrowser中的字体字号去自己画。现在我尝试第一个方法，可是WebBrowser的内容很长，有滚动条控制的，我得到的hdc里只有当前屏幕上的内容。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;IViewObject&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.2ccc.com/article.asp?articleid=1423"&gt;http://www.2ccc.com/article.asp?articleid=1423&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/miscctrl/wbp.asp"&gt;http://www.codeproject.com/miscctrl/wbp.asp&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/internet/htmlimagecapture.asp"&gt;http://www.codeproject.com/internet/htmlimagecapture.asp&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;使用CListCtrl显示大批量缩略图问题 （VC/MFC 界面）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;由于工作需要大批量显示SolidWorks文件的缩略图(一万个左右),我现在使用的是虚CListCtrl既style = LVS_ICON|LVS_ALIGNTOP|LVS_OWNERDATA|WS_VISIBLE|WS_BORDER|WS_CHILD|LVS_SINGLESEL,对于SolidWorks文件可以读成bitmap,由于文件太多内存存不下,我现在想利用文件缓存,来缓存我生成的这些bitmap,有没有这样的方法,最好有例子.&lt;br /&gt;&lt;br /&gt;我看了vcmute(横秋)有关这方面的解释提道了IExtractImage,不知道能解决我的问提吗?&lt;br /&gt;&lt;a href="http://community.csdn.net/Expert/topic/4134/4134216.xm8l?temp=.4045069"&gt;http://community.csdn.net/Expert/topic/4134/4134216.xm8l?temp=.4045069&lt;/a&gt; &lt;br /&gt;提供的连接没打开.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;    &lt;li&gt;既然用了虚拟列表，一次显示的缩略图也不会超过几百个吧，这样对内存的需求就减少了很多。至于缓存，不需要加载所有的缩略图，使用后马上释放掉就可以了，利用双缓冲，绘制到一个内存DC上，刷新的时候再调取需要的缩略图&lt;a href="http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx"&gt;http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx&lt;/a&gt; &lt;br /&gt;这个示例没有在空闲时释放缓存，你可以自己决定缓存的大小上限，然后改写PrepCache函数。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeguru.com/cpp/controls/listview/usingimages/article.php/c899/"&gt;http://www.codeguru.com/cpp/controls/listview/usingimages/article.php/c899/&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.codeguru.com/cpp/controls/listview/usingimages/article.php/c4159"&gt;http://www.codeguru.com/cpp/controls/listview/usingimages/article.php/c4159&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/shell/thumbextract.asp"&gt;http://www.codeproject.com/shell/thumbextract.asp&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;请问怎样屏蔽WebBrowser下载窗口（VB 网络编程 ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;当用WebBrowser打开一些不能解释的文件时就出现下载窗口，请问怎样屏蔽？即如果不能解释时就只出现网页不有打开页面不出现下载窗口。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;一个思路:新建一个线程,在新的线程中不停的查找&amp;quot;文件下载&amp;quot;对话框,找到后,就用postmessage关闭它,不过要注意两个问题,一是要保证程序安全执行,调试的时候要小心,第二是,这样做的开销问题&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/events/downloadbegin.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/events/downloadbegin.asp&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;让VB6.0编的程序通过soap tooltik3.0调用C#写的WebService? （.NET技术 Web Services ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;目前要改造部分以前用VB6.0编的管理程序，需要通过soap tooltik3.0调用C#写的WebService。由于这方面资料很少，只有求助于CSDN上的各位朋友了，谢谢！&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/dnmapnet30/html/_MWSHeaders.asp"&gt;http://msdn.microsoft.com/library/en-us/dnmapnet30/html/_MWSHeaders.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;用什么工具能够将 一个COM插件注册（反注册）操作 提取到一个 .reg文件中（VC/MFC ATL/ActiveX/COM）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;注册时被调用的插件的DllRegisterServer函数的具体实现依赖于DLL的作者，有可能超出注册表操作的范围。要监视注册表操作的话，HOOK 注册表操作函数，把目标进程的一切注册表操作和文件操作都被记录下来。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;使用WebBrowser控件，如何获取当前页面，当前鼠标所在图片【或文字】的连接地址（Delphi 网络通信/分布式开发 ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;简单来说，就是如何获取网页中当前鼠标下的连接地址&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;uses&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;SHDocVw, MSHtml, ActiveX&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;var&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;E: IHTMLElement;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;begin&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;E :&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (WebBrowser1.Document &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;as&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IHTMLDocument2).elementFromPoint(Mouse.CursorPos.X, Mouse.CursorPos.Y);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;E :&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (WebBrowser1.Document &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;as&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IHTMLDocument2).elementFromPoint(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;100&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;100&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Label1.Caption :&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; E.title;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Label1.Caption :&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; E.innerText;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;最近用IShellFolder2做了个遍历文件夹的程序，但是我发现当文件夹中文件数超过3000时，shell接口也不是很快啊（VC/MFC 基础类 ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;能不能讲讲windows explorer点击文件夹，然后显示在右边list的工作原理。以前我也用vlist实现过，我用vector&amp;lt;MyData&amp;gt;存储每个右边tree的相应打开的list条目，MyData类型是存储文件夹下各个路径pidl及该节点一些辅助信息，然后在vlist需要显示的时候在把PIDL转换成相应的filename，filesize，filetype等等，可是还是很慢啊，（当然我是把vector填充满了以后再update_vlist),照理说vector插入几千条简单结构的记录应该很快才对啊。如果普通list用TEXTCALLBACK和I_IMAGECALLBACK，也是在需要显示时才去调用相应的text和image吧？那这样效率和虚列表差不多吧，指的是10000条记录以下的list&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;explorer那不是遍历，那只是展开当前文件下的文件而已。遍历肯定会慢的，IShellFolder应该是最理想的方法了，你也可以用一下FindFile,但是对虚拟目录无效。普通list用TEXTCALLBACK和I_IMAGECALLBACK还是可能差一些，因为虚列表中提供了缓存消息，你可以在适当的时候缓存数据来提高性能。vlist 只会重绘当前能显示的条目。如果你要保存数据结构的话，建议使用一个CArry只保存PIDL，然后用另外CArry一个保存要显示的信息列结构体的指针，再把第二个CArry以地址的方法传给vlist ，然后开线程去计算其他的信息，每计算一条调用一次RedrawItem，当然线程的操作要小心。仔细观察expolore你会发现，某些列的重绘并不是及时的。比如一个音乐文件的时间&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;有没有人用activeX控件或者其它控件显示过chm文件的内容（Delphi VCL组件开发及应用 ）&lt;/h1&gt;&lt;br /&gt;&lt;h1&gt;请教：如用使用HtmlHelpA函数调用chm文档的指定页面(Delphi VCL组件开发及应用)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;是显示在delphi的form里就行,不是调用hh.exe&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Use the webbrowser control.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconocxov.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconocxov.asp&lt;/a&gt; &lt;br /&gt;The HTML Help ActiveX control is designed to work with Internet Explorer and the Shdocvw.dll component. It does not include the design-time support that is necessary to use it with development tools, such as Microsoft Visual Basic Scripting Edition and Microsoft Visual C++. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;var&lt;br /&gt;theAdd: OleVariant;&lt;br /&gt;begin&lt;br /&gt;theAdd := 'mk:@MSITStore:' + AppPath + 'GPHelp.chm::/index.html';&lt;br /&gt;///ms-its:C:\i386\CALC.CHM::/calc_scientific.htm&lt;br /&gt;WebBrowser1.Navigate(theAdd);&lt;br /&gt;end;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Reference&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://community.borland.com/article/0,1410,27842,00.html"&gt;http://community.borland.com/article/0,1410,27842,00.html&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;SHGetSpecialFolderLocation是干什么的（VC/MFC 基础类 ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;SHGetSpecialFolderLocation用来取得代表一些虚拟目录ITEMIDLIST。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;获取桌面的IDL&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LPITEMIDLIST pidlDesktop&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; SHGetSpecialFolderLocation(hwnd,CSIDL_DESKTOP,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pidlDesktop);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(FAILED(hr))&lt;br /&gt;&lt;img id="Codehighlighter_131_137_Open_Image" onclick="this.style.display='none'; Codehighlighter_131_137_Open_Text.style.display='none'; Codehighlighter_131_137_Closed_Image.style.display='inline'; Codehighlighter_131_137_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_131_137_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_131_137_Closed_Text.style.display='none'; Codehighlighter_131_137_Open_Image.style.display='inline'; Codehighlighter_131_137_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_131_137_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_131_137_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;...&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_144_150_Open_Image" onclick="this.style.display='none'; Codehighlighter_144_150_Open_Text.style.display='none'; Codehighlighter_144_150_Closed_Image.style.display='inline'; Codehighlighter_144_150_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_144_150_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_144_150_Closed_Text.style.display='none'; Codehighlighter_144_150_Open_Image.style.display='inline'; Codehighlighter_144_150_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_144_150_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_144_150_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;...&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The long and sad story of the Shell Folders key&lt;br /&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;能否让我的应用程序以管理员的权限运行？就象通过管理员登陆后运行一样？ （VC/MFC 基础类）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/secauthz/security/client_impersonation.asp"&gt;http://msdn.microsoft.com/library/en-us/secauthz/security/client_impersonation.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何获得Web Browser中页面框架(frame iframe)内的元素（VB 网络编程 ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;如果我们枚举Web Browser的Document对象中所有的元素，只能的页面框架的元素,请问怎样才能获得框架 src所指向页面的元素。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;The capability of scripting across domain is affected by builtin security. Under &amp;quot;IE security settings&amp;quot; - &amp;quot;Miscellaneous&amp;quot;, there are the options &amp;quot;Access data sources across domains&amp;quot; and &amp;quot;Navigate sub-frames across different domains&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFramesCol &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IHTMLFramesCollection2&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;! &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pDisp &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Object&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IWindow2 &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IHTMLWindow2&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Integer&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;! &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; varIndex &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Variant&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; frameDoc &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IHTMLDocument2&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFramesCol &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; doc.frames&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Not&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFramesCol &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Is&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;For&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;To&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFramesCol.length &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;varIndex &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pDisp &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFramesCol.Item(varIndex)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;! &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; pDisp.QueryInterface IHTMLWindow2, IWindow2&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;! &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IWindow2 &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pDisp&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Not&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IWindow2 &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Is&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Not&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IWindow2.Document &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Is&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Possible &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;error&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; may arise: Access Denied&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; frameDoc &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IWindow2.Document&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Next&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;webrowser.document.frames.item(index).all(i)&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;关于IHTMLDocument2接口（.NET技术 C# ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;执行&lt;br /&gt;IHTMLDocument2 doc = (IHTMLDocument2)axWebBrowser1.Document;&lt;br /&gt;后发现：&lt;br /&gt;可以正确进行 doc.write 操作，但访问doc的url和parentWindow属性运行的时候就提示错误&lt;br /&gt;&lt;br /&gt;那个axWebBrowser1 是拖到对话框以后没有改任何设置的。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Document is not ready&lt;br /&gt;handle DocumentComplete&lt;br /&gt;&lt;a href="http://support.microsoft.com/?kbid=312777"&gt;http://support.microsoft.com/?kbid=312777&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;.net里面，怎么出来classWizard界面啊？我只会用vc6.0，.net不大会用（VC/MFC 基础类）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;就是需要加消息处理函数，和虚拟函数继承的那个界面，在vc下面是快捷健：CTRL+W。.net下怎么做？&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Visual C++ Concepts: Porting and Upgrading &lt;br /&gt;&lt;br /&gt;Where Are ClassWizard and WizardBar in Visual C++ .NET?&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcgrfWhereIsClassWizardInVisualCNET.asp&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何设置WebBrowser控件显示内容的Html代码？（VB 控件）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;如何设置WebBrowser显示页面的Html代码，WebBrowser可以显示制定的页面，但是我打算把页面的Html代码发送给WebBrowser进行显示，如何做呢？&lt;br /&gt;&lt;br /&gt;WebBrowser1.Navigate2 &amp;quot;0&amp;quot;, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;lt;HTML&amp;gt;&amp;lt;DIV&amp;gt;我的内容&amp;lt;/DIV&amp;gt;&amp;lt;/HTML&amp;gt;&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;这行代码没作用啊.另外，我将网页文件放到资源文件中，然后读出来怎么就是乱码了呢?我想把网页放到资源文件中，防止用户改动内容，读出来后送给WebBrowser显示。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;WebBrowser1.Navigate(&amp;quot;about:blank&amp;quot;)&lt;br /&gt;WebBrowser1.Document.open&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;HTML&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;HEAD&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;TITLE&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;New Document&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;/TITLE&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;/HEAD&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;BODY&amp;gt;aaaa&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;/BODY&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.writeln(&amp;quot;&amp;lt;/HTML&amp;gt;&amp;quot;)&lt;br /&gt;WebBrowser1.Document.Close&lt;/p&gt;&lt;br /&gt;&lt;p&gt;or &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Navigate to about:blank&lt;br /&gt;Wait for readyState to indicate &amp;quot;complete&amp;quot;&lt;br /&gt;Get IPersistStreamInit interface from document&lt;br /&gt;Call InitNew&lt;br /&gt;Call Load&lt;br /&gt;Wait for readyState to indicate &amp;quot;complete&amp;quot;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;调用非托管 DLL 时，多层 struct/union 怎么 marshal (.NET技术 .NET Framework )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;struct 的结构大概是这样&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_7_210_Open_Image" onclick="this.style.display='none'; Codehighlighter_7_210_Open_Text.style.display='none'; Codehighlighter_7_210_Closed_Image.style.display='inline'; Codehighlighter_7_210_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_7_210_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_7_210_Closed_Text.style.display='none'; Codehighlighter_7_210_Open_Image.style.display='inline'; Codehighlighter_7_210_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_7_210_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_7_210_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;psVal1;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;psVal2;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_56_201_Open_Image" onclick="this.style.display='none'; Codehighlighter_56_201_Open_Text.style.display='none'; Codehighlighter_56_201_Closed_Image.style.display='inline'; Codehighlighter_56_201_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_56_201_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_56_201_Closed_Text.style.display='none'; Codehighlighter_56_201_Open_Image.style.display='inline'; Codehighlighter_56_201_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_56_201_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_56_201_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;BYTE a1;&lt;br /&gt;&lt;img id="Codehighlighter_73_198_Open_Image" onclick="this.style.display='none'; Codehighlighter_73_198_Open_Text.style.display='none'; Codehighlighter_73_198_Closed_Image.style.display='inline'; Codehighlighter_73_198_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_73_198_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_73_198_Closed_Text.style.display='none'; Codehighlighter_73_198_Open_Image.style.display='inline'; Codehighlighter_73_198_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;union &lt;/span&gt;&lt;span id="Codehighlighter_73_198_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_73_198_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;BYTE bVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; some other variables.....&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_133_159_Open_Image" onclick="this.style.display='none'; Codehighlighter_133_159_Open_Text.style.display='none'; Codehighlighter_133_159_Closed_Image.style.display='inline'; Codehighlighter_133_159_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_133_159_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_133_159_Closed_Text.style.display='none'; Codehighlighter_133_159_Open_Image.style.display='inline'; Codehighlighter_133_159_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_133_159_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_133_159_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;psVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WORD wVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img id="Codehighlighter_169_195_Open_Image" onclick="this.style.display='none'; Codehighlighter_169_195_Open_Text.style.display='none'; Codehighlighter_169_195_Closed_Image.style.display='inline'; Codehighlighter_169_195_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_169_195_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_169_195_Closed_Text.style.display='none'; Codehighlighter_169_195_Open_Image.style.display='inline'; Codehighlighter_169_195_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_169_195_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_169_195_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WORD wVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;BYTE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pbVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; stVal;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;而且这个结构体的地址还要通过一个 callback 函数的 Int32 型参数传进来,只需要读，不需要写,应该怎么 Marshal 呢&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;最简单的方法就是在你的C++代码里写一个托管类为本地类marshal(就像你在COM Automation里干的一样.)&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;关于SHGetMalloc(&amp;amp;pMalloc) (VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;是否windows将所有需要动态内存分配的（如new）shell对象，全都放在它自己管理的一个堆里？但是windows又不自己释放，需要用&lt;br /&gt;SHGetMalloc(&amp;amp;pMalloc);来获得这个堆的指针，最后通过pMalloc-&amp;gt;free(shellobj) 来释放分配的对象，最后再pMalloc-&amp;gt;Release();释放自己对所有的动态创建的shellobj都适用吗？那什么时候调用pMalloc-&amp;gt;Alloc来分配对象呢？用上面的方法后不需要调用它吗？&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;What's the difference between SHGetMalloc, SHAlloc, CoGetMalloc, and CoTaskMemAlloc&lt;br /&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2004/07/05/173226.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2004/07/05/173226.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;They are different code segments to do the same thing *now*. They used to do different things in history. In general, you should not implement IMalloc, instead using the COM implementation, which is guaranteed to be thread-safe in managing task memory. You get a pointer to the COM task allocator object's IMalloc through a call to the CoGetMalloc function.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SHFree can be used to free shell objects *allocated by* shelll functions&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h2&gt;如何编程修改文件夹的属性? 比如隐藏(VC/MFC 基础类 )&lt;/h2&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;The SetFileAttributes function sets the attributes for a file or directory. &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/fileio/fs/retrieving_and_changing_file_attributes.asp"&gt;http://msdn.microsoft.com/library/en-us/fileio/fs/retrieving_and_changing_file_attributes.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何在regedit中打开特定的键并选中一个的指定的值(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我想在程序中,调用regedit.exe打开一个特定的键,并且一个特定的值被选中.请问如何做才好.&lt;br /&gt;就像在regmon中双击listview中的一项就能用regedit定位到相应的值上 &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;write your own viewer, or use Win32 API to automate the regedit window( code may vary in different version of Windows.)&lt;br /&gt;see &lt;a href="http://support.microsoft.com/kb/178665"&gt;http://support.microsoft.com/kb/178665&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;我的控件变量ip地址不能正确显示(VC/MFC 网络编程 ) &lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;BOOL CLocalipDlg::GetGlobalData()&lt;br /&gt;&lt;img id="Codehighlighter_34_569_Open_Image" onclick="this.style.display='none'; Codehighlighter_34_569_Open_Text.style.display='none'; Codehighlighter_34_569_Closed_Image.style.display='inline'; Codehighlighter_34_569_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_34_569_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_34_569_Closed_Text.style.display='none'; Codehighlighter_34_569_Open_Image.style.display='inline'; Codehighlighter_34_569_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_34_569_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_34_569_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;PIP_ADAPTER_INFO pAdapterInfo &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ULONG ulLEN &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;::GetAdaptersInfo(pAdapterInfo,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ulLEN);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;pAdapterInfo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLEN);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(pAdapterInfo &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img id="Codehighlighter_217_552_Open_Image" onclick="this.style.display='none'; Codehighlighter_217_552_Open_Text.style.display='none'; Codehighlighter_217_552_Closed_Image.style.display='inline'; Codehighlighter_217_552_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_217_552_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_217_552_Closed_Text.style.display='none'; Codehighlighter_217_552_Open_Image.style.display='inline'; Codehighlighter_217_552_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_217_552_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_217_552_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;网卡地址&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;memcpy(g_ucLocalMac, pAdapterInfo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Address, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;网关&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;g_dwGateWayIP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ::inet_addr(pAdapterInfo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GatewayList.IpAddress.String);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;这里inet_addr() 返回的地址已经是按照网络字节顺序的&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;本机ip&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;g_dwLocalIP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ::inet_addr(pAdapterInfo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;IpAddressList.IpAddress.String);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;掩码&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;g_dwNetMask &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ::inet_addr(pAdapterInfo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;IpAddressList.IpMask.String);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; TRUE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;自定义函数&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;//这里把32位二进制换成字符串&lt;br /&gt;in_addr in;&lt;br /&gt;&lt;br /&gt;in.S_un.S_addr = g_dwLocalIP;&lt;br /&gt;&lt;br /&gt;m_IP.Format(&amp;quot;%s&amp;quot;, ::inet_ntoa(in));//然后赋给给控件变量,直接赋也不正确,控件变量是CString!&lt;br /&gt;&lt;br /&gt;显示是204.204.204.204&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;204=0xCC&lt;br /&gt;这说明&lt;br /&gt;１ 变量没有初始化&lt;br /&gt;２ 你没有检查函数调用的返回值判断调用是否成功&lt;br /&gt;::GetAdaptersInfo(pAdapterInfo,&amp;amp;ulLEN);&lt;br /&gt;pAdapterInfo= (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLEN);&lt;br /&gt;=&amp;gt;&lt;br /&gt;::GetAdaptersInfo(pAdapterInfo,&amp;amp;ulLEN);//获取需要的缓冲区大小&lt;br /&gt;pAdapterInfo= (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ulLEN);//分配缓冲区&lt;br /&gt;::GetAdaptersInfo(pAdapterInfo,&amp;amp;ulLEN);//获取信息&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;关于IHTMLDocument2接口的问题(.NET技术 C# )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我想设计一个win32对话框，点击对话框里面一个按钮，就用ie打开一个新窗口，那个窗口可以用那个IHTMLDocument2对象控制。&lt;br /&gt;这样能不能用那个open方法做？&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;You need to create a COM object with the CLSID CLSID_INTERNETEXPLORER or progid internet.application&lt;br /&gt;reference:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;You will need to create a WinForm application instead of Console application. &lt;br /&gt;&lt;br /&gt;The DLL you will need is SHDocVw.DLL. To avoid name conflict, use AXIMP.EXE to generate your wrappers. Then, use ILDASM do disassemble the wrappers for both. Once you have that, you can recompile the IL for ShDocVw.dll (the one that AXIMP&lt;br /&gt;generated) into another assembly with a different name. Then, you should be able to do the same with the IL for AxShDocVw.dll, adding a reference to the new dll that you just compiled. You should then be able to have these in your directory and use them no problem. &lt;br /&gt;&lt;br /&gt;Better if you can program in managed C++.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;如何更改xml节点的属性(VC/MFC HTML/XML )&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;xml文件的格式如下：&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;eventDef&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;event&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;detail&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;id&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;79999&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;id&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;内部事件&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;detail&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;control&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;enabled&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;true&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;enabled&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;visible&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;false&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;visible&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;control&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;classify&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;class&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;可疑网络活动类&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;class&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;tech&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;事件监控&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;tech&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;pop&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;低&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;pop&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;danger&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;低&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;danger&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;device&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Misc&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;device&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;service&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MISC&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;service&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;classify&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;event&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;eventDef&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;小弟现在想要修改&amp;lt;enabled&amp;gt;...&amp;lt;/enabled&amp;gt;的属性的值&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;1 可以用正则表达式进行文本替换&lt;br /&gt;2 可以用MSXML DOM或者SAX将文件读入，之后进行修改后写回&lt;br /&gt;参见&lt;br /&gt;&lt;a href="http://www.codeproject.com/string/use_regular_expression_in_your_program.asp"&gt;http://www.codeproject.com/string/use_regular_expression_in_your_program.asp&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.perfectxml.com/CPPMSXML/20020710.asp"&gt;http://www.perfectxml.com/CPPMSXML/20020710.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;WriteProcessMemory后,目标进程异常 (VC/MFC 进程/线程/DLL )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;1. 程序A 用CreateProcess产生程序B的 M个实例。&lt;br /&gt;2. 当程序B的 实例1 的某一页（为可读可写页）发生改变后，这时程序A用WriteProcessMemory把这一页写到其它M-1个实例中。&lt;br /&gt;3.程序B中有一个查看按钮，单击此按钮会引用到刚才修改的页，平时一切正常，但当程序A中的 WriteProcessMemory执行后，点击此按钮，当前正在执行的实例就会终止运行。&lt;br /&gt;4.通过一些内存查看软件观察，数据其实已经被写入到该页中。&lt;br /&gt;5.我用FPE，发现程序A的WriteProcessMemory执行后，用FPE观察指定页，然后点击fpe上的&amp;ldquo;刷新&amp;rdquo;，这时再点击实例中的查看按钮，实例就不会中止了。&lt;br /&gt;6.只想在ring3下解决这个问题，不想用ring0下修改pte绕过copy on write的办法。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;a common mistake is trying to access the stack in another process.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何替换windows启动时的登陆窗口(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我想实现用自己的界面来替换windows的登陆窗口，如何实现？&lt;br /&gt;或者说windows启动到桌面之前，先加载我定制的窗口界面，类似网吧客户机那种效果&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/secauthn/security/supporting_new_logon_protocols.asp"&gt;http://msdn.microsoft.com/library/en-us/secauthn/security/supporting_new_logon_protocols.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;LPCITEMIDLIST类型的数据如何能做到序列化(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我想了两个方案,一转换为路径cstring再序列化.二.从cobject继承,实现一个CLPCITEMIDLIST,不知道行不行&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;你可以获得pidl的绝对路径之后再序列化。pidl中的数据仅作目录中临时定位用，并不能保证在程序关闭之后仍然有效。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;微软的DrawCli例子中如何实现下列功能(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;问题1：我用例子上画矩形的方法画了一个矩形，这个矩形是如何被拖动的。用到哪些关键函数？ 拖动效果是靠画了有擦，擦了再画的方式实现的吗？&lt;br /&gt;&lt;br /&gt;问题2：我又添加了一个ToolBar，然后在上面添加了一个按钮。我想一点击此按钮就能在当前窗体上画一个2行2列的表格。此表格应该像矩形一样可以托拽。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;1 DrawCli用的是CRectTracker，也就是画了再擦的技术。&lt;br /&gt;2 添加一个自定义的shape，并且设计对应的Tool(就是鼠标和键盘处理啦)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;一组还是一个对象，完全看你的数据组织方式。比如矩形，也可以看作4条线，也可以看作很多个点的集合，但是这里作为一个对象处理。你的表格，虽然是很多线条，当然也可以看作一个对象处理，在没有类的年代都可以，有了类只不过更简单了。比如，你可以定义一个CTable类来处理你的表格，可以包装表格大小，可以绘制自己，也可以处理创建、拖动等操作。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;DoModal()返回-1（VC/MFC 基础类）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我的一个基于MFC对话框的程序.里面有CWebBrowser和CShockwaveFlash控件,在一台新装的机器上运行程序的时候InitInstance()里的Domodal()函数直接返回-1 ,对话框都没显示出来...重装系统前还可以用的&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Shockwave Flash is not present in a fresh machine. &lt;br /&gt;&lt;br /&gt;ask your user to go to &lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;www.macromedia.com/go/getflashplayer&lt;/a&gt;&amp;nbsp; to download one, or pack a recent version of flash player in your setup program.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;怎么通过应用程序产生ctrl+alt+delete的sas消息（VC/MFC 进程/线程/DLL ）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;#include &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;windows.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;BOOL simulateAltControlDel();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; main()&lt;br /&gt;&lt;img id="Codehighlighter_63_90_Open_Image" onclick="this.style.display='none'; Codehighlighter_63_90_Open_Text.style.display='none'; Codehighlighter_63_90_Closed_Image.style.display='inline'; Codehighlighter_63_90_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_63_90_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_63_90_Closed_Text.style.display='none'; Codehighlighter_63_90_Open_Image.style.display='inline'; Codehighlighter_63_90_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_63_90_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_63_90_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;simulateAltControlDel();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;BOOL simulateAltControlDel()&lt;br /&gt;&lt;img id="Codehighlighter_121_1755_Open_Image" onclick="this.style.display='none'; Codehighlighter_121_1755_Open_Text.style.display='none'; Codehighlighter_121_1755_Closed_Image.style.display='inline'; Codehighlighter_121_1755_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_121_1755_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_121_1755_Closed_Text.style.display='none'; Codehighlighter_121_1755_Open_Image.style.display='inline'; Codehighlighter_121_1755_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_121_1755_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_121_1755_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HDESK hdeskCurrent;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HDESK hdesk;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HWINSTA hwinstaCurrent;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HWINSTA hwinsta;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Save the current Window station&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hwinstaCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetProcessWindowStation();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hwinstaCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Save the current desktop&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hdeskCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetThreadDesktop(GetCurrentThreadId());&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hdeskCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Obtain a handle to WinSta0 - service must be running&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; in the LocalSystem account&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hwinsta &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OpenWindowStation(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;winsta0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, FALSE,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ACCESSCLIPBOARD &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ACCESSGLOBALATOMS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_CREATEDESKTOP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ENUMDESKTOPS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ENUMERATE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_EXITWINDOWS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_READATTRIBUTES &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_READSCREEN &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_WRITEATTRIBUTES);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hwinsta &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Set the windowstation to be winsta0&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetProcessWindowStation(hwinsta))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Get the default desktop on winsta0&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hdesk &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OpenDesktop(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Winlogon&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, FALSE,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_CREATEMENU &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_CREATEWINDOW &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_ENUMERATE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_HOOKCONTROL &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_JOURNALPLAYBACK &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_JOURNALRECORD &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_READOBJECTS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_SWITCHDESKTOP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_WRITEOBJECTS);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hdesk &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Set the desktop to be &amp;quot;default&amp;quot;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetThreadDesktop(hdesk))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;PostMessage(HWND_BROADCAST,WM_HOTKEY,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,MAKELPARAM(MOD_ALT&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MOD_CONTROL,VK_DELETE));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Reset the Window station and desktop&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetProcessWindowStation(hwinstaCurrent))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetThreadDesktop(hdeskCurrent))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Close the windowstation and desktop handles&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CloseWindowStation(hwinsta))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CloseDesktop(hdesk))&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; TRUE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;当前用户需要对登录桌面有DESKTOP_READOBJECTS权限&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;紧急！！！window.external 我在vc程序实现了自己的接口，但是ie本身的却没有了。（VC/MFC 网络编程）&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我用vc，实现了ie的getexternal接口，在网页中可以访问到vc的函数了。但是，ie本身的接口却没有了，如addfavorite,showbrowserui.&lt;br /&gt;关于addfavorte, 前天搜索了一下，一个高手介绍了可以发送消息 message=wm_command, wparam=2261给浏览器窗口。是可以实现的得了，但是其他的接口如showbrowserui等又如何解决。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;可以把原来的external对象的IDispatch接口保存下来，getidsofnames和invoke的时候转发一下就可以了。showbrowserui是你自己要实现的&amp;hellip;&amp;hellip;你还要实现一个external对象，需要支持的属性包括menuarguments 和 Shell UI helper的全部属性。&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;在GetExternal函数中执行，得到原先的Idisptach接口&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(m_pShell &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img id="Codehighlighter_58_158_Open_Image" onclick="this.style.display='none'; Codehighlighter_58_158_Open_Text.style.display='none'; Codehighlighter_58_158_Closed_Image.style.display='inline'; Codehighlighter_58_158_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_58_158_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_58_158_Closed_Text.style.display='none'; Codehighlighter_58_158_Open_Image.style.display='inline'; Codehighlighter_58_158_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_58_158_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_58_158_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CoCreateInstance(CLSID_ShellUIHelper, NULL, CLSCTX_SERVER, IID_IShellUIHelper, (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;m_pShell)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;然后，在自己实现的 GetIDOfNames及Invoke中，对于不是自定定义的函数直接调用&lt;br /&gt;m_pShell-&amp;gt;GetIDOfnames(....)及m_pShell-&amp;gt;Invoke(....).&lt;br /&gt;&lt;br /&gt;其中有个问题需要注意，就是如果在GetIfOfnames中，如果你给rgDispId赋值则可能跟ie内置函数的id重复，如调试中我得到showbrowserui的dispid=13。此时，需要通过另外变量辨别是默认函数或者是自定义函数了。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/183339/"&gt;http://support.microsoft.com/kb/183339/&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.codeguru.com/cpp/com-tech/atl/article.php/c3565/"&gt;http://www.codeguru.com/cpp/com-tech/atl/article.php/c3565/&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.codeproject.com/atl/multidisp.asp"&gt;http://www.codeproject.com/atl/multidisp.asp&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;WinInet依赖IE,如果程序读取网页后关闭程序再打开程序，它还会从cache里读取内容么 (VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;有的参数可以禁止从cache读取.我的意思是，在不使用这些参数的前提下，什么情况使程序直接从网上读取网页而不从cache读取？&lt;br /&gt;&lt;br /&gt;可以肯定的是下面这些情况：&lt;br /&gt;如果打开程序，读取网页，再次读取网页肯定是从cache读；如果从IE读取网页，然后再用程序读，肯定是从cache读&lt;br /&gt;&lt;br /&gt;我想知道的是：如果读取网页后关闭程序再打开程序，它还会从cache里读取网页么？如果读取网页后重新启动操作系统，再打开程序，它还会从cache里读取网页么&lt;span lang="zh-cn"&gt;？&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;http返回的响应头里包含了下载文件的大小，时间，可以得到这个值和本地的文件大小、时间比较的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;IE is based on WinInet.search URLDownloadToFile and URLDownloadToCacheFile in MSDN&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;CString遇&amp;quot;undeclared identifier&amp;quot;的问题(CLR) (.NET技术 VC.NET )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;首先我是用vc.net开了一个CLR项目，可能会出现混合库的问题，这个问题现在还不知道怎么描述&lt;br /&gt;&lt;br /&gt;1、最初使用cstring时，告知&amp;quot;error C2065: 'CString' : undeclared identifier&amp;quot;&lt;br /&gt;&lt;br /&gt;2、看了一些文档后，增加#include &amp;quot;afx.h&amp;quot;，提示&amp;quot;fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]D:\xp\Microsoft Visual Studio 8\VC\atlmfc\include\afx.h24&amp;quot;&lt;br /&gt;&lt;br /&gt;3、又看了一些文档，有些人推荐用string 代替cstring,故使用&lt;br /&gt;String ^jc = gcnew String(pHeader-&amp;gt;m_pReportV3[i].m_szName);&lt;br /&gt;提示&amp;quot;The pointer passed in as a String must not be in the bottom 64K of the process's address space.&amp;quot;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;混合库用/CLR可以，但是用MFC的话得要有CWinApp对象，而这个对象又封装了应用程序的入口，所以建议还是用MFC的程序向导生成程序&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;vc.net lnk2001 unresolved external symbol int _cdecl func1(int) (?func1@@JOYAHH@Z) (.NET技术 VC.NET )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;在vc++6中 使用a.h ,a.lib 和a.dll调用函数func1没有任何问题&lt;br /&gt;在vc.net(vs2003.net)中总是报如题错误。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Calling a C function from a C++ program without using extern &amp;quot;C&amp;quot; (which causes the compiler to use the C naming convention) can cause LNK2001. Compiler options /Tp and /Tc cause the compiler to compile files as C or C++, respectively, regardless of the filename extension. These options can cause function names different from what you expect. Also, calling a function with parameter types that do not match those in the function declaration can cause LNK2001. There is currently no standard for C++ naming between compiler vendors or even between different versions of a compiler. Therefore, linking object files compiled with other compilers may not produce the same naming scheme and thus cause error LNK2001. &lt;br /&gt;&lt;br /&gt;reference&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/vccore/html/_error_Name_Decoration.asp"&gt;http://msdn.microsoft.com/library/en-us/vccore/html/_error_Name_Decoration.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;请问在服务程序中如何知道Windows已登录？ (.NET技术 VC.NET )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;下面的代码列出控制台用户的用户名&lt;br /&gt;Topic in microsoft.public.vc.language &lt;br /&gt;FindWindow() to terminal service clients&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;BOOL ShowConsoleUsernameFromSystem(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) &lt;br /&gt;&lt;img id="Codehighlighter_42_2611_Open_Image" onclick="this.style.display='none'; Codehighlighter_42_2611_Open_Text.style.display='none'; Codehighlighter_42_2611_Closed_Image.style.display='inline'; Codehighlighter_42_2611_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_42_2611_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_42_2611_Closed_Text.style.display='none'; Codehighlighter_42_2611_Open_Image.style.display='inline'; Codehighlighter_42_2611_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_42_2611_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_42_2611_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{ &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HDESK hdeskCurrent; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HDESK hdeskTest; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HDESK hdesk; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HWINSTA hwinstaCurrent; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HWINSTA hwinsta; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Save the current Window station &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hwinstaCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetProcessWindowStation(); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hwinstaCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Save the current desktop &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hdeskCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetThreadDesktop(GetCurrentThreadId()); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hdeskCurrent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Obtain a handle to WinSta0 - service must be running &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; in the LocalSystem account &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hwinsta &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OpenWindowStation(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;winsta0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, FALSE, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ACCESSCLIPBOARD &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ACCESSGLOBALATOMS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_CREATEDESKTOP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ENUMDESKTOPS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_ENUMERATE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_EXITWINDOWS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_READATTRIBUTES &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_READSCREEN &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;WINSTA_WRITEATTRIBUTES); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hwinsta &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Set the windowstation to be winsta0 &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetProcessWindowStation(hwinsta)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Get the desktop &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hdeskTest &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetThreadDesktop(GetCurrentThreadId()); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hdeskTest &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Get the default desktop on winsta0 &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hdesk &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OpenDesktop(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;default&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, FALSE, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_CREATEMENU &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_CREATEWINDOW &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_ENUMERATE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_HOOKCONTROL &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_JOURNALPLAYBACK &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_JOURNALRECORD &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_READOBJECTS &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_SWITCHDESKTOP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DESKTOP_WRITEOBJECTS); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hdesk &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Set the desktop to be &amp;quot;default&amp;quot; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetThreadDesktop(hdesk)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Get registry entries &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_1424_2268_Open_Image" onclick="this.style.display='none'; Codehighlighter_1424_2268_Open_Text.style.display='none'; Codehighlighter_1424_2268_Closed_Image.style.display='inline'; Codehighlighter_1424_2268_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_1424_2268_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_1424_2268_Closed_Text.style.display='none'; Codehighlighter_1424_2268_Open_Image.style.display='inline'; Codehighlighter_1424_2268_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_1424_2268_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_1424_2268_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;really, this is a separate function, just inserted here for ease: &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_1515_1517_Open_Image" onclick="this.style.display='none'; Codehighlighter_1515_1517_Open_Text.style.display='none'; Codehighlighter_1515_1517_Closed_Image.style.display='inline'; Codehighlighter_1515_1517_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_1515_1517_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_1515_1517_Closed_Text.style.display='none'; Codehighlighter_1515_1517_Open_Image.style.display='inline'; Codehighlighter_1515_1517_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; szUserName[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span id="Codehighlighter_1515_1517_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_1515_1517_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img id="Codehighlighter_1544_1546_Open_Image" onclick="this.style.display='none'; Codehighlighter_1544_1546_Open_Text.style.display='none'; Codehighlighter_1544_1546_Closed_Image.style.display='inline'; Codehighlighter_1544_1546_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_1544_1546_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_1544_1546_Closed_Text.style.display='none'; Codehighlighter_1544_1546_Open_Image.style.display='inline'; Codehighlighter_1544_1546_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; szDomainName[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span id="Codehighlighter_1544_1546_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_1544_1546_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;DWORD type,size; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HKEY hKeyWinlogon &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Open the registry key to WinLogon entries: &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;RegOpenKeyEx( &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HKEY_LOCAL_MACHINE, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;KEY_READ, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hKeyWinlogon ); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Get the strings from entries: &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;size &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(szUserName); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;RegQueryValueEx( &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hKeyWinlogon, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DefaultUserName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;type, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;(LPBYTE)szUserName, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;size); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;size &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(szDomainName); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;RegQueryValueEx( &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hKeyWinlogon, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DefaultDomainName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;type, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;(LPBYTE)szDomainName, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;size); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;RegCloseKey(hKeyWinlogon); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;szUserName[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;120&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;szDomainName[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;120&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;strcat(szDomainName,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;strcat(szDomainName,szUserName); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;MessageBox(NULL, (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)szDomainName, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;User at Console:&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, MB_OK); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;end of inserted function &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Reset the Window station and desktop &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetProcessWindowStation(hwinstaCurrent)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetThreadDesktop(hdeskCurrent)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Close the windowstation and desktop handles &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CloseWindowStation(hwinsta)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CloseDesktop(hdesk)) &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; FALSE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; TRUE; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;对于Windows终端服务器，WinSta0可能不是登录用户的windows station，这时你要调用WTSRegisterSessionNotification来截获用户登录消息。在这之前，需要判断终端服务的状态。&lt;br /&gt;参见&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/termserv/termserv/detecting_the_terminal_services_environment.asp"&gt;http://msdn.microsoft.com/library/en-us/termserv/termserv/detecting_the_terminal_services_environment.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;WebBrowser控件怎么禁用js等脚本？(.NET技术 C# )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp"&gt;http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.codeproject.com/cs/miscctrl/WebBrowserEx.asp"&gt;http://www.codeproject.com/cs/miscctrl/WebBrowserEx.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何得知ACCESS中表的字段有效性规则(Delphi 数据库相关)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;你可以使用Jet Property Manager（Jet属性管理器/JPM）来创建/更改/删除所有属性（通过CreateProperty/Properties.Append, 这在DAO中有效），但是ADO/ADOx/JRO因为没有JPM到ADO的对应，所以只支持Jet Property的一个子集；幸运的是，有效性规则在ADO支持的属性列表中。你可以通过修改Jet OLEDB:Column Validation Rule和Jet OLEDB:Column Validation Text 这两个列属性来设置有效性规则。&lt;br /&gt;参考&lt;br /&gt;&lt;a href="http://blog.csdn.net/jiangsheng/archive/2004/03/15/3799.aspx"&gt;http://blog.csdn.net/jiangsheng/archive/2004/03/15/3799.aspx&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何得到显卡支持的分辨率列表(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.codeproject.com/system/enum_display_modes.asp"&gt;http://www.codeproject.com/system/enum_display_modes.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;CRichEditCtrl的Debug版本和Release版本的排版差异?(VC/MFC 界面 )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我用SetWindowText设置内容,用\t \r \n控制排版,Debug版本排得好好的,到了release就排乱了.请都何解?&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;seems like a program caused by uninitialized variables &lt;br /&gt;&lt;br /&gt;an uninitialized variable is a variable that is declared but is not set to a definite known value before it is used. It will have some value, but not a predictable one. As such it is a programming error and a common source of bugs in software.&lt;br /&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://blog.joycode.com/jiangsheng/archive/2006/02/05/71101.aspx"&gt;http://blog.joycode.com/jiangsheng/archive/2006/02/05/71101.aspx&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;为何我用MFC做的OLE server打开后，在client端用 GetActiveObject 得不到指针(VC/MFC ATL/ActiveX/COM )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;client side:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img id="Codehighlighter_0_39_Open_Image" onclick="this.style.display='none'; Codehighlighter_0_39_Open_Text.style.display='none'; Codehighlighter_0_39_Closed_Image.style.display='inline'; Codehighlighter_0_39_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_0_39_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_0_39_Closed_Text.style.display='none'; Codehighlighter_0_39_Open_Image.style.display='inline'; Codehighlighter_0_39_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;span id="Codehighlighter_0_39_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"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter_0_39_Open_Text"&gt;&lt;span style="COLOR: #808080"&gt;///////////////////////////////////////&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;CLSID clsid; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;CLSIDFromProgID(L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyServer.Document&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;clsid);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;IUnknown &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pUnk &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;IDispatch &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pDisp &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; GetActiveObject(clsid, NULL, (IUnknown&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pUnk);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(SUCCEEDED(hr))&lt;br /&gt;&lt;img id="Codehighlighter_230_298_Open_Image" onclick="this.style.display='none'; Codehighlighter_230_298_Open_Text.style.display='none'; Codehighlighter_230_298_Closed_Image.style.display='inline'; Codehighlighter_230_298_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_230_298_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_230_298_Closed_Text.style.display='none'; Codehighlighter_230_298_Open_Image.style.display='inline'; Codehighlighter_230_298_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_230_298_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_230_298_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pUnk&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;QueryInterface(IID_IDispatch, (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pDisp);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_300_339_Open_Image" onclick="this.style.display='none'; Codehighlighter_300_339_Open_Text.style.display='none'; Codehighlighter_300_339_Closed_Image.style.display='inline'; Codehighlighter_300_339_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_300_339_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_300_339_Closed_Text.style.display='none'; Codehighlighter_300_339_Open_Image.style.display='inline'; Codehighlighter_300_339_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_300_339_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"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter_300_339_Open_Text"&gt;&lt;span style="COLOR: #808080"&gt;///////////////////////////////////////&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;先运行MyServer, 在运行client,clsid可以正确得到,但GetActiveObject不能成功&lt;br /&gt;&lt;br /&gt;难道Server端启动时要用 RegisterActiveObject 来注册吗, 我用MFC作的OLE Server, 这个工作应该MFC帮我做了吧?&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/q155690/"&gt;http://support.microsoft.com/kb/q155690/&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;基于对话框的程序中放置了一个WebBrowser控件，怎样在另外一个程序中获得该WebBrowser的IHTMLDocument(VC/MFC ATL/ActiveX/COM)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Write a COM server (create the application with automation support, and add a property exporting the IDispatch interface of the WebBrowser control.&lt;br /&gt;&lt;br /&gt;Another way is to register a systemwide message with RegisterWindowMessage and return the HWND of the WebBrowser control. The other application can send this message to the dialog application and use the HWND of the WebBrowser control to retrieve the IHTMLDocument interface of the HTMLDocument obejct(see MSDN&lt;br /&gt;KB Q249232 HOWTO: Get IHTMLDocument2 from a HWND &lt;a href="http://support.microsoft.com/support/kb/articles/Q249/2/32.asp"&gt;http://support.microsoft.com/support/kb/articles/Q249/2/32.asp&lt;/a&gt; ).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/01/06/c/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/01/06/c/default.aspx&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;IDispatch调用_AppDomain (VC/MFC ATL/ActiveX/COM)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;在SDK程序中通过COM得到了一个指向System.AppDomain对象的IDispatch*.然后通过Invoke来进行操作;但是调用ToString之类的无参数方法还可以,但在偶想调用Load之类的方法时就总是不行.Invoke返回的值在MSDN中查不到.&lt;br /&gt;偶想问一下:非托管代码在调用托管代码时传递的字符串应该是那种类型的啊?偶传的是BSTR*.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;用IDispatch::GetTypeInfo看看Load方法到底期待什么类型的参数&amp;mdash;&amp;mdash;很有可能是一个string对象的IDispatch接口。重载AppDomain.Load这名字的函数太多。&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;Run-Time Check Failure #N (C/C++ C++ 语言)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;环境：Visual Studio.Net 2003&lt;br /&gt;类型：Debug&lt;br /&gt;以下代码作了简化，有谁有Run-Time Check Failure 资料?&lt;br /&gt;&lt;br /&gt;代码1&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;#include &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdafx.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; malice()&lt;br /&gt;&lt;img id="Codehighlighter_34_75_Open_Image" onclick="this.style.display='none'; Codehighlighter_34_75_Open_Text.style.display='none'; Codehighlighter_34_75_Closed_Image.style.display='inline'; Codehighlighter_34_75_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_34_75_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_34_75_Closed_Text.style.display='none'; Codehighlighter_34_75_Open_Image.style.display='inline'; Codehighlighter_34_75_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_34_75_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_34_75_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Hey,you're been attacked.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; foo()&lt;br /&gt;&lt;img id="Codehighlighter_89_139_Open_Image" onclick="this.style.display='none'; Codehighlighter_89_139_Open_Text.style.display='none'; Codehighlighter_89_139_Closed_Image.style.display='inline'; Codehighlighter_89_139_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_89_139_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_89_139_Closed_Text.style.display='none'; Codehighlighter_89_139_Open_Image.style.display='inline'; Codehighlighter_89_139_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_89_139_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_89_139_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ret;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ret&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ret&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ret)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)malice;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; _tmain(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argc, _TCHAR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argv[])&lt;br /&gt;&lt;img id="Codehighlighter_179_198_Open_Image" onclick="this.style.display='none'; Codehighlighter_179_198_Open_Text.style.display='none'; Codehighlighter_179_198_Closed_Image.style.display='inline'; Codehighlighter_179_198_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_179_198_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_179_198_Closed_Text.style.display='none'; Codehighlighter_179_198_Open_Image.style.display='inline'; Codehighlighter_179_198_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_179_198_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_179_198_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;foo();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;运行后出现：&lt;br /&gt;Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;代码2&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;#include &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdafx.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; foo()&lt;br /&gt;&lt;img id="Codehighlighter_31_57_Open_Image" onclick="this.style.display='none'; Codehighlighter_31_57_Open_Text.style.display='none'; Codehighlighter_31_57_Closed_Image.style.display='inline'; Codehighlighter_31_57_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_31_57_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_31_57_Closed_Text.style.display='none'; Codehighlighter_31_57_Open_Image.style.display='inline'; Codehighlighter_31_57_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_31_57_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_31_57_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; var[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;var[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; _tmain(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argc, _TCHAR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argv[])&lt;br /&gt;&lt;img id="Codehighlighter_97_116_Open_Image" onclick="this.style.display='none'; Codehighlighter_97_116_Open_Text.style.display='none'; Codehighlighter_97_116_Closed_Image.style.display='inline'; Codehighlighter_97_116_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_97_116_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_97_116_Closed_Text.style.display='none'; Codehighlighter_97_116_Open_Image.style.display='inline'; Codehighlighter_97_116_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_97_116_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_97_116_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;foo();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;运行后出现：&lt;br /&gt;Run-Time Check Failure #2 - Stack around the variable 'var' was corrupted. &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;#include &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdafx.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;#include &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;iostream&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; std;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; a,b;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; _tmain(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argc, _TCHAR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; argv[])&lt;br /&gt;&lt;img id="Codehighlighter_109_173_Open_Image" onclick="this.style.display='none'; Codehighlighter_109_173_Open_Text.style.display='none'; Codehighlighter_109_173_Closed_Image.style.display='inline'; Codehighlighter_109_173_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_109_173_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_109_173_Closed_Text.style.display='none'; Codehighlighter_109_173_Open_Image.style.display='inline'; Codehighlighter_109_173_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_109_173_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_109_173_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; c;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;cout&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;a&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;cout&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;b&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;cout&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;c&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;运行后出现：&lt;br /&gt;Run-Time Check Failure #3 - The variable 'c' is being used without being defined. &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/01/08/bugslayer/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/01/08/bugslayer/default.aspx&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;获取窗口句柄出现问题(VC/MFC 进程/线程/DLL)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;进程A 通过CreateProcess创建了 30个程序B的实例，可以通过进程ID枚举B的30个实例的窗口句柄时，会出现找不到的情况（已经在CreateProcess后延时了一段时间），&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;WaitForInputIdle.有的程序执行时间比较短&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何在ActiveX控件中获得IE地址栏中的地址(VC/MFC ATL/ActiveX/COM )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/181678"&gt;http://support.microsoft.com/kb/181678&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CVC404PCtrl::OnSetClientSite() &lt;br /&gt;&lt;img id="Codehighlighter_37_832_Open_Image" onclick="this.style.display='none'; Codehighlighter_37_832_Open_Text.style.display='none'; Codehighlighter_37_832_Closed_Image.style.display='inline'; Codehighlighter_37_832_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_37_832_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_37_832_Closed_Text.style.display='none'; Codehighlighter_37_832_Open_Image.style.display='inline'; Codehighlighter_37_832_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_37_832_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_37_832_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; TODO: Add your specialized code here and/or call the base class&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (m_pControlSite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL)&lt;br /&gt;&lt;img id="Codehighlighter_135_829_Open_Image" onclick="this.style.display='none'; Codehighlighter_135_829_Open_Text.style.display='none'; Codehighlighter_135_829_Closed_Image.style.display='inline'; Codehighlighter_135_829_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_135_829_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_135_829_Closed_Text.style.display='none'; Codehighlighter_135_829_Open_Image.style.display='inline'; Codehighlighter_135_829_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_135_829_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_135_829_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Obtain URL from container moniker.&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CComPtr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;IMoniker&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; spmk;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPOLESTR pszDisplayName;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;IOleClientSite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pClientSite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;m_pControlSite&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;QueryInterface(IID_IOleClientSite, (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pClientSite);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (SUCCEEDED(pClientSite&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetMoniker(&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;OLEGETMONIKER_TEMPFORUSER,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;OLEWHICHMK_CONTAINER,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;spmk)))&lt;br /&gt;&lt;img id="Codehighlighter_431_827_Open_Image" onclick="this.style.display='none'; Codehighlighter_431_827_Open_Text.style.display='none'; Codehighlighter_431_827_Closed_Image.style.display='inline'; Codehighlighter_431_827_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_431_827_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_431_827_Closed_Text.style.display='none'; Codehighlighter_431_827_Open_Image.style.display='inline'; Codehighlighter_431_827_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_431_827_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_431_827_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (SUCCEEDED(spmk&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetDisplayName(&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;NULL, NULL, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pszDisplayName)))&lt;br /&gt;&lt;img id="Codehighlighter_500_825_Open_Image" onclick="this.style.display='none'; Codehighlighter_500_825_Open_Text.style.display='none'; Codehighlighter_500_825_Closed_Image.style.display='inline'; Codehighlighter_500_825_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_500_825_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_500_825_Closed_Text.style.display='none'; Codehighlighter_500_825_Open_Image.style.display='inline'; Codehighlighter_500_825_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_500_825_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_500_825_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;USES_CONVERSION;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CComBSTR bstrURL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;bstrURL &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pszDisplayName;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ATLTRACE(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;The current URL is %s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, OLE2T(bstrURL));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CoTaskMemFree((LPVOID)pszDisplayName);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CString strServerIP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OLE2T(bstrURL);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;g_strServerIP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; strServerIP.Mid(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;7&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; nPos &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; g_strServerIP.Find(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(nPos &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;g_strServerIP &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; g_strServerIP.Left(nPos);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;关于CListCtrl添加彩色图标的问题(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;自己实现了一个CMyListCtrl,有一个成员变量m_imgList,其中有个成员函数是AddImage以下是部分添加图标的代码，为什么生成的缩略图是黑白的？怎样生成彩色的?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; AddImage()&lt;br /&gt;&lt;img id="Codehighlighter_16_764_Open_Image" onclick="this.style.display='none'; Codehighlighter_16_764_Open_Text.style.display='none'; Codehighlighter_16_764_Closed_Image.style.display='inline'; Codehighlighter_16_764_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_16_764_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_16_764_Closed_Text.style.display='none'; Codehighlighter_16_764_Open_Image.style.display='inline'; Codehighlighter_16_764_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_16_764_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_16_764_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SHFILEINFO shFinfo;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; iIcon;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CString path &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;c:\\windows\\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SHGetFileInfo( path,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;shFinfo,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( shFinfo ),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SHGFI_ICON &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SHGFI_LARGEICON );&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;iIcon &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; shFinfo.iIcon;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HICON hicon &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; m_sysImgList.ExtractIcon(iIcon);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CFileStatus status;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CFile::GetStatus(strPath, status);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(status.m_attribute &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x10&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;))&lt;br /&gt;&lt;img id="Codehighlighter_328_762_Open_Image" onclick="this.style.display='none'; Codehighlighter_328_762_Open_Text.style.display='none'; Codehighlighter_328_762_Closed_Image.style.display='inline'; Codehighlighter_328_762_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_328_762_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_328_762_Closed_Text.style.display='none'; Codehighlighter_328_762_Open_Image.style.display='inline'; Codehighlighter_328_762_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_328_762_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_328_762_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CDC dc;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dc.CreateCompatibleDC(GetDC());&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CBitmap iconBitmap;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;iconBitmap.CreateCompatibleBitmap(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dc,ICON_WIDTH, ICON_HEIGHT);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CGdiObject &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oldObj &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; dc.SelectObject(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;iconBitmap);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;POINT pt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;pt.x &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (ICON_WIDTH &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;pt.y &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (ICON_HEIGHT &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CBrush whiteBrush(RGB(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;255&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dc.FillRect(CRect(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,ICON_WIDTH,ICON_HEIGHT),&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;whiteBrush);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dc.DrawIcon(pt,hicon);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dc.SelectObject(oldObj);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;m_imgList.Add(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;iconBitmap,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;iconBitmap);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Memory DC created with CreateCompatibleDC() is given a 1x1 monochrome bitmap as its default bitmap. You need to select a bitmap with color before drawing.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何使用VC多cell拷贝，如何修改单个cell中内容的字体，如何合并excel中的几个单元格(VC/MFC ATL/ActiveX/COM)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;我现在要对一个已有的excel文档进行编辑如下：&lt;br /&gt;1 添加title，这就需要把所有的数据向下移动一行，然后把第一行N个格合并。&lt;br /&gt;2 写入title并且修改title的字体&lt;br /&gt;&lt;br /&gt;我一开始用的是一个单元格一个单元格的移动，发现速度特别慢。&lt;br /&gt;&lt;br /&gt;所以我想知道：如何使用VC多cell拷贝&lt;br /&gt;如何修改单个cell中内容的字体&lt;br /&gt;如何合并excel中的几个单元格&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;自己录制宏，之后参考&lt;a href="http://support.microsoft.com/support/KB/Articles/Q194/9/06.asp"&gt;http://support.microsoft.com/support/KB/Articles/Q194/9/06.asp&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.blogjava.net/jinheking/archive/2005/07/19/5150.html"&gt;http://www.blogjava.net/jinheking/archive/2005/07/19/5150.html&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Office的VBA帮助里有例子.也可以在Office中录制宏&lt;br /&gt;参考&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;Excel::WorkbooksPtr oBooks;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oBooks&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oApp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetWorkbooks();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::_WorkbookPtr oBook;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oBook&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oBooks&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Add(vOpt);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::WorksheetsPtr oSheets;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oSheets&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oBook&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetWorksheets();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::_WorksheetPtr oSheet;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oSheet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oSheets&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetItem(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::RangePtr oRange;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;m_pCanvas&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SaveCurveData(oSheet,oRange); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::PicturesPtr pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oSheet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Pictures();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Insert((_bstr_t)strBmp); &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;strBmp 为图片存放的位置&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DeleteFile(strBmp);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PutTop(m_pCanvas&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;m_nPicturePos);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;COleVariant vstr=strFn;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;COleVariant vTrue((&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)TRUE),vFalse((&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)FALSE);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oBook&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SaveAs(COleVariant(strFn),&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;4143L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,COleVariant(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),COleVariant(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),vFalse,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;vFalse,Excel::XlSaveAsAccessMode(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;oBook&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PutSaved(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,VARIANT_BOOL(TRUE));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;Excel::PicturesPtr pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;oSheet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Pictures();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Insert((_bstr_t)strBmp); &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;strBmp 为图片存放的位置&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DeleteFile(strBmp);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;pts&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PutTop(m_pCanvas&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;m_nPicturePos);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;COleVariant vstr=strFn;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;关于单实例运行，应用程序转到后台时除了发送WM_ACTIVATEAPP还有什么消息(VC/MFC 界面)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;smartphone平台，希望应用程序第二个实例启动时激活第一个实例&lt;br /&gt;现在问题时第一个实例有多个窗口，我需要得到第一个实例转入后台时的最上层的窗口然后执行setforegroundwindow&lt;br /&gt;&lt;br /&gt;但现在发现smartphone不支持WM_ACTIVATEAPP消息，不支持函数GetLastActivePopup&lt;br /&gt;不知道通过系统函数或消息的方法还有什么办法解决&lt;br /&gt;&lt;br /&gt;不然我想只能使用WM_ACTIVATE来记录每次inactive时的窗口，最后一个就是最后显示的，每个窗口都要响应WM_ACTIVATE&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;你可以在每个顶层窗口都加上同一个注册消息的处理&amp;hellip;&amp;hellip;枚举的时候找到第一个就可以了&lt;a href="http://www.codeproject.com/shell/AutomateShellWindow.asp"&gt;http://www.codeproject.com/shell/AutomateShellWindow.asp&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;用wmformat sdk 能否实现 asf 文件放慢读取 (专题开发/技术/项目 多媒体/流媒体开发)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;HRESULT Start(&lt;br /&gt;QWORD cnsStart,&lt;br /&gt;QWORD cnsDuration,&lt;br /&gt;float fRate,&lt;br /&gt;void* pvContext&lt;br /&gt;);&lt;br /&gt;fRate&lt;br /&gt;[in] Playback speed. Normal speed is 1.0. Higher numbers cause faster playback, and numbers less than zero indicate reverse rate (rewinding). The valid ranges are 1.0 through 10.0, and -1.0 through -10.0. &lt;br /&gt;&lt;br /&gt;可以快速向前读取,后退. 但不能放慢读取&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;use IWMReaderAdvanced::SetUserProvidedClock to set a custom clock&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何切换到虚拟键盘(VC/MFC 基础类 )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;在使用智能输入法的时候，有一个智能输入法，我想通过程序打开他，并切换到PC键盘，&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;call ImmSetConversionStatus with IME_CMODE_SOFTKBD&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何用程序来设置IE的禁止脚本调试 (VB VBA )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;go to take a look at [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] &lt;br /&gt;Other debuggers such as Visual Studio Machine Debugger may still try to debug the error.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img id="Codehighlighter_8_357_Open_Image" onclick="this.style.display='none'; Codehighlighter_8_357_Open_Text.style.display='none'; Codehighlighter_8_357_Closed_Image.style.display='inline'; Codehighlighter_8_357_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_8_357_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_8_357_Closed_Text.style.display='none'; Codehighlighter_8_357_Open_Image.style.display='inline'; Codehighlighter_8_357_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_8_357_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"&gt;Sub Command1_Click()&lt;/span&gt;&lt;span id="Codehighlighter_8_357_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Command1_Click()&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;首先引用Registry Access Functions&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; mREG &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;New&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REGTool5.Registry&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ret &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Boolean&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ret &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; mREG.UpdateKey(HKEY_CURRENT_USER, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Software\Microsoft\Internet Explorer\Main&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Disable Script Debugger&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;yes&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ret &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; mREG.UpdateKey(HKEY_CURRENT_USER, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Software\Microsoft\Internet Explorer\Main&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DisableScriptDebuggerIE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;yes&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h1&gt;如何将剪贴板中的图象复制到WEB上的applet中 (Java Web 开发 )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;好象有权限问题&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=576069"&gt;http://forum.java.sun.com/thread.jspa?threadID=576069&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;编写能适应XP下快速用户切换特性的服务程序的问题(VC/MFC 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;Windows XP下写了一个服务程序，创建时指定了SERVICE_WIN32_OWN_PROCESS和SERVICE_INTERACTIVE_PROCESS标志，还指定了SERVICE_AUTO_START使服务自动启动。服务启动时创建一个线程，该线程只是简单的一个循环：每秒Beep一声。系统启动后，在欢迎界面时该服务就自动启动了，可以听见每秒一次的Beep声，然后点击一个用户登录后，Beep声也正常，然后点击&amp;ldquo;开始&amp;rdquo;-〉&amp;ldquo;注销&amp;rdquo;-〉&amp;ldquo;切换用户&amp;rdquo;回到用户选择界面时，Beep声仍然正常，但是选择另外一个用户登录后，Beep声消失，再切换回原来的用户，Beep声恢复，这是为什么？切换到新用户后Beep线程是否已经被自动挂起？如何才能使切换到新用户后仍然能使Beep正常继续？&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;切换到新用户后删除线程，然后重新生成与用户交互的线程（注用代码交互，不是设置SERVICE_INTERACTIVE_PROCESS标志）&lt;/p&gt;&lt;br /&gt;&lt;p&gt;在开始菜单-》启动里有个程序，负责启动服务程序。这样，服务程序就在用户登陆以后才能运行。服务程序在用户注销/切换的时候就自己结束。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All services run in Terminal Services session 0. Therefore, if an interactive service displays a user interface, it is only visible to the user who connected to session 0. Because there is no way to guarantee that the interactive user is connected to session 0, do not configure a service to run as an interactive service on Terminal Services or Windows XP (fast user switching is implemented using Terminal Services).&lt;br /&gt;&lt;br /&gt;If a service running on a multiuser system must interact with a user, the service should create a separate GUI application running within the context of the interactive user. The easiest way to run an application in each session is to add it to the following key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. This GUI application should be designed to communicate with the service through some method of IPC, for example, named pipes, as described in the previous section. By using named pipes, the server can distinguish between multiple user processes by giving each pipe a unique name based on the session ID.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;br /&gt;Interacting with Services&lt;br /&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2005/09/14/466175.aspx"&gt;http://blogs.msdn.com/larryosterman/archive/2005/09/14/466175.aspx&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Architecture of Fast User Switching&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/294737"&gt;http://support.microsoft.com/kb/294737&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;为什么javascript只能收到控件的事件，而普通的COM不行呢(VC/MFC ATL/ActiveX/COM )&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;test2是用ATL建立的一个full control,Apartment模型，dual接口，支持连接点.&lt;br /&gt;test是用ATL建立的一个simple object,Apartment模型，dual接口，支持连接点.&lt;br /&gt;这两个对象都增加了事件OnTest，并且都在test方法中调用了Fire_OnTest();&lt;br /&gt;但是网页运行的结果是只弹出对话框&amp;quot;test2&amp;quot;.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://groups.google.com/group/microsoft.public.vc.atl/browse_thread/thread/746df98b5c75f906/65cf79a77ad62795?lnk=st&amp;amp;q=&amp;quot;simple+object&amp;quot;+event+atl+internet+explorer&amp;amp;rnum=1&amp;amp;hl=en#65cf79a77ad62795"&gt;http://groups.google.com/group/microsoft.public.vc.atl/browse_thread/thread/746df98b5c75f906/65cf79a77ad62795?lnk=st&amp;amp;q=%22simple+object%22+event+atl+internet+explorer&amp;amp;rnum=1&amp;amp;hl=en#65cf79a77ad62795&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;When using theATL, the following 'lite control' ATL objects do not implement the IProvideClassInfo2 interface by default: &lt;br /&gt;&lt;br /&gt;You can easily add support for event handling by implementing the &lt;br /&gt;IProvideClassInfo interfaces. This is done by deriving your control from the &lt;br /&gt;default ATL implementation, IProvideClassInfo2Impl. &lt;br /&gt;1. Add the following line to your class derivation list: &lt;br /&gt;public IProvideClassInfo2Impl&amp;lt;&amp;amp;CLSID_&amp;lt;object_name&amp;gt;, NULL, &lt;br /&gt;&amp;amp;LIBID_&amp;lt;project_name&amp;gt;Lib&amp;gt; &lt;br /&gt;2. Add the following lines to your COM_MAP: &lt;br /&gt;COM_INTERFACE_ENTRY(IProvideClassInfo) &lt;br /&gt;COM_INTERFACE_ENTRY(IProvideClassInfo2) &lt;br /&gt;Hope that helps. For additional information you can take a look at KB Q200839 &lt;a href="http://support.microsoft.com/kb/200839"&gt;http://support.microsoft.com/kb/200839&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h1&gt;如何向richtextbox中插入flash影片(VB 基础类)&lt;/h1&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;注意:是真正的插入对象,不是setparent之类的实现,要求不用剪贴板,不重新封装播放flash的控件,能实现多个影片同时播放&lt;/p&gt;&lt;br /&gt;&lt;p&gt;其实我这个想法是看了的文章后产生的,你可以看一下:&lt;br /&gt;&lt;a href="http://blog.csdn.net/dtianx/archive/2004/11/17/184949.aspx"&gt;http://blog.csdn.net/dtianx/archive/2004/11/17/184949.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;//但多次粘贴时,只能有一个控件处于活动状态&lt;br /&gt;&lt;br /&gt;怀疑这是由于Flash控件的刷新机制与Rich Edit的OLE接口存在冲突&lt;br /&gt;所以很可能需要封装Flash控件，为Flash控件做好OLE接口&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我也这么想过,但这样一来,通用性就降低了,所以要求,不重新封装播放flash的控件,就是想看看有没有办法从其它方面进行突破&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Yes, Flash.ocx supports IOleObject. but it won't update its display like the QQ image lib ActiveX.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;: System::Void button1_Click(System::Object &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sender, System::EventArgs &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; e)&lt;br /&gt;&lt;img id="Codehighlighter_84_2234_Open_Image" onclick="this.style.display='none'; Codehighlighter_84_2234_Open_Text.style.display='none'; Codehighlighter_84_2234_Closed_Image.style.display='inline'; Codehighlighter_84_2234_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_84_2234_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_84_2234_Closed_Text.style.display='none'; Codehighlighter_84_2234_Open_Image.style.display='inline'; Codehighlighter_84_2234_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_84_2234_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_84_2234_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HWND h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(HWND)richTextBox1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Handle.ToInt32();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPRICHEDITOLElpRichEditOle&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPOLEOBJECTlpObject&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPSTORAGE lpStorage&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPOLECLIENTSITElpClientSite&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPLOCKBYTESlpLockBytes &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NULL;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;REOBJECT reobject;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ZeroMemory(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;reobject, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(REOBJECT));&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.cbStruct &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(REOBJECT);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;S_OK;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;CLSID clsid&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CLSID_NULL;&lt;br /&gt;&lt;img id="Codehighlighter_425_2055_Open_Image" onclick="this.style.display='none'; Codehighlighter_425_2055_Open_Text.style.display='none'; Codehighlighter_425_2055_Closed_Image.style.display='inline'; Codehighlighter_425_2055_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_425_2055_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_425_2055_Closed_Text.style.display='none'; Codehighlighter_425_2055_Open_Image.style.display='inline'; Codehighlighter_425_2055_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;do&lt;/span&gt;&lt;span id="Codehighlighter_425_2055_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_425_2055_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;::SendMessage(h, EM_GETOLEINTERFACE, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, (LPARAM)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpRichEditOle);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(lpRichEditOle&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL)&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ::CreateILockBytesOnHGlobal(NULL, TRUE, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpLockBytes);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpLockBytes&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL)&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ::StgCreateDocfileOnILockBytes(lpLockBytes,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;STGM_SHARE_EXCLUSIVE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;STGM_CREATE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;STGM_READWRITE, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpStorage);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpStorage&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL)&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpRichEditOle&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetClientSite(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpClientSite);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; S_OK&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpClientSite&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL)&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_866_1985_Open_Image" onclick="this.style.display='none'; Codehighlighter_866_1985_Open_Text.style.display='none'; Codehighlighter_866_1985_Closed_Image.style.display='inline'; Codehighlighter_866_1985_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_866_1985_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_866_1985_Closed_Text.style.display='none'; Codehighlighter_866_1985_Open_Image.style.display='inline'; Codehighlighter_866_1985_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_866_1985_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_866_1985_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;ShockwaveFlashObjects::IShockwaveFlashPtrpFlash;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFlash.CreateInstance(ShockwaveFlashObjects::CLSID_ShockwaveFlash);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( FAILED(hr) )_com_issue_error(hr);&lt;br /&gt;&lt;img id="Codehighlighter_1028_1082_Open_Image" onclick="this.style.display='none'; Codehighlighter_1028_1082_Open_Text.style.display='none'; Codehighlighter_1028_1082_Closed_Image.style.display='inline'; Codehighlighter_1028_1082_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_1028_1082_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_1028_1082_Closed_Text.style.display='none'; Codehighlighter_1028_1082_Open_Image.style.display='inline'; Codehighlighter_1028_1082_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_1028_1082_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"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter_1028_1082_Open_Text"&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;if(openFileDialog1-&amp;gt;ShowDialog()==DialogResult::OK)&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;span id="Codehighlighter_1083_1983_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_1083_1983_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;__wchar_t * str = (__wchar_t *)(void*)Marshal::StringToHGlobalUni(openFileDialog1-&amp;gt;FileName);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;_bstr_t bstrPath(str);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Marshal::FreeHGlobal(str);&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;_bstr_t szMovie &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;C:\\WINDOWS\\Help\\Tours\\mmTour\\intro.swf&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;pFlash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PutMovie(szMovie); &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( FAILED(hr) )_com_issue_error(hr);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pFlash.QueryInterface(IID_IOleObject, (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpObject);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( FAILED(hr)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpObject&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NULL)_com_issue_error(hr);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OleSetContainedObject(lpObject, TRUE);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( FAILED(hr) )_com_issue_error(hr);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpObject&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetUserClassID(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;clsid);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( FAILED(hr) )_com_issue_error(hr);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.clsid &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; clsid;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.cp &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REO_CP_SELECTION;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.dvaspect &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DVASPECT_CONTENT;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.dwFlags &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REO_BELOWBASELINE;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.dwUser &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.poleobj &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lpObject;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.polesite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lpClientSite;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.pstg &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lpStorage;&lt;br /&gt;&lt;img id="Codehighlighter_1893_1897_Open_Image" onclick="this.style.display='none'; Codehighlighter_1893_1897_Open_Text.style.display='none'; Codehighlighter_1893_1897_Closed_Image.style.display='inline'; Codehighlighter_1893_1897_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_1893_1897_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_1893_1897_Closed_Text.style.display='none'; Codehighlighter_1893_1897_Open_Image.style.display='inline'; Codehighlighter_1893_1897_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;SIZEL sizel&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span id="Codehighlighter_1893_1897_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_1893_1897_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reobject.sizel &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sizel;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;hr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;lpRichEditOle&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;InsertObject(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;reobject);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;pFlash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Play();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;( _com_error e )&lt;br /&gt;&lt;img id="Codehighlighter_2009_2052_Open_Image" onclick="this.style.display='none'; Codehighlighter_2009_2052_Open_Text.style.display='none'; Codehighlighter_2009_2052_Closed_Image.style.display='inline'; Codehighlighter_2009_2052_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_2009_2052_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_2009_2052_Closed_Text.style.display='none'; Codehighlighter_2009_2052_Open_Image.style.display='inline'; Codehighlighter_2009_2052_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_2009_2052_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_2009_2052_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;LPCTSTR lpszErrMessage&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;e.ErrorMessage();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(FALSE);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(lpLockBytes)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;lpObject&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Release();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(lpLockBytes)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;lpLockBytes&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Release();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(lpClientSite)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;lpClientSite&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Release();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(lpRichEditOle)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;lpRichEditOle&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Release();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;刷新的问题倒是不大，可以这样：&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; UpdateObjects()&lt;br /&gt;&lt;img id="Codehighlighter_28_436_Open_Image" onclick="this.style.display='none'; Codehighlighter_28_436_Open_Text.style.display='none'; Codehighlighter_28_436_Closed_Image.style.display='inline'; Codehighlighter_28_436_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_28_436_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_28_436_Closed_Text.style.display='none'; Codehighlighter_28_436_Open_Image.style.display='inline'; Codehighlighter_28_436_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_28_436_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_28_436_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; k &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.IRichEditOle.GetObjectCount();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; i &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; k; i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_103_434_Open_Image" onclick="this.style.display='none'; Codehighlighter_103_434_Open_Text.style.display='none'; Codehighlighter_103_434_Closed_Image.style.display='inline'; Codehighlighter_103_434_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_103_434_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_103_434_Closed_Text.style.display='none'; Codehighlighter_103_434_Open_Image.style.display='inline'; Codehighlighter_103_434_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_103_434_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_103_434_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;REOBJECT reoObject &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REOBJECT();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.IRichEditOle.GetObject(i, reoObject, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;GETOBJECTOPTIONS.REO_GETOBJ_ALL_INTERFACES);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (reoObject.dwUser &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_259_432_Open_Image" onclick="this.style.display='none'; Codehighlighter_259_432_Open_Text.style.display='none'; Codehighlighter_259_432_Closed_Image.style.display='inline'; Codehighlighter_259_432_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_259_432_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_259_432_Closed_Text.style.display='none'; Codehighlighter_259_432_Open_Image.style.display='inline'; Codehighlighter_259_432_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_259_432_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_259_432_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;Point pt &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;._richEdit.GetPositionFromCharIndex(reoObject.cp);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;Rectangle rect &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Rectangle(pt, reoObject.sizel);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;._richEdit.Invalidate(rect, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;); &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; repaint&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;然后加个timer调用UpdateObjects&lt;br /&gt;&lt;br /&gt;现在主要的问题是在vb中没法使用QueryInterface语句，直接用set赋值又提示类型不符&lt;br /&gt;找到一种richtextbox加入flash控件的方法。像这样：&lt;br /&gt;&lt;br /&gt;' 需要 Command1 和 RichTextBox1。还需要 IOleObject 的 tlb&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img id="Codehighlighter_8_246_Open_Image" onclick="this.style.display='none'; Codehighlighter_8_246_Open_Text.style.display='none'; Codehighlighter_8_246_Closed_Image.style.display='inline'; Codehighlighter_8_246_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_8_246_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_8_246_Closed_Text.style.display='none'; Codehighlighter_8_246_Open_Image.style.display='inline'; Codehighlighter_8_246_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_8_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"&gt;Sub Command1_Click()&lt;/span&gt;&lt;span id="Codehighlighter_8_246_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Command1_Click()&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objOle &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IOleObject, objFlash &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Object&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objOle &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RichTextBox1.OLEObjects.Add(, , , &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ShockwaveFlash.ShockwaveFlash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFlash &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objOle&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;objFlash.Movie &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;http://cardimg.163.com/mcards/1/big/3081.swf&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;不过大概因为用的是 OLE 静态嵌入，还是只能一次激活单个控件。用 spy++ 看的话只有激活的控件才有 MacromediaFlashPlayerActiveX 类的窗口。 ：（&lt;br /&gt;其实就我的提问的问题而言,问题已经基本解决了,不过费了很大的力气声明了对应IShockwaveFlash接口的结构体,总想把他用上,另外,对于这个结构体声明的是否正确,心里还不敢肯定,所以有上面的一问,我声明的结构体,哪位帮我看看,对还是不对:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Type IShockwaveFlashVB&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; IUnknown&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;mQueryInterface &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 0&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AddRef &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 4&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;mRelease &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 8&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;IDispatch&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetTypeInfoCount &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 12&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetTypeInfo &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 16&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetIDsOfNames &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 20&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Invoke &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 24&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;IShockwaveFlash&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetReadyState &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 28&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetTotalFrames &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 32&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetPlaying &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 36&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetPlaying &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 40&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetQuality &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 44&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetQuality &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 48&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetScaleMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 52&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetScaleMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 56&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetAlignMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 60&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetAlignMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 64&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetBackgroundColor &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 68&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetBackgroundColor &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 72&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetLoop &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 76&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetLoop &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 80&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetMovie &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 84&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetMovie &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 88&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetFrameNum &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 92&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetFrameNum &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 96&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetZoomRect &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 100&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Zoom &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 104&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Pan &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 108&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Play &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 112&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Stop&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 116&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Back &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 120&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Forward &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 124&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Rewind &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 128&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;StopPlay &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 132&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GotoFrame &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 136&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CurrentFrame &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 140&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;IsPlaying &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 144&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PercentLoaded &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 148&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;FrameLoaded &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 152&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;FlashVersion &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 156&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetWMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 160&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetWMode &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 164&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetSAlign &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 168&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetSAlign &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 172&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetMenu &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 176&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetMenu &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 180&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetBase &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 184&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetBase &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 188&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetScale &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 192&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetScale &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 196&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetDeviceFont &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 200&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetDeviceFont &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 204&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetEmbedMovie &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 208&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetEmbedMovie &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 212&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetBGColor &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 216&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetBGColor &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 220&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetQuality2 &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 224&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetQuality2 &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 228&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LoadMovie &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 232&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TGotoFrame &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 236&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TGotoLabel &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 240&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TCurrentFrame &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 244&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TCurrentLabel &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 248&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TPlay &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 252&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TStopPlay &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 256&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetVariable &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 260&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetVariable &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 264&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TSetProperty &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 268&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TGetProperty &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 272&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TCallFrame &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 276&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TCallLabel &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 280&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TSetPropertyNum &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 284&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TGetPropertyNum &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 288&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TGetPropertyAsNumber &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Function,offset 292&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetSWRemote &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 296&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetSWRemote &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 300&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetFlashVars &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 304&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetFlashVars &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 308&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetAllowScriptAccess &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 312&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetAllowScriptAccess &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 316&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetMovieData &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 320&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetMovieData &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 324&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetInlineData &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 328&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetInlineData &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 332&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetSeamlessTabbing &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property get,offset 332&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetSeamlessTabbing &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;property let,offset 332&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Type&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;昏&lt;br /&gt;存在版本问题&lt;br /&gt;Flash没有遵守COM接口规则&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;D:\WINDOWS\system32\Macromed\Flash\flash.ocx&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;[&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;uuid(D27CDB6B&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AE6D&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;11CF&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;96B8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;444553540000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;version(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shockwave Flash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;library ShockwaveFlashObjects&lt;br /&gt;&lt;img id="Codehighlighter_122_1326_Open_Image" onclick="this.style.display='none'; Codehighlighter_122_1326_Open_Text.style.display='none'; Codehighlighter_122_1326_Closed_Image.style.display='inline'; Codehighlighter_122_1326_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_122_1326_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_122_1326_Closed_Text.style.display='none'; Codehighlighter_122_1326_Open_Image.style.display='inline'; Codehighlighter_122_1326_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_122_1326_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_122_1326_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;odl,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;uuid(D27CDB6C&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AE6D&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;11CF&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;96B8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;444553540000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shockwave Flash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dual,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;oleautomation&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;]&lt;br /&gt;&lt;img id="Codehighlighter_266_1323_Open_Image" onclick="this.style.display='none'; Codehighlighter_266_1323_Open_Text.style.display='none'; Codehighlighter_266_1323_Closed_Image.style.display='inline'; Codehighlighter_266_1323_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_266_1323_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_266_1323_Closed_Text.style.display='none'; Codehighlighter_266_1323_Open_Image.style.display='inline'; Codehighlighter_266_1323_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IShockwaveFlash : IDispatch &lt;/span&gt;&lt;span id="Codehighlighter_266_1323_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_266_1323_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0xfffffdf3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ReadyState&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ReadyState([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007c&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property TotalFrames&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT TotalFrames([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Playing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Playing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Playing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Playing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&amp;hellip;&amp;hellip;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000009f&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SWRemote&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SWRemote([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000009f&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SWRemote&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SWRemote([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000aa&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property FlashVars&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT FlashVars([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000aa&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property FlashVars&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT FlashVars([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000ab&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property AllowScriptAccess&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT AllowScriptAccess([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000ab&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property AllowScriptAccess&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT AllowScriptAccess([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;/span&gt;D:\WINDOWS\system32\Macromed\Flash\Flash8.ocx&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;[&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;uuid(D27CDB6B&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AE6D&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;11CF&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;96B8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;444553540000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;version(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shockwave Flash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;library ShockwaveFlashObjects&lt;br /&gt;&lt;img id="Codehighlighter_122_3363_Open_Image" onclick="this.style.display='none'; Codehighlighter_122_3363_Open_Text.style.display='none'; Codehighlighter_122_3363_Closed_Image.style.display='inline'; Codehighlighter_122_3363_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_122_3363_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_122_3363_Closed_Text.style.display='none'; Codehighlighter_122_3363_Open_Image.style.display='inline'; Codehighlighter_122_3363_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_122_3363_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_122_3363_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; TLib : &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;importlib(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;STDOLE2.TLB&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; Forward declare all types defined in this typelib&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IShockwaveFlash;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dispinterface _IShockwaveFlashEvents;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IFlashFactory;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IFlashObjectInterface;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IDispatchEx;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IServiceProvider;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;odl,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;uuid(D27CDB6C&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AE6D&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;11CF&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;96B8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;444553540000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shockwave Flash&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;dual,&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;oleautomation&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;]&lt;br /&gt;&lt;img id="Codehighlighter_597_3360_Open_Image" onclick="this.style.display='none'; Codehighlighter_597_3360_Open_Text.style.display='none'; Codehighlighter_597_3360_Closed_Image.style.display='inline'; Codehighlighter_597_3360_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_597_3360_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_597_3360_Closed_Text.style.display='none'; Codehighlighter_597_3360_Open_Image.style.display='inline'; Codehighlighter_597_3360_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IShockwaveFlash : IDispatch &lt;/span&gt;&lt;span id="Codehighlighter_597_3360_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_597_3360_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0xfffffdf3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ReadyState&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ReadyState([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007c&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property TotalFrames&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT TotalFrames([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Playing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Playing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000007d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Playing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Playing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&amp;hellip;&amp;hellip;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000009f&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SWRemote&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SWRemote([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0000009f&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SWRemote&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SWRemote([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000aa&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property FlashVars&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT FlashVars([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000aa&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property FlashVars&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT FlashVars([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000ab&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property AllowScriptAccess&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT AllowScriptAccess([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000ab&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property AllowScriptAccess&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT AllowScriptAccess([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000be&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property MovieData&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT MovieData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000be&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property MovieData&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT MovieData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000bf&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property inline-data&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT InlineData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] IUnknown&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ppIUnknown);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000bf&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property inline-data&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT InlineData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] IUnknown&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ppIUnknown);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SeamlessTabbing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SeamlessTabbing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SeamlessTabbing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SeamlessTabbing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method EnforceLocalSecurity&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT EnforceLocalSecurity();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Profile&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Profile([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Profile&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT Profile([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfileAddress&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ProfileAddress([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfileAddress&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ProfileAddress([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfilePort&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ProfilePort([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfilePort&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT ProfilePort([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method Call&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT CallFunction(&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR request, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; response);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c7&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method SetReturnValue&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT SetReturnValue([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR returnValue);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method DisableLocalSecurity&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;HRESULT DisableLocalSecurity();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;/span&gt;也就是说存在三个版本：&lt;br /&gt;1)我机子上的flash.ocx&lt;br /&gt;2)你机子上的flash.ocx&lt;br /&gt;3)我机子上的Flash8.ocx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2)比1)多出来了：&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000be&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property MovieData&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT MovieData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000be&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property MovieData&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT MovieData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000bf&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property inline-data&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT InlineData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] IUnknown&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ppIUnknown);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000bf&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property inline-data&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT InlineData([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] IUnknown&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ppIUnknown);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SeamlessTabbing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT SeamlessTabbing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property SeamlessTabbing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT SeamlessTabbing([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;3)比2)多出来了：&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #000000"&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method EnforceLocalSecurity&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT EnforceLocalSecurity();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Profile&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT Profile([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] VARIANT_BOOL&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property Profile&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT Profile([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] VARIANT_BOOL pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfileAddress&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT ProfileAddress([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfileAddress&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT ProfileAddress([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propget, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfilePort&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT ProfilePort([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), propput, helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;property ProfilePort&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT ProfilePort([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; pVal);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method Call&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT CallFunction(&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR request, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, retval] BSTR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; response);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c7&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method SetReturnValue&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT SetReturnValue([&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;] BSTR returnValue);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;[id(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x000000c8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;), helpstring(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;method DisableLocalSecurity&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;HRESULT DisableLocalSecurity();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;既然micromedia不遵守游戏规则,就不玩vtable了,不过根据种种迹象看来,micromedia公司对这种结果好象是有意为之.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Option&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Explicit&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_32_1786_Open_Image" onclick="this.style.display='none'; Codehighlighter_32_1786_Open_Text.style.display='none'; Codehighlighter_32_1786_Closed_Image.style.display='inline'; Codehighlighter_32_1786_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_32_1786_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_32_1786_Closed_Text.style.display='none'; Codehighlighter_32_1786_Open_Image.style.display='inline'; Codehighlighter_32_1786_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Declare&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_32_1786_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"&gt;Function SendMessage()&lt;/span&gt;&lt;span id="Codehighlighter_32_1786_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; SendMessage &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;user32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Alias&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SendMessageA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hWnd &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; wMsg &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; wParam &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, lParam &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Any) &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; WM_USER &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H400&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; EM_GETOLEINTERFACE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (WM_USER &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;60&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter_261_300_Open_Image" onclick="this.style.display='none'; Codehighlighter_261_300_Open_Text.style.display='none'; Codehighlighter_261_300_Closed_Image.style.display='inline'; Codehighlighter_261_300_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_261_300_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_261_300_Closed_Text.style.display='none'; Codehighlighter_261_300_Open_Image.style.display='inline'; Codehighlighter_261_300_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_261_300_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"&gt;Enum reCharPos&lt;/span&gt;&lt;span id="Codehighlighter_261_300_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Enum&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reCharPos&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reSelection &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Enum&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_309_412_Open_Image" onclick="this.style.display='none'; Codehighlighter_309_412_Open_Text.style.display='none'; Codehighlighter_309_412_Closed_Image.style.display='inline'; Codehighlighter_309_412_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_309_412_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_309_412_Closed_Text.style.display='none'; Codehighlighter_309_412_Open_Image.style.display='inline'; Codehighlighter_309_412_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_309_412_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"&gt;Enum reObjectAspect&lt;/span&gt;&lt;span id="Codehighlighter_309_412_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Enum&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reObjectAspect&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reObjectAspectContent &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DVASPECT_CONTENT&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;reObjectAspectIcon &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DVASPECT_ICON&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Enum&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter_422_1785_Open_Image" onclick="this.style.display='none'; Codehighlighter_422_1785_Open_Text.style.display='none'; Codehighlighter_422_1785_Closed_Image.style.display='inline'; Codehighlighter_422_1785_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_422_1785_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_422_1785_Closed_Text.style.display='none'; Codehighlighter_422_1785_Open_Image.style.display='inline'; Codehighlighter_422_1785_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_422_1785_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"&gt;Function AddClass()&lt;/span&gt;&lt;span id="Codehighlighter_422_1785_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; AddClass(hWnd &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, ObjIUnknown &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; stdole.IUnknown, _&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Optional&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CharPos &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reSelection, _&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Optional&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; InitialAspect &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reObjectAspect &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reObjectAspectContent) &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OleObject&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OleObject &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.IOleObject&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Storage &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.IStorage&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClientSite &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.IOleClientSite&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; VMSG &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.MSG&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; tRECT &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.RECT&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; tOUIIO &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.OLEUIINSERTOBJECT&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REOBJ &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.REOBJECT&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CLSID &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; olelib.UUID&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hMFPict &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RichEditOle &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IRichEditOle&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SendMessage hWnd, EM_GETOLEINTERFACE, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, RichEditOle&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClientSite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RichEditOle.GetClientSite&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Storage &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; StgCreateDocfile(vbNullString, STGM_CREATE &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Or&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; STGM_READWRITE &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Or&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; STGM_DELETEONRELEASE &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Or&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; STGM_SHARE_EXCLUSIVE)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OleObject &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ObjIUnknown&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;OleObject.GetUserClassID CLSID&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;On&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Error&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Resume&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Next&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hMFPict &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hMFPict &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OleGetIconOfClass(CLSID, vbNullString, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Err.Number &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; InitialAspect &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; reObjectAspectContent&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;On&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Error&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;GoTo&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;OleSetContainedObject ObjIUnknown, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;With&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REOBJ&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;.cbStruct &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Len&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(REOBJ)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;LSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; .CLSID &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CLSID&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;.DVASPECT &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; InitialAspect&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;.cp &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CharPos&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;.dwFlags &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REO_DYNAMICSIZE &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Or&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REO_RESIZABLE&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; .pStg &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Storage&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; .polesite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClientSite&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; .poleobj &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ObjIUnknown&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;With&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;RichEditOle.InsertObject REOBJ&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; OleObject &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClientSite &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Storage &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;SendMessage hWnd, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;HF, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;可以实现我上面说的功能，但是好像刷新有问题。&lt;br /&gt;SendMessage hWnd, &amp;amp;HF, 0, 0 仅对动态GIF起作用，对wmp和flash无效。&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;刷新的问题可以这样:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; UpdateObjects()&lt;br /&gt;&lt;img id="Codehighlighter_28_436_Open_Image" onclick="this.style.display='none'; Codehighlighter_28_436_Open_Text.style.display='none'; Codehighlighter_28_436_Closed_Image.style.display='inline'; Codehighlighter_28_436_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_28_436_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_28_436_Closed_Text.style.display='none'; Codehighlighter_28_436_Open_Image.style.display='inline'; Codehighlighter_28_436_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_28_436_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_28_436_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; k &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.IRichEditOle.GetObjectCount();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; i &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;; i &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; k; i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_103_434_Open_Image" onclick="this.style.display='none'; Codehighlighter_103_434_Open_Text.style.display='none'; Codehighlighter_103_434_Closed_Image.style.display='inline'; Codehighlighter_103_434_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_103_434_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_103_434_Closed_Text.style.display='none'; Codehighlighter_103_434_Open_Image.style.display='inline'; Codehighlighter_103_434_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_103_434_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_103_434_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;REOBJECT reoObject &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; REOBJECT();&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.IRichEditOle.GetObject(i, reoObject, &lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;GETOBJECTOPTIONS.REO_GETOBJ_ALL_INTERFACES);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (reoObject.dwUser &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_259_432_Open_Image" onclick="this.style.display='none'; Codehighlighter_259_432_Open_Text.style.display='none'; Codehighlighter_259_432_Closed_Image.style.display='inline'; Codehighlighter_259_432_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_259_432_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_259_432_Closed_Text.style.display='none'; Codehighlighter_259_432_Open_Image.style.display='inline'; Codehighlighter_259_432_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter_259_432_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"&gt;...&lt;/span&gt;&lt;span id="Codehighlighter_259_432_Open_Text"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;Point pt &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;._richEdit.GetPositionFromCharIndex(reoObject.cp);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;Rectangle rect &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Rectangle(pt, reoObject.sizel);&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;._richEdit.Invalidate(rect, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;); &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt; repaint&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;者QueryInterface flash控件的IViewObjectEx接口,然后调用IViewObjectEx接口的draw方法实现自绘&lt;br /&gt;dim mIViewObject as IViewObject&lt;br /&gt;set mIViewObject=ObjIUnknown&lt;br /&gt;&lt;br /&gt;如果不报错的话，说明QI成功，然后就可以调用draw方法&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我明白为什么&amp;ldquo;只有一个Flash控件在刷新&amp;rdquo;了&lt;br /&gt;&lt;br /&gt;这与OLE的设计有关&lt;br /&gt;&lt;br /&gt;在位激活（inplace activate）是指：&lt;br /&gt;当点击嵌入的对象时，宿主程序将控制权交给嵌入对象，激活嵌入对象&lt;br /&gt;而嵌入对象没有激活时，宿主程序只维持该嵌入对象的静态图像&lt;br /&gt;&lt;br /&gt;解决方法：按楼上的方法手动刷新RichEdit中的所有OLE对象&lt;/p&gt;&lt;br /&gt;&lt;p&gt;首先在窗体上画一个richtextbox控件，一个flash控件（这个flash控件没有用上，它是为程序中动态添加flash控件做准备的，事实上这是一种无奈的做法，原因是Licenses.Add方法对flash的progid不感兴趣，当然,你也可以通过其它途径解决这个问题），一个timer控件，一个按钮：&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;span style="COLOR: #0000ff"&gt;Option&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Explicit&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_ERASE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H4&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_FRAME &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H400&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_INTERNALPAINT &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H2&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_INVALIDATE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H1&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_ERASENOW &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H200&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RDW_ALLCHILDREN &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H80&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; WM_USER &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H400&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; EM_GETOLEINTERFACE &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; WM_USER &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;60&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; EM_POSFROMCHAR &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (WM_USER &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;38&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/None.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; WM_LBUTTONDBLCLK &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;H203&lt;br /&gt;&lt;img id="Codehighlighter_402_4822_Open_Image" onclick="this.style.display='none'; Codehighlighter_402_4822_Open_Text.style.display='none'; Codehighlighter_402_4822_Closed_Image.style.display='inline'; Codehighlighter_402_4822_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" /&gt;&lt;img id="Codehighlighter_402_4822_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_402_4822_Closed_Text.style.display='none'; Codehighlighter_402_4822_Open_Image.style.display='inline'; Codehighlighter_402_4822_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Declare&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_402_4822_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"&gt;Function InvalidateRect()&lt;/span&gt;&lt;span id="Codehighlighter_402_4822_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; InvalidateRect &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;user32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hwnd &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, lpRect &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RECT, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; bErase &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter_522_4822_Open_Image" onclick="this.style.display='none'; Codehighlighter_522_4822_Open_Text.style.display='none'; Codehighlighter_522_4822_Closed_Image.style.display='inline'; Codehighlighter_522_4822_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_522_4822_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_522_4822_Closed_Text.style.display='none'; Codehighlighter_522_4822_Open_Image.style.display='inline'; Codehighlighter_522_4822_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Declare&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_522_4822_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"&gt;Function SendMessage()&lt;/span&gt;&lt;span id="Codehighlighter_522_4822_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; SendMessage &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;user32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Alias&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SendMessageA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; hwnd &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; wMsg &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; wParam &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, lParam &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Any) &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;img alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter_680_4822_Open_Image" onclick="this.style.display='none'; Codehighlighter_680_4822_Open_Text.style.display='none'; Codehighlighter_680_4822_Closed_Image.style.display='inline'; Codehighlighter_680_4822_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_680_4822_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_680_4822_Closed_Text.style.display='none'; Codehighlighter_680_4822_Open_Image.style.display='inline'; Codehighlighter_680_4822_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Declare&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_680_4822_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"&gt;Sub ZeroMemory()&lt;/span&gt;&lt;span id="Codehighlighter_680_4822_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ZeroMemory &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;KERNEL32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Alias&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;RtlZeroMemory&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (dest &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Any, &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; numBytes &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter_786_4822_Open_Image" onclick="this.style.display='none'; Codehighlighter_786_4822_Open_Text.style.display='none'; Codehighlighter_786_4822_Closed_Image.style.display='inline'; Codehighlighter_786_4822_Closed_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /&gt;&lt;img id="Codehighlighter_786_4822_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_786_4822_Closed_Text.style.display='none'; Codehighlighter_786_4822_Open_Image.style.display='inline'; Codehighlighter_786_4822_Open_Text.style.display='inline';" alt="" align="top" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Private&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Declare&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span id="Codehighlighter_786_4822_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"&gt;Function RedrawWindow()&lt;/span&gt;&lt;span id="Codehighlighter_786_4822_Open_Text"&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; RedrawWindow &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;user32&lt;/span&gt;&lt;span style="COLOR: #0000
