<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_是金子就会灿烂</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/53417/rss</id><updated>2012-02-21T10:03:06Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/53417/rss"/><entry><id>http://www.cnblogs.com/clever101/archive/2011/11/12/2246434.html</id><title type="text">“三国演义”何处去</title><summary type="text">微软资深副总裁张亚勤在2011移动开发者大会的演讲《移动互联的新趋势》这样描述当前的移动操作系统的分布趋势：随着Windows Phone的推出，移动平台市场渐成三国演义之势（并非原话，大致意思是这样）。那么就让我们分析一下这“三国”在未来力量会发生怎样的此消彼长。</summary><published>2011-11-12T07:10:00Z</published><updated>2011-11-12T07:10:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/11/12/2246434.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/11/12/2246434.html"/><content type="html">&lt;div&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;微软资深副总裁张亚勤在&lt;/span&gt;2011&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;移动开发者大会的演讲《移动互联的新趋势》这样描述当前的移动操作系统的分布趋势：随着&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的推出，移动平台市场渐成三国演义之势（并非原话，大致意思是这样）。那么就让我们分析一下这&amp;#8220;三国&amp;#8221;在未来力量会发生怎样的此消彼长。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;首先让我们分析一下在这个移动产业链中有哪几类人，他们的目标又是什么。据我分析，大致如下：&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/mobilemarket.JPG" height="245" width="472" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;（上表是按其公司的主营业务划分的，如苹果，在我看来，它既是移动操作系统开发商&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，同时也是手机硬件设计和制造商，而三星，虽然也有自己的手机操作系统，但其主营业务是整机的设计和制造）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;接着我们分析一下消费者购买一部手机的心理。我想不外乎是两个方面：硬件和软件，如硬件方面：硬件性能强大、外表美观等等，软件方面：手机操作系统的设计得很人性化，上面有很多好玩的游戏和软件。从中看出我们看出上表中列出三类人是相互依存的：移动操作系统开发商要让自己开发的手机操作系统运行在更多的手机上，就要依赖于手机硬件设计和制造商卖出更多的手机；手机硬件设计和制造商要卖出更多的手机，就需要靠手机操作系统和第三方的手机开发商开发的软件和游戏来吸引消费者；独立的第三方手机软件开发商要开发的软件，需要手机操作系统提供商提供便捷的开发工具和&lt;/span&gt;SDK&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;。也就是说，这里面其实是有一个链条在里面的。如果按照这一思路分析，我们就会得出一些有趣的结论。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&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;&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;&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;&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;/span&gt;&lt;strong&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;苹果的致命缺陷&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;说苹果有什么致命缺陷的话，可能对当前如日中天的苹果多少不敬。当我第一次看到可以在&lt;/span&gt;Mac&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;机硬件上安装&lt;/span&gt;Windows&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;系统的&lt;/span&gt;Boot Camp&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;工具时，不得不感慨市场力量之大：原来固执如苹果者，也是可以改变的，你可以主动向市场开放，市场也可以以它的力量叫你开放。如果说苹果有什么缺陷的话，那就是封闭，一如它的产品线，从软件到硬件自家全包了。如果按照上面提到产业链条分析，我们可以看到在苹果的链条是这样的：苹果生产移动操作系统开发商和手机硬件，独立的第三方手机软件开发商在&lt;/span&gt;ios&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;平台上开发软件。在这一链条中苹果公司是居于主导地位的。也就是说如果苹果一直保持现有的创新的设计能力等等优点，它或许能保持现有的市场地位；但是如果它不能保持，那么它的衰落就不可避免。纵观整个&lt;/span&gt;it&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;发展史，基本上没有一个公司能长时间保持做一种持续市场领跑者的角色。特别是苹果的精神导师乔布斯去世后，苹果产品还能否保持他倡导的风格，一切尚存有疑问。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; Windows Phone&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的策略&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;纵观微软的发家史，我们得出一个结论：微软很少是一个市场先锋者，但却经常是一个出色的超越者，例子有很多，例如所见即所得的图形界面不是微软创造的&lt;/span&gt;(&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;那是施乐搞出来的&lt;/span&gt;)&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，但是微软却把它发扬光大；第一个网络浏览器是网景搞的，但微软的&lt;/span&gt;IE&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;却能击败网景。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;微软竞争制胜的法宝是什么？微软主要靠的是围绕&lt;/span&gt;windows&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;平台而产生的产业链。人们使用&lt;/span&gt;windows&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的一个简单而重要的理由是：上面有我们工作和生活所需要的软件和文件。微软和众多的硬件生产商、应用软件生产商结成了一个关系十分牢靠的联盟，可以说是一荣俱荣，一损俱损。前一段时间说微软的&lt;/span&gt;win8&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;平台会为了推广&lt;/span&gt;html5&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，会抛弃原有的开发的语言，如&lt;/span&gt;C++&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;、&lt;/span&gt;.Net&lt;span style="font-family: 宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;等。我说微软不会干那些破坏自己产业链的事，除非它自己不想干了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;回到移动平台的话题上。微软正在复制自己的&lt;/span&gt;PC&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;市场上的成功经验。微软之所以选择和诺基亚合作，想依靠后者强大的手机生产和设计能力来推广其&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;平台。但是我们也可以想象得到，&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的用户并不限于诺基亚。微软的意图在于将&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;打造另一个&lt;/span&gt;PC&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;上的&lt;/span&gt;windows&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，和众多的手机硬件生产商、手机软件生产商结成一个可靠联盟。这也是微软的厉害之处，它从来不是以自己一家的力量来取得胜利，而是围绕一个平台形成的产业链去围剿对手。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;商业市场的链条和生物圈的原理非常类似。上过生物课的朋友都知道这样一个道理，对整个生物圈来讲物种越丰富，系统就越稳定。我们设想这样情景：如果苹果垮掉了，哪些企业会受损，我想应该是为苹果代工那些硬件制造商如富士康以及&lt;/span&gt;ios&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;平台上的软件开发商；如果微软垮掉了，所有的使用&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的手机硬件制造商和软件开发商都会受到很大影响。哪个链条上的物种多，这个你可以想得到。微软比苹果还有一些优势：一是它只须专注做好手机操作系统，而不用考虑硬件；二是它可以通过自己的努力尽量将人数众多的&lt;/span&gt;windows&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;软件开发者吸引到移动平台上。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;当然我不是说&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的前途就一片光明。微软面临的问题也是很多：比如作为一个市场的后发者，如何在创新和设计上赶上市场先发者；如何推广&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;；如何吸引开发者等等。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&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;&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;&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;&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;/span&gt;&lt;strong&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;安卓的隐忧&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;应该是&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;对微软的研究得很深，它深知微软的成功模式很难被其它厂商所复制。它采取的竞争模式我称之为&amp;#8220;带开源色彩的商业模式&amp;#8221;。&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;开发的安卓系统给手机硬件生产商带来的好处也是显而易见的：首先它是免费的，不需要交类似微软的操作系统使用授权费，其次它是开源的，开源的好处是它是可以任意定制的，它是能吸引大量开发者的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;看起来安卓比起&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;是有优势的。但它是存在隐忧的。首先是因为&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;收购摩托罗拉公司引起的。&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;收购摩托罗拉公司一方面避免使其避免大量的专利侵权官司，但另一方面却让人对其产业定位产生了怀疑。手机硬件生产商的一个担忧是安卓系统会不会从一个公开的操作系统变为&lt;/span&gt;google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;自家的操作系统。虽然&lt;/span&gt;google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;就此事做过声明，但我想还是需要采取实际行动取信于手机硬件生产商。三星就出于这方面的忧虑，开始放弃安卓大力发展自家的手机操作系统&lt;/span&gt;bada&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;。其次是开源固然有其好处，但其缺陷也不可小视。你可以想想众多的难以兼容的&lt;/span&gt;Linux&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;发行版本。而不同于&lt;/span&gt;PC&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;软件开发，独立的第三方手机软件开发商对于跨平台的需求更为强烈。如何保证各个定制的安卓版本的应用程序兼容性，这也是&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;需要解决的一个问题。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&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;&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;&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;&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;/span&gt;&lt;strong&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;综述&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;综上所述，我对&lt;/span&gt;Windows Phone&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;表示谨慎的乐观，如果&lt;/span&gt;Google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;能解决我上文提到的问题，也能在竞争中占有一席之地。苹果如不改变其封闭策略，其衰落很难避免。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2246434.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/11/12/2246434.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/10/14/2212549.html</id><title type="text">悼念丹尼斯•里奇</title><summary type="text">悼念丹尼斯•里奇。</summary><published>2011-10-14T12:19:00Z</published><updated>2011-10-14T12:19:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/10/14/2212549.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/10/14/2212549.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;前天我从一位好友的&lt;/span&gt;qq&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;签名看到：又一位大师&lt;/span&gt;dmr&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;走了！我不禁好奇，上百度搜索（&lt;/span&gt;google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;被封）&lt;/span&gt;dmr&lt;span style="font-family: 宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，结果是没有搜到一个满意的结果。今天在&lt;/span&gt;csdn&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;论坛得知：&lt;/span&gt;C&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;语言之父丹尼斯&lt;/span&gt;-&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;里奇&lt;/span&gt;2011&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;年&lt;/span&gt;10&lt;span style="font-family:  宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;月&lt;/span&gt;9&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;日&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;辞世，突然联系起好友的&lt;/span&gt;qq&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;签名，心想大概就是他了，上网搜索后确认是他。作为一个以&lt;/span&gt;C&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;语言为入门语言的计算机从业者，得益于丹尼斯&amp;#183;里奇的开创性的贡献，心中对他自有一番感激之情。可能你奇怪丹尼斯&amp;#183;里奇的英文名为&lt;/span&gt;Dennis Ritchie&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，为何叫他&lt;/span&gt;dmr&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;呢？原来是：&lt;/span&gt;&lt;span&gt;Dennis Ritchie is often referred to as "dmr" (his Bell Labs email address) in technical discussion groups&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2212549.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/10/14/2212549.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/29/2196008.html</id><title type="text">将MFC Grid control封装为DLL的做法及其在DLL中的使用方法</title><summary type="text">MFC Grid control是一款非常优秀的网格控件，支持非常丰富的界面元素，MFC Grid control的作者并没有将其封装为DLL，因为在程序的多个模块复用这个控件比较麻烦（需要在多个工程中加入其源码），因此最好将其封装为一个DLL。今天有同事反映在DLL的对话框中无法使用封装好的MFC Grid control，于是上网查了下资料，晚上摸索了一下，解决了这个问题。</summary><published>2011-09-29T15:08:00Z</published><updated>2011-09-29T15:08:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/29/2196008.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/29/2196008.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MFC Grid control&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;是一款非常优秀的网格控件，支持非常丰富的界面元素，如下图：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/GridCtrl.JPG" height="431" width="607" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;因而在数据库程序及报表程序应用较为广泛，其源码可以在下面下载到：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;a href="http://www.codeproject.com/KB/miscctrl/gridctrl.aspx"&gt;MFC Grid control 2.27&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;源码下载&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;MFC Grid control&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的作者并没有将其封装为&lt;/span&gt;DLL&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，因为在程序的多个模块复用这个控件比较麻烦（需要在多个工程中加入其源码），因此最好将其封装为一个&lt;/span&gt;DLL&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;。今天有同事反映在&lt;/span&gt;DLL&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的对话框中无法使用封装好的&lt;/span&gt;MFC Grid control&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，于是上网查了下资料，晚上摸索了一下，解决了这个问题。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;MFC Grid control&lt;/span&gt;&lt;span style="font-family:宋体"&gt;的作者在设计该控件并没考虑到在DLL中使用该控件，因此在其控件类&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;CGridCtrl&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;类的构造函数注册窗口类时指定&lt;/span&gt;&lt;span style="font-family:宋体"&gt;该窗口类的窗口过程所属的应用实例句柄皆为主程序的程序句柄（一般为exe程序），因此在DLL中无法显示。因此要解决该问题，就必须将&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;注册窗口类函数改写，将&lt;/span&gt;&lt;span style="font-family:宋体"&gt;应用实例句柄传给控件类。具体注册函数为：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;BOOL&amp;nbsp;CGridCtrl::RegisterWindowClass(HINSTANCE&amp;nbsp;hInstance)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WNDCLASS&amp;nbsp;wndcls;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HINSTANCE&amp;nbsp;hInst&amp;nbsp;=&amp;nbsp;hInstance&amp;nbsp;?&amp;nbsp;hInstance&amp;nbsp;:&amp;nbsp;AfxGetInstanceHandle();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;HINSTANCE&amp;nbsp;hInst&amp;nbsp;=&amp;nbsp;AfxGetResourceHandle();&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(!(::GetClassInfo(hInst,&amp;nbsp;GRIDCTRL_CLASSNAME,&amp;nbsp;&amp;amp;wndcls)))&lt;br /&gt;&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;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;otherwise&amp;nbsp;we&amp;nbsp;need&amp;nbsp;to&amp;nbsp;register&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.style&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;CS_DBLCLKS&amp;nbsp;|&amp;nbsp;CS_HREDRAW&amp;nbsp;|&amp;nbsp;CS_VREDRAW;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.lpfnWndProc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;::DefWindowProc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.cbClsExtra&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;wndcls.cbWndExtra&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.hInstance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;hInst;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.hIcon&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;NULL;&lt;br /&gt;#ifndef&amp;nbsp;_WIN32_WCE_NO_CURSOR&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.hCursor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;AfxGetApp()-&amp;gt;LoadStandardCursor(IDC_ARROW);&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;#else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.hCursor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;#endif&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.hbrBackground&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(HBRUSH)&amp;nbsp;(COLOR_3DFACE&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.lpszMenuName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wndcls.lpszClassName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;GRIDCTRL_CLASSNAME;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(!AfxRegisterClass(&amp;amp;wndcls))&lt;br /&gt;&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;AfxThrowResourceException();&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;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;FALSE;&lt;br /&gt;&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;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;TRUE;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;下面介绍如何在DLL工程中使用&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;CGridCtrl&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;类。新建一个MFC 常规DLL，接着新建一个对话框资源，拖一个Custom Control进对话框，Class填:MFCGridCtrl,ID取为IDC_GRID,&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:宋体; color:#010001;"&gt;如下图：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/resource.JPG" height="874" width="1600" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;在对话框类中添加成员变量：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;CGridCtrl&amp;nbsp;m_Grid;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;"&gt;在对话框的实现代码中添加控件绑定以及注册窗口代码：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;CGridDlg::DoDataExchange(CDataExchange*&amp;nbsp;pDX)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CDialog::DoDataExchange(pDX);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DDX_Control(pDX,&amp;nbsp;IDC_GRID,&amp;nbsp;m_Grid);&amp;nbsp;&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;extern&lt;/span&gt;&amp;nbsp;CDllGridApp&amp;nbsp;theApp;&lt;br /&gt;CGridDlg::CGridDlg(CWnd*&amp;nbsp;pParent&amp;nbsp;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;=NULL&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;CDialog(CGridDlg::IDD,&amp;nbsp;pParent)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;最好在构造函数注册，其它地方不保证成功，传入是DLL的模块句柄&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_Grid.RegisterWindowClass(theApp.m_hInstance);&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;效果图如下，其中弹出对话框的操作在DLL实现：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/effictive.JPG" height="627" width="1197" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;相关源码下载：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-weight:normal;"&gt;&lt;a href="http://download.csdn.net/detail/clever101/3648442"&gt;MFC Grid control&lt;span&gt;封装为DLL&lt;/span&gt;&lt;span&gt;的源码&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2196008.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/29/2196008.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/29/2195967.html</id><title type="text">typedef 名不能位于类或结构或联合之后的问题的解决办法</title><summary type="text">typedef 名不能位于类或结构或联合之后的问题的解决办法</summary><published>2011-09-29T14:14:00Z</published><updated>2011-09-29T14:14:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/29/2195967.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/29/2195967.html"/><content type="html">&lt;br /&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;源代码如下：&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;template&amp;lt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;TObj&amp;gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&amp;nbsp;SObjImpl{&lt;br /&gt;&amp;nbsp;RECT&amp;nbsp;m_rct;&lt;br /&gt;&amp;nbsp;std::deque&amp;lt;TObj*&amp;gt;&amp;nbsp;m_ObjCnt;&lt;br /&gt;&amp;nbsp;typedef&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;std::deque&amp;lt;TObj*&amp;gt;::iterator&amp;nbsp;ObjItr;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;virtual&lt;/span&gt;&amp;nbsp;~SObjImpl(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;ObjItr&amp;nbsp;itr(m_ObjCnt.begin());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;(itr!=m_ObjCnt.end())delete&amp;nbsp;*itr++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;m_ObjCnt.clear();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Recalc()=&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;};&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;使用&lt;/span&gt;VS2008 SP1&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;编译时报错：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;1&amp;gt;d:\test\controltest\controltest\gridctrls\gridctrl\gridctrl.h(324) : error C2242: typedef &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;名不能位于类&lt;/span&gt;/&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;结构&lt;/span&gt;/&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;联合之后&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="Times New Roman&amp;quot;"&gt;&lt;span&gt;1&amp;gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&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;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;d:\test\controltest\controltest\gridctrls\gridctrl\gridctrl.h(333): &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;参见对正在编译的类&lt;/span&gt; &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;模板&lt;/span&gt; &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;实例化&amp;#8220;&lt;/span&gt;SObjImpl&amp;lt;TObj&amp;gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;&amp;#8221;的引用&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;解决办法：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;typedef class std::deque&amp;lt;TObj*&amp;gt;::iterator ObjItr;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;改成&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;typedef typename std::deque&amp;lt;TObj*&amp;gt;::iterator ObjItr;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;明确&lt;/span&gt;std::deque&amp;lt;TObj*&amp;gt;::iterator&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;为一个类型名称。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2195967.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/29/2195967.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/24/2189653.html</id><title type="text">GUID转换为字符串的做法</title><summary type="text">GUID转换为字符串的做法。</summary><published>2011-09-24T12:03:00Z</published><updated>2011-09-24T12:03:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/24/2189653.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/24/2189653.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GUID&amp;nbsp;&amp;nbsp;&amp;nbsp;guid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hr=::CoCreateGuid(&amp;amp;guid);&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;产生guid&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCHAR&amp;nbsp;szGuid[&lt;span style="color: #800080;"&gt;128&lt;/span&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(szGuid,&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;\0&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800080;"&gt;128&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(szGuid,_T(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;),guid.Data1,guid.Data2,guid.Data3&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;guid.Data4[&lt;span style="color: #800080;"&gt;0&lt;/span&gt;],&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;1&lt;/span&gt;]&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;],&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;3&lt;/span&gt;],&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;4&lt;/span&gt;],&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;5&lt;/span&gt;]&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;6&lt;/span&gt;],&amp;nbsp;&amp;nbsp;&amp;nbsp;guid.Data4[&lt;span style="color: #800080;"&gt;7&lt;/span&gt;]&amp;nbsp;)&amp;nbsp;;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2189653.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/24/2189653.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/21/2184403.html</id><title type="text">Error C2662， cannot convert ‘this’ pointer from ‘const class ’ to ‘class &amp;amp;’的解决办法</title><summary type="text">Error C2662， cannot convert ‘this’ pointer from ‘const class ’ to ‘class &amp;’的解决办法。</summary><published>2011-09-21T11:55:00Z</published><updated>2011-09-21T11:55:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/21/2184403.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/21/2184403.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;下面的一段代码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;#include&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;stdafx.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Point3d&amp;nbsp;&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;:&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Point3d(&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;x=&lt;span style="color: #800080;"&gt;0.0&lt;/span&gt;,&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;y=&lt;span style="color: #800080;"&gt;0.0&lt;/span&gt;,&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;z=&lt;span style="color: #800080;"&gt;0.0&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:_x(x),_y(y),_z(z)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetX()&amp;nbsp;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_x;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetY()&amp;nbsp;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_y;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetZ()&amp;nbsp;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_z;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inline&amp;nbsp;std::ostream&amp;amp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;operator&lt;/span&gt;&amp;lt;&amp;lt;(std::ostream&amp;amp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;)&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;br /&gt;&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;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;lt;&amp;lt;GetX()&amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;GetY()&amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;GetZ()&amp;lt;&amp;lt;std::endl;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;:&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;_x,_y,_z;&amp;nbsp;&amp;nbsp;&lt;br /&gt;};&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VS C++2005&lt;/span&gt;&lt;span style="font-family:宋体"&gt;编译出现下面错误：&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style=" font-family:宋体;"&gt;1&amp;gt;d:\algorithmic\searchnum\console\console.cpp(21) : error C2662: &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&amp;#8220;Point3d::GetX&amp;#8221;: 不能将&amp;#8220;this&amp;#8221;指针从&amp;#8220;&lt;span&gt;const Point3d&lt;/span&gt;&amp;#8221;转换为&amp;#8220;Point3d &amp;amp;&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style=" font-family:宋体;"&gt;1&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;转换丢失限定符&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style=" font-family:宋体;"&gt;1&amp;gt;d:\algorithmic\searchnum\console\console.cpp(21) : error C2662: &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&amp;#8220;Point3d::GetY&amp;#8221;: 不能将&amp;#8220;this&amp;#8221;指针从&amp;#8220;&lt;span&gt;const Point3d&lt;/span&gt;&amp;#8221;转换为&amp;#8220;Point3d &amp;amp;&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style=" font-family:宋体;"&gt;1&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;转换丢失限定符&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体;"&gt;1&amp;gt;d:\algorithmic\searchnum\console\console.cpp(21) : error C2662: &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&amp;#8220;Point3d::GetZ&amp;#8221;: 不能将&amp;#8220;this&amp;#8221;指针从&amp;#8220;&lt;span&gt;const Point3d&lt;/span&gt;&amp;#8221;转换为&amp;#8220;Point3d &amp;amp;&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体"&gt;原因在于带&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;const&lt;/span&gt;&lt;span style=" font-family:宋体;"&gt;修饰符的接口会把this指针转化为为const this类型。网上一种解决办法是，把需要调用的非const接口都改为const，如上例的&lt;span style="color:#010001"&gt;GetX&lt;/span&gt;&lt;span style="color:#010001"&gt;、GetY和GetZ函数改为：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetX()&amp;nbsp;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_x;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetY()&amp;nbsp;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_y;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp;GetZ()&amp;nbsp;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;{&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;_z;}&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;我想到的一种办法是可以直接在内部将const修饰符去掉,具体如下：&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;lt;&amp;lt;(const_cast&amp;lt;Point3d*&amp;gt;(&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;))-&amp;gt;GetX()&amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;(const_cast&amp;lt;Point3d*&amp;gt;(&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;))-&amp;gt;GetY()&amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;(const_cast&amp;lt;Point3d*&amp;gt;(&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;))-&amp;gt;GetZ()&amp;lt;&amp;lt;std::endl;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;参考文献：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;1.&lt;a href="http://blog.csdn.net/guosong421/article/details/5505583"&gt; Error C2662&lt;span&gt;， cannot convert &lt;/span&gt;&lt;span&gt;&amp;#8216;this&lt;/span&gt;&lt;span&gt;&amp;#8217; pointer from &lt;/span&gt;&lt;span&gt;&amp;#8216;const class &lt;/span&gt;&lt;span&gt;&amp;#8217; to &lt;/span&gt;&lt;span&gt;&amp;#8216;class &amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#8217;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2184403.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/21/2184403.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/19/2180812.html</id><title type="text">奋战一天半，做了个VS 2005插件</title><summary type="text">利用周六下午和周日，做了个VS 2005插件。做VS 2005插件目的在于提高下工作效率，创意来自jingzhongrong大侠，调用 Google 搜索代码编辑器中选中的文本。他使用C#实现这个功能的（他做成了一个菜单，该文的参考文献就是他写的相关文章），我决心用ATL来完成一个工具栏实现相应功能（我感觉工具栏操作起来更方便）。</summary><published>2011-09-18T16:01:00Z</published><updated>2011-09-18T16:01:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/19/2180812.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/19/2180812.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 利用周六下午和周日，做了个&lt;/span&gt;&lt;span&gt;VS 2005&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;插件。做&lt;/span&gt;VS 2005&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;插件目的在于提高下工作效率，创意来自&lt;/span&gt;jingzhongrong&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;大侠，调用&lt;/span&gt; Google &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;搜索代码编辑器中选中的文本。他使用&lt;/span&gt;C#&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;实现这个功能的（他做成了一个菜单，该文的参考文献就是他写的相关文章），我决心用&lt;/span&gt;ATL&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;来完成一个工具栏实现相应功能（我感觉工具栏操作起来更方便）。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;其实功能实现就只花了十几二十分钟，之所以费了一天半，不得不说微软的&lt;/span&gt;VS&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;扩展工程对&lt;/span&gt;ATL&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的支持实在太坑爹了，总是出现莫名奇妙的错误。一个明显的例证是添加按钮那一步，第一次没创建成功，换个名字就好了。秀一个效果图吧(下图中圈中的工具栏):&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/effictive1.JPG" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;使用方法如下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="Times New Roman&amp;quot;"&gt;&lt;span&gt;1.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;选中要搜索的代码文本，如下图的选中&lt;/span&gt;BITMAP&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，然后单击搜索按钮，如下图：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/operation1.JPG" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&lt;span style="Times New Roman&amp;quot;"&gt;&lt;span&gt;2.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;这时&lt;/span&gt;VS 2005&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;变身一个浏览器了，如下图：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/ret2.JPG" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;这个插件的好处是你不用直接代码网络浏览器，直接使用&lt;/span&gt;VS 2005&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;就可以进行网络搜索了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;下一步计划是研究如何部署这个插件以及将百度搜索等加进来（让用户来配置搜索引擎，虽然我讨厌百度，但在&lt;/span&gt;google&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;被封的情况下，这个也是无奈之举）。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;参考文献：&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-weight:normal;"&gt;1. &lt;a href="http://blog.csdn.net/jingzhongrong/archive/2010/01/20/5216638.aspx"&gt;VS&lt;span&gt;插件编写初探&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://hi.baidu.com/qiujiejia/blog/item/6f3b27fc9f703f98b901a0c5.html"&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;&lt;span&gt;编写&lt;/span&gt;VS2008&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;插件&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2180812.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/19/2180812.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/12/2174041.html</id><title type="text">SystemParametersInfo获取信息失败问题的解决</title><summary type="text">SystemParametersInfo获取信息失败问题的解决。</summary><published>2011-09-12T07:06:00Z</published><updated>2011-09-12T07:06:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/12/2174041.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/12/2174041.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;使用&lt;/span&gt;VS 2008&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;编译下面一段代码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NONCLIENTMETRICS&amp;nbsp;info;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info.cbSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(info);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;::SystemParametersInfo&amp;nbsp;(SPI_GETNONCLIENTMETRICS,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(info),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;info,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;SystemParametersInfo&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;函数总是返回&lt;/span&gt;FALSE&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，上网查了一下，发现是&lt;/span&gt;NONCLIENTMETRICS&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的结构体大小的问题。&lt;/span&gt;NONCLIENTMETRICS&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;是这样定义的：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;tagNONCLIENTMETRICS&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;UINT&amp;nbsp;cbSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iBorderWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iScrollWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iScrollHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iCaptionWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iCaptionHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOGFONT&amp;nbsp;lfCaptionFont;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iSmCaptionWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iSmCaptionHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOGFONT&amp;nbsp;lfSmCaptionFont;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iMenuWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iMenuHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOGFONT&amp;nbsp;lfMenuFont;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOGFONT&amp;nbsp;lfStatusFont;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOGFONT&amp;nbsp;lfMessageFont;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(WINVER&amp;nbsp;&amp;gt;=&amp;nbsp;0x0600)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iPaddedBorderWidth;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;}&amp;nbsp;NONCLIENTMETRICS,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;LPNONCLIENTMETRICS;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体"&gt;就是在WINVER &amp;gt;= 0x0600成立的时候，&lt;/span&gt;info.cbSize = sizeof(info)&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，而&lt;/span&gt;XP + sp3&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的系统的&lt;/span&gt;&lt;span style="font-family:宋体"&gt;WINVER&lt;/span&gt;&lt;span style="font-family:宋体"&gt;为&lt;/span&gt;0x501&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;。因此解决这个问题的办法是：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;要么把&lt;/span&gt;WINVER&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;小于&lt;/span&gt;0x600 &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;要么直接&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;NONCLIENTMETRICS.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(NONCLIENTMETRICS.iPaddedBorderWidth); &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;也可以&lt;/span&gt;.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;参考文献：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;1. &lt;a href="http://hi.baidu.com/guid/blog/item/5d9e019535169f007af4806a.html"&gt;SystemParametersInfo SPI_GETNONCLIENTMETRICS &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;总是返回失败的原因&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2174041.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/12/2174041.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/11/2173834.html</id><title type="text">_WIN32_WINNT settings conflicts with _WIN32_IE setting问题的解决</title><summary type="text">fatal error C1189: #error : _WIN32_WINNT settings conflicts with _WIN32_IE setting问题的解决。</summary><published>2011-09-11T15:17:00Z</published><updated>2011-09-11T15:17:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/11/2173834.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/11/2173834.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;使用&lt;/span&gt;VS 2008(&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;带&lt;/span&gt;sp1)&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;编译&lt;/span&gt;VC 6.0&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的一个工程，出现下面的编译错误：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;1&amp;gt;c:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error :&amp;nbsp;_WIN32_WINNT settings conflicts with _WIN32_IE setting&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;产生这个错误的原因是原因是&lt;/span&gt;_WIN32_WINNT&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的版本定义太老，老的&lt;/span&gt;VC&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;代码对&lt;/span&gt;_WIN32_WINNT&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的典型设置是：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;#ifndef _WIN32_WINNT&lt;/p&gt;  &lt;p&gt;#define _WIN32_WINNT 0x0400&lt;/p&gt;  &lt;p&gt;#endif&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;0x0400&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;相对于&lt;/span&gt;VS2008&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;所带的&lt;/span&gt;&lt;span&gt;Plarform SDK&lt;/span&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;（在文件&lt;/span&gt;sdkddkver.h&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;中）中&lt;/span&gt;_WIN32_IE&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的定义来说太老了，导致不兼容，可以将其改成&lt;/span&gt;0x0501&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;或更高的版本避免这个问题，如下所示：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;#ifndef _WIN32_WINNT&lt;/p&gt;  &lt;p&gt;#define _WIN32_WINNT 0x0501&lt;/p&gt;  &lt;p&gt;#endif&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;也可以将这三行&lt;/span&gt;_WIN32_WINNT&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;定义删除，这样就会使用&lt;/span&gt;Plarform SDK&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;中的&lt;/span&gt;_WIN32_WINNT&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;定义，自然就不存在不兼容问题了。不过出于对老版本&lt;/span&gt;VC&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;的兼容考虑（毕竟以后可能还要使用&lt;/span&gt;VC6&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;编译代码），最好这样修改：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;#if _MSC_VER &amp;lt;= 1200 // MFC 6.0 or earlier&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#ifndef _WIN32_WINNT&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#define _WIN32_WINNT 0x0400&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endif&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;#endif&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;另外WINVER宏也要删除掉或者重新定义值。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;参考文献：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://blog.csdn.net/orbit/article/details/3405309"&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;&lt;span&gt;从&lt;/span&gt;VC6&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;到&lt;/span&gt;VC9&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;移植代码问题总结&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2173834.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/11/2173834.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/clever101/archive/2011/09/10/2173405.html</id><title type="text">使用CFileDialog的钩子函数解决对话框的多选问题</title><summary type="text">使用CFileDialog类在设置多选时选中的文件所放的文件缓冲区不知设置多大合适，设置小了DoModal返回为失败， 通过CommDlgExtendedError函数获取错误码为FNERR_BUFFERTOOSMALL（即缓冲区太小），设置大了又浪费内存。可以使用CFileDialog类的钩子函数来动态分配内存来解决该问题。</summary><published>2011-09-10T14:31:00Z</published><updated>2011-09-10T14:31:00Z</updated><author><name>是金子就会灿烂</name><uri>http://www.cnblogs.com/clever101/</uri></author><link rel="alternate" href="http://www.cnblogs.com/clever101/archive/2011/09/10/2173405.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/clever101/archive/2011/09/10/2173405.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体"&gt;作者：朱金灿&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体"&gt;来源：&lt;a href="http://www.cnblogs.com/clever101"&gt;http://www.cnblogs.com/clever101&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10.5pt"&gt;前几天领导问我一个问题：就是使用CFileDialog类在设置多选时选中的文件所放的文件缓冲区不知设置多大合适，设置小了DoModal返回为失败， 通过CommDlgExtendedError函数获取错误码为FNERR_BUFFERTOOSMALL（即缓冲区太小），设置大了又浪费内存。（我们 一次要选几百个文件，实在不知设置多大合适）。&lt;span&gt;&lt;br /&gt; &lt;br /&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;我谈了我的思路：CFileDialog的数据成员m_ofn有一个数据成员为钩子函数指针，通过设置这个函数，可以勾取CFileDialog的相关消 息，比如用户改变路径的消息，然后获取当前路径的文件个数，以此为依据来设置缓冲区的大小。领导不是很明白我的思路，他上网搜了搜，找到一种方法，就是通 过派生CFileDialog类的方法来做，具体如下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:10.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.codeproject.com/KB/dialog/pja_multiselect.aspx" target="_blank" title=" Multiple Selection in a File Dialog"&gt;Multiple Selection in a File Dialog&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:10.5pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10.5pt"&gt;上面的链接提到的方法确实可行。但是我也相信我的方法是可行的。下班后我上网搜索了一下，发现微软官网上有一个对此问题的解决办法，链接如下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:10.5pt"&gt;&lt;a href="http://support.microsoft.com/kb/131462/zh-cn"&gt;&lt;span&gt;如何处理在 Windows &lt;/span&gt;&lt;span&gt;中 FNERR_BUFFERTOOSMALL&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体;"&gt;该链接提供的代码适合的是&lt;span&gt;Win 32&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;的程序，并不适合MFC的程序，而且我建了一个Win32的程序测试该例子的代码时，发现一个问题，就是当选择的文件过多时，就是需要分配的缓冲区比较多时，使用链接中的HeapAlloc函数会出现错误，错误提示如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/clever101/heaperror.JPG" height="191" width="444" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体"&gt;因此要将链接中分配内存和释放的内存的HeapAlloc和&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;HeapFree&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;函数分别用C++的new和delete操作符替换。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体"&gt;在微软官网提供的做法的基础上我摸索出用在MFC程序的做法，具体代码如下：&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt; &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;钩子函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UINT_PTR&amp;nbsp;CALLBACK&amp;nbsp;MyOFNHookProc(&amp;nbsp;&amp;nbsp;&amp;nbsp;HWND&amp;nbsp;hdlg,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;handle&amp;nbsp;to&amp;nbsp;child&amp;nbsp;dialog&amp;nbsp;box&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT&amp;nbsp;uiMsg,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;message&amp;nbsp;identifier&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WPARAM&amp;nbsp;wParam,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;message&amp;nbsp;parameter&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPARAM&amp;nbsp;lParam&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;message&amp;nbsp;parameter&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nResult&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;FALSE;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(hdlg&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NULL)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;#ifdef&amp;nbsp;_DEBUG&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;from&amp;nbsp;"_AfxCommDlgProc()"&amp;nbsp;of&amp;nbsp;the&amp;nbsp;file&amp;nbsp;"dlgcomm.cpp"&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_AFX_THREAD_STATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pThreadState&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;AfxGetThreadState();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(pThreadState&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;m_pAlternateWndInit&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NULL)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pThreadState&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;m_pAlternateWndInit&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NULL;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt;(uiMsg)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;WM_NOTIFY:&lt;br /&gt;&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;LPOFNOTIFY&amp;nbsp;pOfn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(LPOFNOTIFY)lParam;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt;(pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;hdr.code)&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;{&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CDN_SELCHANGE:&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;{&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;TCHAR&amp;nbsp;dummy_buffer;&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Get&amp;nbsp;the&amp;nbsp;required&amp;nbsp;size&amp;nbsp;for&amp;nbsp;the&amp;nbsp;'files'&amp;nbsp;buffer&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;HWND&amp;nbsp;hOwner&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;GetParent(hdlg);&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;HWND&amp;nbsp;hParent&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;GetParent(hOwner);&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;UINT&amp;nbsp;nfiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommDlg_OpenSave_GetSpec(hOwner,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;dummy_buffer,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Get&amp;nbsp;the&amp;nbsp;required&amp;nbsp;size&amp;nbsp;for&amp;nbsp;the&amp;nbsp;'folder'&amp;nbsp;buffer&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cbLength&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommDlg_OpenSave_GetSpec(GetParent(hdlg),&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&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;cbLength&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;_MAX_PATH;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(cbLength&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpOFN)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nMaxFile)&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;{&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;delete&amp;nbsp;(pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpOFN)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpstrFile;&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;(pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpOFN)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpstrFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TCHAR[cbLength];&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;ZeroMemory((pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpOFN)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpstrFile,cbLength);&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;(pOfn&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lpOFN)&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nMaxFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cbLength;&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;}&lt;br /&gt;&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;nResult&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&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;}&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&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;}&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nResult;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;NAMEBUF&amp;nbsp;&amp;nbsp;&amp;nbsp;1024&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;调用函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CMultiSelectDlg::OnButton1()&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_listbox.ResetContent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_static.SetWindowText(_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;0&amp;nbsp;files&amp;nbsp;selected&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCHAR&amp;nbsp;szFilters[]&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;MyType&amp;nbsp;Files&amp;nbsp;(*.doc)|*.doc||&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Create&amp;nbsp;an&amp;nbsp;Open&amp;nbsp;dialog;&amp;nbsp;the&amp;nbsp;default&amp;nbsp;file&amp;nbsp;name&amp;nbsp;extension&amp;nbsp;is&amp;nbsp;".doc".&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CFileDialog&amp;nbsp;fileDlg(TRUE,&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;doc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*.doc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OFN_FILEMUSTEXIST&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OFN_HIDEREADONLY&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;OFN_ALLOWMULTISELECT,&amp;nbsp;szFilters);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileDlg.m_ofn.lpstrFile&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;&amp;nbsp;TCHAR[NAMEBUF];&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;重新定义lpstrFile&amp;nbsp;缓冲大小&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(fileDlg.m_ofn.lpstrFile,&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,NAMEBUF);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;初始化定义的缓冲&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileDlg.m_ofn.nMaxFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NAMEBUF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;重定义nMaxFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileDlg.m_ofn.lpfnHook&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(LPOFNHOOKPROC)MyOFNHookProc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INT_PTR&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fileDlg.DoModal();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IDOK)&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CString&amp;nbsp;str;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CDC&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pDC&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;m_listbox.GetDC();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;saved&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pDC&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SaveDC();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pDC&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SelectObject(GetFont());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT&amp;nbsp;count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;POSITION&amp;nbsp;pos&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fileDlg.GetStartPosition();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(pos)&lt;br /&gt;&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;str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fileDlg.GetNextPathName(pos);&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;m_listbox.AddString(str);&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;CSize&amp;nbsp;size(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&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;size&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pDC&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;GetTextExtent(str);&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;width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;size.cx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;width&amp;nbsp;:&amp;nbsp;size.cx;&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;&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;count;&lt;br /&gt;&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;pDC&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;RestoreDC(saved);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReleaseDC(pDC);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_listbox.SetHorizontalExtent(width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str.Format(_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%u&amp;nbsp;files&amp;nbsp;selected&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_static.SetWindowText(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwCode&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommDlgExtendedError();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(FNERR_BUFFERTOOSMALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;dwCode)&lt;br /&gt;&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;AfxMessageBox(_T(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;获取文件路径失败！&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;[]fileDlg.m_ofn.lpstrFile;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileDlg.m_ofn.lpstrFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NULL;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;div&gt;  &lt;p&gt;&lt;span style=" font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体"&gt;另外使用钩子函数的一个严重缺点是程序必须使用Unicode字符集进行编译，使用多字节字符集编译程序执行后&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;FNERR_BUFFERTOOSMALL&lt;/span&gt;&lt;span style="font-family:宋体;color:#010001;"&gt;的错误（这一点已经测试过，我比较难以理解的是为何在这一点上微软不予支持多字节程序）。我的测试环境为: VS C++ 2005 + sp1,Win XP + sp3,unicode字符集。&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/clever101/aggbug/2173405.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/clever101/archive/2011/09/10/2173405.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
