﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-任我行-随笔分类-C++</title><link>http://www.cppblog.com/oosky/category/155.html</link><description>一天一个脚印......
&lt;br&gt;每日一句: &lt;script language="javascript" charset="utf-8" src="http://sl.iciba.com/spdshow.php"&gt;&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 00:53:18 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 00:53:18 GMT</pubDate><ttl>60</ttl><item><title>Boost安装</title><link>http://www.cppblog.com/oosky/archive/2006/06/30/9243.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Fri, 30 Jun 2006 09:08:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2006/06/30/9243.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/9243.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2006/06/30/9243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/9243.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/9243.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Boost安装&nbsp;&nbsp;<a href='http://www.cppblog.com/oosky/archive/2006/06/30/9243.html'>阅读全文</a><img src ="http://www.cppblog.com/oosky/aggbug/9243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2006-06-30 17:08 <a href="http://www.cppblog.com/oosky/archive/2006/06/30/9243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC6 + ICC8.1+...VC6与VS2005媲美</title><link>http://www.cppblog.com/oosky/archive/2006/04/10/5255.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Mon, 10 Apr 2006 11:22:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2006/04/10/5255.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/5255.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2006/04/10/5255.html#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/5255.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/5255.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 因为VC6自带的编译器对C++支持不好，好像还不支持C98标准吧，反正是很久以前的标准了，Intel自家的编译器应该是比较优秀的。听说VC的编译器就是MS和Intel一起搞的，现在Intel想独立门户了吧。<br>下面自己去体验吧！<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/oosky/archive/2006/04/10/5255.html'>阅读全文</a><img src ="http://www.cppblog.com/oosky/aggbug/5255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2006-04-10 19:22 <a href="http://www.cppblog.com/oosky/archive/2006/04/10/5255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>华为软件编程规范和范例</title><link>http://www.cppblog.com/oosky/archive/2006/03/26/4625.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Sun, 26 Mar 2006 09:04:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2006/03/26/4625.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/4625.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2006/03/26/4625.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/4625.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/4625.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [ 										华为软件编程规范和范例 ]								 														 																																				〔一〕=====[排版] ]=======. 																																														...&nbsp;&nbsp;<a href='http://www.cppblog.com/oosky/archive/2006/03/26/4625.html'>阅读全文</a><img src ="http://www.cppblog.com/oosky/aggbug/4625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2006-03-26 17:04 <a href="http://www.cppblog.com/oosky/archive/2006/03/26/4625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>堆栈，堆栈，堆和栈的区别</title><link>http://www.cppblog.com/oosky/archive/2006/01/21/2958.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Sat, 21 Jan 2006 08:23:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2006/01/21/2958.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/2958.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2006/01/21/2958.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/2958.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/2958.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 堆栈，堆栈？什么是堆，什么是栈？<br>看完你就明白了。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/oosky/archive/2006/01/21/2958.html'>阅读全文</a><img src ="http://www.cppblog.com/oosky/aggbug/2958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2006-01-21 16:23 <a href="http://www.cppblog.com/oosky/archive/2006/01/21/2958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++阅读渐进书目</title><link>http://www.cppblog.com/oosky/archive/2005/11/07/966.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Mon, 07 Nov 2005 05:52:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2005/11/07/966.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/966.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2005/11/07/966.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/966.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/966.html</trackback:ping><description><![CDATA[
		<p>我自己觉得应该还要加一本书：<br />《 Inside the C++ Object Model》我自己现在也在看这本书，对C++对象模型介绍的非常好，是深入了解C++的资料书籍。C++学习应该从两个方面来学习，首先学习C++语言层面，也就是C++语法，如果深入学习的话就会进入C++底层。。。第二个层面就是对象，设计很广泛：对象设计，对象复用，STL，COM,BOOST。。。</p>
		<p>1. 《The C++ Programming Language》 (Special 3rd Edition)　by Bjarne Stroustrup <br />C++之父著作的大头作，非常不错，很厚，对C++介绍的非常详细。</p>
		<p>2. 《The Design and Evolution of C++》　by Bjarne Stroustrup <br />如果你只打算购买一本书，那就选择1，如果还想要第二本 — 那就是这两本了。它们的作者是 C++语言的创建者。Stroustrup的文字语言丝毫不逊色于他所创建的程序语言。它们可以使你免于误入歧途。 </p>
		<p>3. 《Effective C++》: 50 Specific Ways to Improve Your Programs and Designs <br />　by Scott Meyers </p>
		<p>4. 《More Effective C++》: 35 New Ways to Improve Your Programs and Designs <br />　by Scott Meyers </p>
		<p>5. 《Effective STL》: 50 Specific Ways to Improve Your Use of the Standard Template Library　by Scott Meyers <br />我强烈推荐Meyers这个系列。它们是菜鸟进阶必读之作。游刃有余的技术，高超的写作技巧。Meyers可能是世界上最优秀的C++技术作家。 </p>
		<p>6. 《The C++ Standard Library》 : A Tutorial and Reference　by Nicolai M. Josuttis <br />C++标准库字典式著作。内容全面，结构清晰。 </p>
		<p>7. 《C++ Templates》: The Complete Guide　by David Vandevoorde, <br />Nicolai M. Josuttis Alexandrescu的Modern C++ Design阅读门槛很高，这本书可以充当你的垫脚石。单单阅读The C++ Standard Library或许并不足以使你具备定制、扩充标准库组件的能力，这本书可以助你一臂之力。对于任何希望进入模板编程领域的C++程序员来说，这是一本必读之作。 </p>
		<p>8. 《Modern C++ Design》: Generic Programming and Design Patterns Applied <br />　by Andrei Alexandrescu <br />一本天才的著作！泛型模式，无限延伸你的视野，足以挑战任何一名C++程序员的思维极限。这本书几乎可以满足你对C++模板的所有幻想。 </p>
		<p>9. 《Design Patterns》 <br />　by Erich Gamma , Richard Helm, Ralph Johnson, John Vlissides <br />设计可复用的面向对象的软件，你需要掌握设计模式。这并不是一本专门针对C++程序员的著作，但它采用了C++（和Smalltalk）作为主要示例语言，C++程序员尤其易于从中受益。学习设计模式，这本书需要一而再、再而三的咀嚼。</p>
<img src ="http://www.cppblog.com/oosky/aggbug/966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2005-11-07 13:52 <a href="http://www.cppblog.com/oosky/archive/2005/11/07/966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++资源之不完全导引</title><link>http://www.cppblog.com/oosky/archive/2005/11/07/965.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Mon, 07 Nov 2005 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2005/11/07/965.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/965.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2005/11/07/965.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/965.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/965.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 无数次听到“我要开始学习C++!”的呐喊，无数次听到“C++太复杂了，我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”，人们常将“之一”去掉以表达自己对C++的敬畏。诚然，C++程序设计语言对于学习者的确有很多难以逾越的鸿沟，体系结构的庞大，应接不暇并不断扩充的特性……除此之外，参考资料之多与冗杂使它的学习者望而却步，欲求深入者苦不堪言。希望这一份不完全导引能够成为您C++学习之路上的引路灯。&nbsp;&nbsp;<a href='http://www.cppblog.com/oosky/archive/2005/11/07/965.html'>阅读全文</a><img src ="http://www.cppblog.com/oosky/aggbug/965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2005-11-07 13:41 <a href="http://www.cppblog.com/oosky/archive/2005/11/07/965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>星期推算法</title><link>http://www.cppblog.com/oosky/archive/2005/10/22/794.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Sat, 22 Oct 2005 03:50:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2005/10/22/794.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/794.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2005/10/22/794.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/794.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/794.html</trackback:ping><description><![CDATA[<P>通常我们只知道生活当天的前后几天是星期几，即便是翻日历，也只能知道有限日期的星期数。那么有没有一种方法可以让我们知道任何一天是星期几呢？有，下面我将向大家介绍一种方法，用以编写万年历的程序。</P>
<P>首先我们必须约定一些法则，我们用Y、M、D分别表示年、月、日，用数字0－6分别表示星期日－星期六，这样我们就可以开始推导我们的公式了。</P>
<P>我们知道2002年9月1号为星期日，如果我们要想知道2002年9月10号为星期几，可以这样算：（0+（10-1））％7＝（0+9）％7＝2，即星期二。同样可算得2002年9月20号为：（0+（20-1））％7＝（0+19）％7＝5，即星期五。但是这样算需要把日期减1，不太方便，为了解决这个问题，我们可以假设每个月有一个0号，由于2002年9月1号为星期日，那么2002年9月0号为星期六，这样算9月10号，只需代入10既（6+10）％7＝2。事实上，9月0号也就是8月31号，每个月0号的星期数实际上就是每个月1号的前一天的星期数。我把这个星期数称之为每个月的代码。有了这个代码，要算这个月任一天的星期数都好办了。</P>
<P>以上讨论的是一年中每个月的代码，事实上对于每年也有一个代码，这个代码就是每年1月0号（即1月1号的前一天）的星期数，也就是一月份的代码。如果我们能够找到每年的代码之间的关系，那么要计算万年历就易如反掌了。</P>
<P>&nbsp;</P>
<P>（一）推算年的代码公式</P>
<P>我们都知道，平年一年有365天，即52周多1天。闰年为366天即52周多2天。我们先只考虑平年的情况。</P>
<P>假设第N年的代码为W，则第N+1年的代码为（W+1）％7，而第N+K年的代码则为（W+K）%7。这是因为从第N年到第N+K年共经过了K年，每过一年也就是过了52周余1天，经过K年也就是过了52*K周余K天，将多余的天数K加上第N年的代码W再对7取模，所得也就是第N+K年的代码了。</P>
<P>下面我们把闰年也考虑进来。判断闰年的规则是，能被4整除，并能被100和400同时整除的年份就是闰年。所以从第N年到第N+K年间共有K/4 -K/100+K/400个闰年，而每个闰年有52周余2天，要比平年多余了1天，即共多余了K/4-K/100+K/400天。我们应该把这些天也加进去，所以第N+K年的代码应为（W+K+K/4-K/100+K/400）%7。</P>
<P>这样子是不是就考虑完全了呢？并非如此，我们还有两点没考虑到。第一点是第N年是不是闰年。如果第N年是闰年的话，它本身就是52周余2天，而我们在上面却是把它当作平年来计算的，少算了1天，应加上。所以在第N年为闰年的时候上式应为（W+(K+1)+K/4-K/100+K/400）%7。第二点是第N+K年是不是闰年。如果第N+K年是闰年，虽然它有52周余2天，但只有在算第N+(K+1)年的时候，才需要多加它那一天，而在算第N+K年的时候不需要多加这1天，因此我们必须将上式改为（W+(K+1)+(K-1)/4-(K-1)/100+(K-1)/400）%7（注意千万不能改为（W+(K+1)+(K/4-K/100+K/400-1)）%7=(W+K+K/4-K/100+K/400)%7）。</P>
<P>由此我们可以得出当第N年为闰年时，第N+K年的代码计算式为：</P>
<P>A=(W+(K+1)+(K-1)/4-(K-1)/100+(K-1)/400)%7为了方便计算，我们可以取N为0，也就是假设公元元年的代码为W。因为公元元年也是闰年，符合上式，那么当我们输入的年份为Y时，此时就有K=Y，也就是说第Y年的代码为</P>
<P>A=(W+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7接下来的问题就是W究竟是一个什么数了，下面我们就来解决这个问题。</P>
<P>我们已经知道2002年1月1号为星期二，它的前一天为星期一，那也就是说2002年的代码就是1，由此我们可得</P>
<P>(W+(2002+1)+(2002-1)/4-(2002-1)/100+(2002-1)/400)%7=1</P>
<P>即</P>
<P>(W+2488)%7=1</P>
<P>(W+3)%7=1</P>
<P>这样我们就可求得W=5。我们的公式就变成了如下形式</P>
<P>A=(5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7有了这个公式，我们就可以算公元后任意一年的代码了，但还不能算公元前的，我们还需要再改进一下，得出公式（1）：</P>
<P>（1）Ayear= Y&gt;0 ? (5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7</P>
<P>: (5 + Y + Y/4 - Y/100 + Y/400) % 7</P>
<P>这样就OK了。不过这又导致了另一个问题：Y&lt;0时，算得的A有可能小于0。这个问题我们暂且留下，待会再解决。</P>
<P>&nbsp;</P>
<P>（二）推算月的代码公式</P>
<P>年的问题解决了，月怎么办呢？请看下表：</P>
<P>&nbsp;</P>
<P>月份</P>
<P>代码</P>
<P>差值</P>
<P>一月</P>
<P>A</P>
<P>0</P>
<P>二月</P>
<P>A+3</P>
<P>3</P>
<P>三月</P>
<P>A+3</P>
<P>3</P>
<P>四月</P>
<P>A+6</P>
<P>6</P>
<P>五月</P>
<P>A+1</P>
<P>1</P>
<P>六月</P>
<P>A+4</P>
<P>4</P>
<P>七月</P>
<P>A+6</P>
<P>6</P>
<P>八月</P>
<P>A+2</P>
<P>2</P>
<P>九月</P>
<P>A+5</P>
<P>5</P>
<P>十月</P>
<P>A</P>
<P>0</P>
<P>十一月</P>
<P>A+3</P>
<P>3</P>
<P>十二月</P>
<P>A+5</P>
<P>5</P>
<P>表中的A为当年的代码。由这个表我们可以看出，月与月之间也有一定的关系。由此我们可以推出下面的公式（2）：</P>
<P>（2）Amonth=M&gt;2 ? (Ayear+2*(M+1)+3*(M+1)/5)%7</P>
<P>: (Ayear+2*(M+2)+3*(M+2)/5)%7</P>
<P>但是上表所反映的仅为平年的情况，若Y为闰年，则在M大于2时，每个月的代码还需再加1。这可用一个IF语句解决：</P>
<P>（3）if (((Y%4==0 &amp;&amp; Y%100!==0) || (Y%400==0)) &amp;&amp; M &gt; 2)</P>
<P>Amonth = (Amonth+1)%7;</P>
<P>现在我们回到公式（1）中的问题。如果Y&lt;0时，使得Ayear&lt;0，那么Ayear最小也只能到-6。大家可以看到，当我们将Ayear代入公式（2）时，问题就自然解决了。</P>
<P>&nbsp;</P>
<P>（三）计算日期</P>
<P>有了上面的公式，当我们输入日期后，就很容易算出当天为星期几了，而且可以计算变量允许范围内的任意一天的星期数。</P>
<P>（4）A = (Amonth+D)%7<BR></P>
<P>（四）写程序</P>
<P>下面给出该万年历的程序，约莫估计，它可从公元前数十亿年算到公元后数十亿年（即从负十位数到正十位数），而且无一错漏。</P>
<P>（程序中并没有对输入的月份和日期进行出错处理）</P>
<P>#include &lt;stdio.h&gt;</P>
<P>char *week[] = {"Sunday",</P>
<P>"Monday",</P>
<P>"Tuesday",</P>
<P>"Wednesday",</P>
<P>"Thursday",</P>
<P>"Friday",</P>
<P>"Saturday"};</P>
<P>void main()</P>
<P>{</P>
<P>int Y;</P>
<P>int M;</P>
<P>int D;</P>
<P>int A;</P>
<P>printf("<BR>Enter year:");</P>
<P>scanf("%d",&amp;Y);</P>
<P>printf("<BR>Enter month:");</P>
<P>scanf("%d",&amp;M);</P>
<P>printf("<BR>Enter date:");</P>
<P>scanf("%d",&amp;D);</P>
<P>//下面的四条语句用来计算输入日期的星期数，是程序的核心部分，缺一不可</P>
<P>A = Y &gt; 0 ? (5 + (Y + 1) + (Y - 1)/4 - (Y - 1)/100 + (Y - 1)/400) % 7 </P>
<P>: (5 + Y + Y/4 - Y/100 + Y/400) % 7;</P>
<P>&nbsp;</P>
<P>A = M &gt; 2 ? (A + 2*(M + 1) + 3*(M + 1)/5) % 7 </P>
<P>: (A + 2*(M + 2) + 3*(M + 2)/5) % 7;</P>
<P>&nbsp;</P>
<P>if (((Y%4 == 0 &amp;&amp; Y%100 != 0) || Y%400 == 0) &amp;&amp; M&gt;2)</P>
<P>{</P>
<P>A = (A + 1) % 7;</P>
<P>}</P>
<P>A = (A + D) % 7;</P>
<P>printf("<BR>I's a %s.</P>
<P>",week[A]);</P>
<P>}<BR>《转贴》</P><img src ="http://www.cppblog.com/oosky/aggbug/794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2005-10-22 11:50 <a href="http://www.cppblog.com/oosky/archive/2005/10/22/794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>匈牙利命名规范 与微软命名法</title><link>http://www.cppblog.com/oosky/archive/2005/10/17/693.html</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Mon, 17 Oct 2005 06:48:00 GMT</pubDate><guid>http://www.cppblog.com/oosky/archive/2005/10/17/693.html</guid><wfw:comment>http://www.cppblog.com/oosky/comments/693.html</wfw:comment><comments>http://www.cppblog.com/oosky/archive/2005/10/17/693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/oosky/comments/commentRss/693.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oosky/services/trackbacks/693.html</trackback:ping><description><![CDATA[<H2><A id=viewpost1_TitleUrl href="http://www.cnitblog.com/ffan/archive/2005/09/21/2815.html">匈牙利命名规范</A> </H2>
<P>几年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀是n,长整型变量是nl,字符型数组变量是ca,以及字符串(以空类型结尾的字符数组)以sz为前缀.这些名字可能会非常古怪.比如说:lpszFoo表示"Foo"是一个指向以空字符为结尾的字符串的长整型指针.</P>
<P>这种方法的优点是使人能够通过变量的名字来辨别变量的类型,而不比去查找它的定义.遗憾的是,这种方法不仅使变量名字非常绕口,而且使改变变量类型的工作变得十分艰巨.在Windows3.1中,整型变量为16为宽.如果我们在开始时采用了一个整型变量,但是在通过30---40个函数的计算之后,发现采用整型变量宽度不够,这时我们不仅要改变这个变量的类型,而且要改变这个变量在这30--40个函数中的名字.</P>
<P>因为不切实际,除了一些顽固的Windows程序员外已经没有人再使用"匈牙利表示法"了.毫无疑问,在某种场合它依然存在,但大部分人现在已经抛弃它了.一般而言,输入前缀是一种糟糕的想法,因为它把变量于其类型紧紧地绑在了一起.</P>
<P>对于30行以下的函数，匈牙利方法一般有优势。</P>
<P>尤其是对界面编程，有优势。</P>
<P>但对于有强烈的算法要求、尤其是有很多抽象类型的C++程序，匈牙利方法简直是一个灾难。</P>
<P>看你用在什么地方。</P>
<P>现在有了很好的IDE工具,如:VC,SourceInsight等.</P>
<P>选中变量,会自动提示告诉你它的声明和定义,这样</P>
<P>匈牙利命名法就没有很大的必要了.</P>
<P>无非就是为了程序可读性较好.</P>
<P>实际上良好的代码书写习惯比强制使用匈牙利命名法更重要.</P>
<P>系统性。整体性。可读性。分类要清楚。要有注释！</P>
<P>匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是：在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的，结果它在微软内部逐渐流行起来，并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法，后面的例子里也会尽量遵守它和上面的代码风格。还是那句话，并不是要求所有的读者都要去遵守，但是希望读者作为一个现代的软件开发人员都去遵守它。</P>
<P>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数组</P>
<P>&nbsp; b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL (int)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布尔(整数)</P>
<P>&nbsp; by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unsigned Char (Byte)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号字符(字节)</P>
<P>&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符(字节)</P>
<P>&nbsp; cb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Count of bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字节数</P>
<P>&nbsp; cr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color reference value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 颜色(参考)值</P>
<P>&nbsp; cx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Count of x (Short)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x的集合(短整数)</P>
<P>&nbsp; dw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp; (unsigned long)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 双字(无符号长整数)</P>
<P>&nbsp; f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags&nbsp;&nbsp; (usually multiple bit values)&nbsp;&nbsp; 标志(一般是有多位的数值)</P>
<P>&nbsp; fn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数</P>
<P>&nbsp; g_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 全局的</P>
<P>&nbsp; h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 句柄</P>
<P>&nbsp; i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 整数</P>
<P>&nbsp; l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长整数</P>
<P>&nbsp; lp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Long pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长指针</P>
<P>&nbsp; m_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Data member of a class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个类的数据成员</P>
<P>&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Short int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 短整数</P>
<P>&nbsp; p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指针</P>
<P>&nbsp; s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符串</P>
<P>&nbsp; sz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Zero terminated String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以0结尾的字符串</P>
<P>&nbsp; tm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text metric&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文本规则</P>
<P>&nbsp; u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号整数</P>
<P>&nbsp; ul&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unsigned long (ULONG)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号长整数</P>
<P>&nbsp; w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WORD (unsigned short)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号短整数</P>
<P>&nbsp; x,y&nbsp;&nbsp;&nbsp;&nbsp; x, y coordinates (short)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 坐标值/短整数</P>
<P>&nbsp; v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 空</P>
<P>&nbsp;</P>
<P>有关项目的全局变量用g_开始，类成员变量用m_，局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。</P>
<P>前缀&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子</P>
<P>g_&nbsp;&nbsp;&nbsp; 全局变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_Servers</P>
<P>C&nbsp;&nbsp;&nbsp;&nbsp; 类或者结构体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDocument，CPrintInfo</P>
<P>m_&nbsp;&nbsp; 成员变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pDoc，m_nCustomers<BR></P>
<P>VC常用前缀列表：</P>
<P>&nbsp;</P>
<P>前缀&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 描述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子</P>
<P>ch&nbsp;&nbsp;&nbsp; char 8位字符&nbsp;&nbsp;&nbsp; chGrade</P>
<P>ch&nbsp;&nbsp;&nbsp; TCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16位UNICODE类型字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chName</P>
<P>b&nbsp;&nbsp;&nbsp;&nbsp; BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布尔变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bEnabled</P>
<P>n&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 整型（其大小由操作系统决定）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nLength</P>
<P>n&nbsp;&nbsp;&nbsp;&nbsp; UINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号整型（其大小由操作系统决定）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nLength</P>
<P>w&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16位无符号整型&nbsp;&nbsp;&nbsp; wPos</P>
<P>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32位有符号整型&nbsp;&nbsp;&nbsp; lOffset</P>
<P>dw&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32位无符号整型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwRange</P>
<P>p&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ambient memory model pointer 内存模块指针，指针变量&nbsp;&nbsp;&nbsp; pDoc</P>
<P>lp&nbsp;&nbsp;&nbsp;&nbsp; FAR*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpDoc</P>
<P>lpsz&nbsp; LPSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32位字符串指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszName</P>
<P>lpsz&nbsp; LPCSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32位常量字符串指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszName</P>
<P>lpsz&nbsp; LPCTSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32位UNICODE类型常量指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszName</P>
<P>h&nbsp;&nbsp;&nbsp;&nbsp; handle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows对象句柄&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hWnd</P>
<P>lpfn&nbsp; (*fn)()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回调函数指针 Callback Far pointer to CALLBACK function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpfnAbort</P>
<P>&nbsp;</P>
<P>Windows对象名称缩写：</P>
<P>&nbsp;</P>
<P>Windows对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MFC类&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子对象</P>
<P>HWND&nbsp;&nbsp;&nbsp; hWnd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CWnd*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pWnd;</P>
<P>HDLG&nbsp;&nbsp;&nbsp;&nbsp; hDlg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDialog*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDlg;</P>
<P>HDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDC;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDC*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDC;</P>
<P>HGDIOBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hGdiObj;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CGdiObject*&nbsp;&nbsp;&nbsp;&nbsp; pGdiObj;</P>
<P>HPEN&nbsp;&nbsp;&nbsp;&nbsp; hPen;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPen*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pPen; </P>
<P>HBRUSH hBrush;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CBrush*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBrush; </P>
<P>HFONT&nbsp;&nbsp; hFont;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CFont*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pFont; </P>
<P>HBITMAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hBitmap;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CBitmap*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBitmap; </P>
<P>HPALETTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hPalette;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPalette*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pPalette; </P>
<P>HRGN&nbsp;&nbsp;&nbsp;&nbsp; hRgn;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRgn*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pRgn; </P>
<P>HMENU hMenu;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CMenu*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pMenu; </P>
<P>HWND&nbsp;&nbsp;&nbsp; hCtl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CStatic*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStatic; </P>
<P>HWND&nbsp;&nbsp;&nbsp; hCtl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CButton*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBtn;</P>
<P>HWND&nbsp;&nbsp;&nbsp; hCtl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CEdit*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEdit; </P>
<P>HWND&nbsp;&nbsp;&nbsp; hCtl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CListBox*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pListBox;</P>
<P>HWND&nbsp;&nbsp;&nbsp; hCtl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CComboBox*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pComboBox;</P><img src ="http://www.cppblog.com/oosky/aggbug/693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oosky/" target="_blank">任我行</a> 2005-10-17 14:48 <a href="http://www.cppblog.com/oosky/archive/2005/10/17/693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>