<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>A－初学 VC</title><link>http://blog.vckbase.com/zuilang/category/639.html</link><description>初学vc的常见问题。 
vc难，vc入门难，真的是这样吗？我发现各种各样的入门教材都不太符合入门者的思维，因为这些教材的编写者不是入门者！我是一个正在入门的（可能抬举自己了，也许根本就还没入门：）），因此我想我写的东西可能对某一部分人比较有用。</description><managingEditor>zuilang</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>zuilang</dc:creator><title>ZT：Viusal Studio 2005各版本的简要说明（附英文版BT下载种子）</title><link>http://blog.vckbase.com/zuilang/archive/2006/12/31/23777.html</link><pubDate>Sun, 31 Dec 2006 00:51:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2006/12/31/23777.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/23777.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2006/12/31/23777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/23777.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/23777.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;转载自&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;A href="http://blog.csdn.net/kendiv/"&gt;Kendiv&lt;SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN lang=EN-US&gt;的专栏&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;A href="http://blog.csdn.net/Kendiv/archive/2005/04/30/369223.aspx"&gt;Viusal Studio 2005&lt;SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN lang=EN-US&gt;各版本的简要说明&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: red"&gt;Visual Studio 2005 Express Edition&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Express&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;系列版本是最低一级的版本，这些版本针对具体的语言，如&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual C++ Express Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual C# Express Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;等，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Express&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版本非常适合第一次接触软件和网站开发的人。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: red"&gt;Visual Studio 2005 Standard Edition&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;Standard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版是相应&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Express&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的更高一级的版本，拥有更多的特性（如类设计工具等），这些&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Standard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版的组合就构成了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Standard Edition.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: red"&gt;Visual Studio 2005 Professional Edition&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Professional Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;除拥有&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Standard Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的所有功能外&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还具有一些&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Enterprise Architect Developer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的大部分功能&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: red"&gt;Visual Studio 2005 Team Suite&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;包含&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Professional Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的所有功能&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还包括如下三个版本&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: blue"&gt;Team Edition for Software Architects&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;该版本提供了许多&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之前未商业化的功能&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;例如单元测试和代码分析&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;或是之前没有被整合到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio IDE&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的功能&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;例如&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;profiling&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Managed&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;程序代码分析&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: blue"&gt;Team Edition for Software Developers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;该版本提供得分布式系统设计工具&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(Distributed System Designers)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;属于&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;进行中的一项大型计划，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Dynamic Systems Initiative&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。这些设计工具和相应的工具代表的是第一波用来辅助设计和部署&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;service-oriented&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;应用程序的工具。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: blue"&gt;Team Edition for Software Testers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;该版本是供专业软件测试工程师使用的，包含了管理测试的功能、执行负载和压力测试、管理负载测试代理人、和整合&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Virtual Server 2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;达到机器虚拟化。为了增进负载测试的能力，测试经理可以通过购买&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Team Test Load Agent&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;增加更多的负载测试代理人。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上述的三个版本中均包含有&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Tools for the Microsoft Office System Visual Studio 2005 Team Foundation Server&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这是&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现团队开发的重要核心。通过高度整合的核心服务，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供版本控制&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(version control)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，工作項目追踪&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(work item tracking)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，和自动构建&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(build automation)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。此外，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;整合了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Windows SharePoint Services&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来提供门户网站和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;SQL Server Reporting Services&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;拉提供专业的报表，为团队开发和沟通提供了最佳的解决方案。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;补充：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;SQL Server&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;采用的模式类似，客户端需要&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Client Access License (CAL)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来连结&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。每一&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;产品都包含了一个&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt; CAL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Explorer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。对于那些需要所有&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;产品安装在同一机器的人来说会有&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Team Suite&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可供选择，将三个&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;产品整合为一。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;此外，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Professional Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005 Standard Edition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的使用者也可以购买&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server CAL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;透过&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt; Team Explorer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来整合&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的功能。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;你可以购买&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server CAL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;然后使用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Explorer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;与&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio .NET 2003&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;或是较早版本的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并存使用。虽然你没办法享受&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Visual Studio 2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的整合开发功能，但是你仍可以获得&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Team Foundation Server&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的核心功能，例如版本控制和工作项目追踪。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;转载完之后，附上&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;VS2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;英文版的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;BT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下载种子，不知道速度如何？不行就用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;emule&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;吧&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;BT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;种子说明：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;顺带把&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;SQL server 2005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也放进去了，不过我用迅雷下载速度很快&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;添加如下服务器：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;http://mongo56.org:3535/announce &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;http://bittorrent-support.com:2710/announce &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;http://tracker.prq.to/announce&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;http://bt.5qzone.net:8080/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;包括&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Microsoft.SQL.Server.2005.Developer.Edition&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Microsoft.SQL.Server.2005.Enterprise.Edition.64-bit&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Microsoft.SQL.Server.2005.Enterprise.Edition&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Microsoft.Visual.Studio.2005.Team.Edition.For.Software.Developers&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Microsoft.Visual.Studio.2005.Professional.Edition&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;种子下载：&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;A href="http://blog.vckbase.com/Files/zuilang/vs.net2005英文版bt种子.rar"&gt;http://blog.vckbase.com/Files/zuilang/vs.net2005&lt;SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN lang=EN-US&gt;英文版&lt;/SPAN&gt;&lt;/SPAN&gt;bt&lt;SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN lang=EN-US&gt;种子&lt;/SPAN&gt;&lt;/SPAN&gt;.rar&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/23777.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>写给初学者：一个调试、利用msdn的经典例子</title><link>http://blog.vckbase.com/zuilang/archive/2006/06/14/20786.html</link><pubDate>Wed, 14 Jun 2006 11:51:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2006/06/14/20786.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/20786.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2006/06/14/20786.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/20786.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/20786.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编程序最重要的是什么？除非你是天才，否则的话，我认为最重要的是学会调试、找出问题所在并解决问题，而不是一开始就写出一些成功的代码，甚至一般人看不懂的代码（这些人一般都是天才，当然，也有可能是写了无数次的熟练工）。看过&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;n&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;多的人学了几年编程都不会调试，也罗嗦了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;n&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;次，现在正好&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;copy&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个别人的代码，其中解决一个小错误的过程希望拿来让初学者学习。既然是给初学者学习的，当中不会有太复杂的东西，不会有复杂的调试过程，甚至可以说没有逻辑错误。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;好，开始！环境为&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;vc6.0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，现象就是编译没有错误，运行出错（初学者最经常这么说了），具体来说就是运行程序（对话框工程），点击一个按钮，然后弹出一个错误对话框：&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&amp;#8221;0x00401422&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;指令引用的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&amp;#8221;0x00000008&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;内存。该内存不能为&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&amp;#8221;read&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。从这个对话框，你能指望初学者看出什么东西呢？不会调试的话，还能怎么解决呢？&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;1，&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt"&gt;加断点找出错误代码行&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;既然是点击按钮就出错，不妨认为出错的代码在该按钮所在的响应函数，最简单的就是每一行都按&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F9&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;加上断点，当然，如果代码很多行，也可以隔若干行加一个断点然后&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F5&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;开始调试。&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F5&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调试时程序会运行到断点所在行之前的一行，然后停在断点所在行，如下所示，数字代表代码所在行：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.55pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-char-indent-count: 3.1; mso-char-indent-size: 10.5pt; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;01&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: blue; mso-font-kerning: 0pt"&gt;struct&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt; protoent *ppe; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe=getprotobyname(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"tcp"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;03&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;m_s=socket(PF_INET,SOCK_STREAM,ppe-&amp;gt;p_proto);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;04&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: blue; mso-font-kerning: 0pt"&gt;if&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;(m_s==INVALID_SOCKET)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;05&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;06&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MessageBox(NULL,&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"socket()&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;函数执行失败&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;!"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;,&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;错误&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;,MB_OK);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;07&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: blue; mso-font-kerning: 0pt"&gt;return&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt; FALSE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;08&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;B&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: red; mso-font-kerning: 0pt"&gt;09&lt;/SPAN&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: blue; mso-font-kerning: 0pt"&gt;return&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt; TRUE;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当程序运行，停在断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;时，继续&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F5&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调试，此时出来一个出错对话框：&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT color=#ff0000&gt;Unhandled exception in test.exe : 0xC00000005 : Access Violation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，刚入门的最怕这个错误了吧？看不懂？基础差？英语不过关？都没关系（只是暂时没关系），借助英汉字典或者翻译软件你最起码知道&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Unhandled exception&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的大概意思是&amp;#8220;未处理的例外情况，异常&amp;#8221;（注：这些翻译我都是特意找软件翻译的），翻译不准确没关系，大概知道是这个意思就行了；&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;0xC00000005&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;你应该猜测到是内存地址，猜不到也不重要；&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Access Violation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;按照前面说的你也应该知道大概是&amp;#8220;访问违例&amp;#8221;的意思；整个句子的意思大概就是出现了非法访问某个内存地址的异常。知道了出错的现象了，我们就可以检查断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;B&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之间的代码，此时最起码可以知道出错的代码行是&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;02&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;08&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;09&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还没有运行。其实我们也无需一个一个的去检查，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;shift+F5&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;停止此次&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;debug&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，然后重新开始直到断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，改用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F10&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;单步执行（即使没有断点也会一行一行的执行代码），我们发现那个黄色的箭头移动到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;03&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（表示&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;02&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;已执行，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;03&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;准备执行），一切正常，然后继续&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F10&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;执行&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;03&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，错误现象重现，错误代码行在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;03&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;2，&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt"&gt;检查错误代码行&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;我们分析错误代码行：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;m_s=socket(PF_INET,SOCK_STREAM,ppe-&amp;gt;p_proto);&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;当然也要分析前面跟它联系密切的行。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;m_s&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;是一个变量，&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;socket&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;是一个函数（你甚至不需要弄懂它是干什么的，）&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;PF_INET&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;SOCK_STREAM&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;是系统&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;define&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的一个东西（把光标放置在它上面&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;vc&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;就会有提示），可以理解是系统给出的一个固定的值，显然也不容易出错，剩下最后一个参数&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe-&amp;gt;p_proto&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，一个指针指向一个变量。指针？出错的地址？如果你学过&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;C/C++&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;这两个东西你应该联想的到。难道是这里出了问题？先看&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;由&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;01&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行定义，自然不会错，由&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行赋值，此时我们应该可以怀疑是否赋值成功，也就是说&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;getprotobyname(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"tcp"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;是否产生了一个正确的返回值并赋值给&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;？同样通过调试解决问题。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;程序运行到断点&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;A&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，此时我们应该看看&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的值是什么，可以在&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口（如果没有，在&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;vc&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;菜单栏点右键选择&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;打开）看到它的值是&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;0xcccccccc&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，这个值是什么，怎么得来的现在不用管。尽管&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口可以查看到它的值，我还是建议你在&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;watch&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口亲自输入查看，因为&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口只能查看当前相关的变量的值。如果你的&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;vc&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;没有显示&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;watch&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口，使用打开&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;窗口的方法打开，然后双击&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;列下面的单元格输入&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;就会显示它的值。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;F10&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;执行&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行，此时发现&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的值是&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;0x00000000&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，这是一个空指针，&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行相当于&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;ppe=NULL;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;我们在&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;03&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;使用了&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;ppe-&amp;gt;p_proto&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;自然会出错。所以，虽然&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行正确运行，&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;03&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行出错，但其实我们要修改的是&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行，因为&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行正确运行但得出一个错误的结果。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;3，&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt"&gt;使用&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;MSDN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;虽然知道&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;getprotobyname(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #000077; mso-font-kerning: 0pt"&gt;"tcp"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;出错，但是我们不知道&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;getprotobyname&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数是干什么的，好办，把光标放置在这个函数上面，按&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;F1&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调出&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MSDN&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（我一直没有更新，用的是随&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;vs6&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;发行的那个版本），直接找到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;getprotobyname&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。既然我们知道了它返回一个相当于&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;NULL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的东西，我们就先看它的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Return Values&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（其它内容可以不看，尽管我不推荐你这么做，但在这里你可以暂时这么做）：&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 style="MARGIN: auto 0cm; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;Return Values&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P style="LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;If no error occurs, &lt;B&gt;getprotobyname&lt;/B&gt; returns a pointer to the &lt;B&gt;PROTOENT&lt;/B&gt;. Otherwise, it returns a NULL pointer and a specific error number can be retrieved by calling &lt;B&gt;WSAGetLastError&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;大概意思是说：如果没有错误发生，它返回一个指向&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;PROTOENT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的指针，否则返回一个空指针和一个特定的错误数字，该错误数字可以通过调用&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN lang=EN-US&gt;WSAGetLastError&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;获得。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;现在只要我们获得这个错误数字，就可以知道错误发生的原因了，因为&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MSDN&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;紧接着列出了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;：&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 style="MARGIN: auto 0cm; LINE-HEIGHT: 200%"&gt;&lt;FONT face=宋体&gt;&lt;SPAN lang=EN-US&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: normal"&gt;（&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;这里只列出&lt;SPAN lang=EN-US&gt;2个说明问题&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: normal"&gt;）&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN-LEFT: 32.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=157&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;WSANOTINITIALISED&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 233.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=311&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;A successful &lt;B&gt;WSAStartup&lt;/B&gt; must occur before using this function.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=157&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;WSAENETDOWN&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 233.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=311&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;The network subsystem has failed.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很可惜这里用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WSANOTINITIALISED&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这些东西来代替了数字，不管如何，先得到数字再说在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;02&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;行代码后面添加一行代码：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: blue; mso-font-kerning: 0pt"&gt;int&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt; nErrno=WSAGetLastError();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;然后继续调试，执行完&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行后，光标停在新的&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;03&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行代码，继续&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;F10&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，得到&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;nErrno &lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的值&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;10093&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，也就是错误数字，这个数字表示什么意思呢？怎么和&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;联系起来？还是要利用&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;msdn&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，在&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;msdn&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的索引里输入&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;，双击第一项，出来很多&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的主题，我们这个程序是&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;socket&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;相关，当然是找位于&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;Windows Sockets&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;的那一个啦，双击进入。好好看看第一段：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;The following is a list of possible error codes returned by the &lt;B&gt;WSAGetLastError&lt;/B&gt; call, along with their extended explanations. Errors are listed in alphabetical order by error macro. Some error codes defined in WINSOCK2.H are not returned from any function - these have not been listed here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;其实不看关系也不是很大，主要是找到&lt;SPAN lang=EN-US&gt;10093：&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left&gt;&lt;B&gt;&lt;SPAN lang=EN-US&gt;WSANOTINITIALISED&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: 200%"&gt;&lt;B&gt;&lt;SPAN lang=EN-US&gt;(10093)&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: 200%"&gt;&lt;I&gt;&lt;SPAN lang=EN-US&gt;Successful WSAStartup not yet performed.&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;Either the application hasn't called &lt;B&gt;WSAStartup&lt;/B&gt; or &lt;B&gt;WSAStartup&lt;/B&gt; failed. The application may be accessing a socket which the current active task does not own (i.e. trying to share a socket between tasks), or &lt;B&gt;WSACleanup&lt;/B&gt; has been called too many times. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这一段应该不难看懂吧？实在不行就找东西翻译，再结合前面那个表提到的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Error Codes&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，我知道了原来是我&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;copy&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码时露掉了执行&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WSAStartup&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的这一段。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;4，&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt"&gt;修正错误&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: red; mso-bidi-font-size: 12.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;首先把露掉的代码&lt;SPAN lang=EN-US&gt;copy过来：&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #009900; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #009900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;初始化&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #009900; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;Socket&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #009900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;函数库&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;int&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt; err;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;WORD wVersion;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;WSADATA WSAData;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wVersion=MAKEWORD(2,0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;err=WSAStartup(wVersion,&amp;amp;WSAData);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;if&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;(err!=0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AfxMessageBox(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;无法装载&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;Socket&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;库&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;."&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;if&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;(LOBYTE( WSAData.wVersion ) != 2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AfxMessageBox(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;无法找到合适的&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;Socket&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;库&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;."&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;WSACleanup();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"&gt;&lt;FONT face=宋体&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;同样的，一些收尾的工作也加上（这些都不是本篇文章的重点了）：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #009900; mso-font-kerning: 0pt"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: #009900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;清除&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: #009900; mso-font-kerning: 0pt"&gt;Socket&lt;/SPAN&gt;&lt;SPAN style="COLOR: #009900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;库&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;WSACleanup();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;原先的错误代码也要修改，修改&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;02&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;行即可，一个对于初学者来说最朴素的修改是这样的：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;if&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;(!(ppe=getprotobyname(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;"tcp"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;))) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;int&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt; nErrno=WSAGetLastError();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;CString strErrno;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;strErrno.Format(&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;"getprotobyname()&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;函数执行失败&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000077; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;错误代号是：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #000077; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;%d"&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;,nErrno);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AfxMessageBox(strErrno);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;return&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt; FALSE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-font-kerning: 0pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"&gt;费了很大的劲写这篇文章，希望能给初学者一点启发（最起码不能有误导，哪位高手要是感觉有误导的倾向，请提出宝贵意见），下次再有人问我调试是怎么回事事，我就给他看这篇文章。&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/20786.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>由UpdateData(FALSE)想到的窗口刷新问题</title><link>http://blog.vckbase.com/zuilang/archive/2006/02/25/17980.html</link><pubDate>Sat, 25 Feb 2006 07:34:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2006/02/25/17980.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/17980.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2006/02/25/17980.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/17980.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/17980.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;zuilang&lt;BR&gt;&lt;/A&gt;一，前言&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有网友提醒我：&amp;#8220;在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MSDN&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;裡面能找到的東西，再寫&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;BLOG&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是要被罵的。&amp;#8221;确实，全抄&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MSDN&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;没有一点意思，但加一点自己的理解，或许对初学者有一点用。因此，首先声明，本文适合&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MFC&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;初学者。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;二，前提知识&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;1&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 6.5pt"&gt;请看&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-size: 6.5pt"&gt; &lt;SPAN lang=EN-US&gt;&lt;A href="http://blog.vckbase.com/zuilang/archive/2005/11/03/14431.html"&gt;&lt;STRONG&gt;&lt;SPAN style="BACKGROUND: white; COLOR: navy; FONT-FAMILY: 宋体; TEXT-DECORATION: none; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; text-underline: none"&gt;关于窗口重绘的初级问题&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;2&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;关于&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;InvalidateRect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateWindow&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;以下资料来源不祥，似乎是&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;vckbase&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;讨论的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不保证每一句都正确，如有错误，请指出&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;(1)Invalidate&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;标记一个需要重绘的无效区域，并不意味着调用该函数后就立刻进行重绘。类似于&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;PostMessage(WM_PAINT)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，需要处理到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息时才真正重绘。以为您&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之后还有其他的语句正在执行，程序没有机会去处理&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息，但当函数执行完毕后，消息处理才得以进行。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;只是放一个&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息在队列里，不做别的，所以只有当当前函数返回后，进入消息循环，取出&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，才执行&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，所以不管&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;放函数哪个地方，（作用相当于）都是（放在）最后的（但并不是推荐你一律放在函数最后一行）。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invalidate()&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之后：&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;...OnPaint()-&amp;gt;OnPrepareDC()-&amp;gt;OnDraw()&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，所以只是刷新在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnPaint()&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw()&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数中的绘图语句。其它地方没有影响。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;(2)InvalidateRect&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InvalidateRect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;只是增加重绘区域，在下次&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的时候才生效&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;,InvalidateRect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数中的参数&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;TRUE&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;表示系统会在你画之前用背景色将所选区域覆盖一次，默认背景色为白色，可以通过设置&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;BRUSH&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来改变背景色。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InvalidateRect(hWnd,&amp;amp;rect,TRUE);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;向&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;hWnd&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;窗体发出&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的消息，强制客户区域重绘制，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;rect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是你指定要刷新的区域，此区域外的客户区域不被重绘，这样防止客户区域的一个局部的改动，而导致整个客户区域重绘而导致闪烁，如果最后的参数为&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;TRUE&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，则还向窗体发送&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_ERASEBKGND&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息，使背景重绘，当然在客户区域重绘之前。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;(3)UpdateWindow&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UpdateWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;只向窗体发送&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息，在发送之前判断&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;GetUpdateRect(hWnd,NULL,TRUE)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;看有无可绘制的客户区域，如果没有，则不发送&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。如果希望立即刷新无效区域，可以在调用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;InvalidateRect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之后调用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，如果客户区的任一部分无效，则&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将导致&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Windows&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息调用窗口过程（如果整个客户区有效，则不调用窗口过程）。这一&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;消息不进入消息队列，直接由&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WINDOWS&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调用窗口过程。窗口过程完成刷新以后立刻退出，&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WINDOWS&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将控制返回给程序中&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调用之后的语句。&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;(windows&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;程序设计第&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;5&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt; P98)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;三，问题&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;初学者很容易碰到下面这个问题：（其中&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;m_nEdit&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个编辑框的&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;型成员变量）&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CTestDlg::OnButton1() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your control notification handler code here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for(int i=0;i&amp;lt;10;i++)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_nEdit=i;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UpdateData(FALSE);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;程序运行的结果是，编辑框里面直接就显示了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;9&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，是程序运行太快了看不清楚吗？改：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CTestDlg::OnButton1() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your control notification handler code here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for(int i=0;i&amp;lt;10;i++)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_nEdit=i;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Sleep(1000);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UpdateData(FALSE);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;程序开始没有变化，静静运行了一会，直接显示&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;9&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;！看来不是显示太快的原因。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;四，思考&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;因为&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateData(FALSE)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是更新窗口（编辑框也是窗口）的内容，当然也会更新窗口的&amp;#8220;画面&amp;#8221;，那么，是不是也是跟&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Invalidate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;InvalidateRect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一样的问题呢？尝试一下：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CTestDlg::OnButton1() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your control notification handler code here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for(int i=0;i&amp;lt;10;i++)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_nEdit=i;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Sleep(100);//&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;去掉这一句在这里确实因为显示太快而看不清。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UpdateData(FALSE);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UpdateWindow();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;终于得到我们要的结果了&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;^_^&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。那么&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateData(FALSE)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到底做了什么？想了解，就去看深入浅出&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;MFC&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;五，后记&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其实通常的解决方法不会使用&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Sleep&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;UpdateWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。使用定时器或者新开一个线程效果会更好。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/17980.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>如何同时使用鼠标单击、双击事件？</title><link>http://blog.vckbase.com/zuilang/archive/2006/02/22/17895.html</link><pubDate>Wed, 22 Feb 2006 07:36:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2006/02/22/17895.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/17895.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2006/02/22/17895.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/17895.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/17895.html</trackback:ping><description>作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;zuilang&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;在网上搜索了一下，基本上就是这两个方法：&lt;BR&gt;1，不直接使用这两个消息，拦截消息处理&lt;BR&gt;重载PreTranslateMessage函数&lt;BR&gt;例如：&lt;BR&gt;BOOL &amp;nbsp; CTestView::PreTranslateMessage(MSG* &amp;nbsp; pMsg) &amp;nbsp; &lt;BR&gt;{&lt;BR&gt;// &amp;nbsp; TODO: &amp;nbsp; Add &amp;nbsp; your &amp;nbsp; specialized &amp;nbsp; code &amp;nbsp; here &amp;nbsp; and/or &amp;nbsp; call &amp;nbsp; the &amp;nbsp; base &amp;nbsp; class&lt;BR&gt;if(pMsg-&amp;gt;hwnd==.......)//判断事件的发生区域，注意，也可能是某个窗口内某个区域。&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(pMsg-&amp;gt;message==WM_LBUTTONDBLCLK)//判断是否为双击&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;DoDBlCLKFun();//双击功能函数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(pMsg-&amp;gt;message==WM_LBUTTONDOWN)//判断是否为单击&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;DoDOWNFun();//单击功能函数&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;return &amp;nbsp; CFormView::PreTranslateMessage(pMsg);&lt;BR&gt;} &lt;BR&gt;2，利用鼠标双击的时间间隔（用GetDoubleClickTime取得）及定时器自己判断是单击还是双击。&lt;BR&gt;&lt;BR&gt;总觉得别扭，难道没有更好的方法？&lt;BR&gt;&lt;BR&gt;后来一想，第一个方法是不行的，其实还是需要定时器，上面两个方法结合起来吧&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/17895.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>出现频率最高的笔试题strcpy写法（ZT）</title><link>http://blog.vckbase.com/zuilang/archive/2006/02/20/17856.html</link><pubDate>Mon, 20 Feb 2006 13:54:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2006/02/20/17856.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/17856.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2006/02/20/17856.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/17856.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/17856.html</trackback:ping><description>出现频率最高的笔试题strcpy写法&lt;BR&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;BR&gt;作者:&lt;A href="http://bbs.chinaunix.net/viewpro.php?uid=9331" target=_blank&gt;HopeCao&lt;/A&gt;&amp;nbsp;&amp;nbsp;发表于：2003-09-11 11:04:03&lt;BR&gt;出处：&lt;A href="http://www.chinaunix.net/jh/23/25356.html"&gt;http://www.chinaunix.net/jh/23/25356.html&lt;/A&gt;&lt;BR&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;BR&gt;&lt;BR&gt;题目： &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;已知strcpy函数的原型是： &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*&amp;nbsp;strcpy(char&amp;nbsp;*&amp;nbsp;strDest,const&amp;nbsp;char&amp;nbsp;*&amp;nbsp;strSrc); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.不调用库函数，实现strcpy函数。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.解释为什么要返回char&amp;nbsp;*。 &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解说： &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.strcpy的实现代码 &lt;BR&gt;&lt;PRE&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*&amp;nbsp;strcpy(char&amp;nbsp;*&amp;nbsp;strDest,const&amp;nbsp;char&amp;nbsp;*&amp;nbsp;strSrc)
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((strDest==NULL)||(strSrc==NULL))&amp;nbsp;//[1]
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;"Invalid&amp;nbsp;argument(s)";&amp;nbsp;//[2]
&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;char&amp;nbsp;*&amp;nbsp;strDestCopy=strDest;&amp;nbsp;&amp;nbsp;//[3]
&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;while&amp;nbsp;((*strDest++=*strSrc++)!='\0');&amp;nbsp;//[4]
&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;return&amp;nbsp;strDestCopy;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;BR&gt;&lt;/PRE&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;错误的做法： &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[1] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(A)不检查指针的有效性，说明答题者不注重代码的健壮性。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&amp;amp;&amp;amp;strSrc))，说明答题者对C语言中类型的隐式转换没有深刻认识。在本例中char&amp;nbsp;*转换为bool即是类型隐式转换，这种功能虽然灵活，但更多的是导致出错概率增大和维护成本升高。所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(C)检查指针的有效性时使用((strDest==0)||(strSrc==0))，说明答题者不知道使用常量的好处。直接使用字面常量（如本例中的0）会减少程序的可维护性。0虽然简单，但程序中可能出现很多处对指针的检查，万一出现笔误，编译器不能发现，生成的程序内含逻辑错误，很难排除。而使用NULL代替0，如果出现拼写错误，编译器就会检查出来。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[2] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(A)return&amp;nbsp;new&amp;nbsp;string("Invalid&amp;nbsp;argument(s)");，说明答题者根本不知道返回值的用途，并且他对内存泄漏也没有警惕心。从函数中返回函数体内分配的内存是十分危险的做法，他把释放内存的义务抛给不知情的调用者，绝大多数情况下，调用者不会释放内存，这导致内存泄漏。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(B)return&amp;nbsp;0;，说明答题者没有掌握异常机制。调用者有可能忘记检查返回值，调用者还可能无法检查返回值（见后面的链式表达式）。妄想让返回值肩负返回正确值和异常值的双重功能，其结果往往是两种功能都失效。应该以抛出异常来代替返回值，这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[3] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(A)忘记保存原始的strDest值，说明答题者逻辑思维不严密。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(A)循环写成while&amp;nbsp;(*strDest++=*strSrc++);，同[1](B)。 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(B)循环写成while&amp;nbsp;(*strSrc!='\0')&amp;nbsp;*strDest++=*strSrc++;，说明答题者对边界条件的检查不力。循环体结束后，strDest字符串的末尾没有正确地加上'\0'。 &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.返回strDest的原始值使函数能够支持链式表达式，增加了函数的&amp;#8220;附加值&amp;#8221;。同样功能的函数，如果能合理地提高的可用性，自然就更加理想。 &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;int&amp;nbsp;iLength=strlen(strcpy(strA,strB)); &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;char&amp;nbsp;*&amp;nbsp;strA=strcpy(new&amp;nbsp;char[10],strB); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;返回strSrc的原始值是错误的。其一，源字符串肯定是已知的，返回它没有意义。其二，不能支持形如第二例的表达式。其三，为了保护源字符串，形参用const限定strSrc所指的内容，把const&amp;nbsp;char&amp;nbsp;*作为char&amp;nbsp;*返回，类型不符，编译报错。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;部分回复：&lt;BR&gt;&lt;A href="http://bbs.chinaunix.net/viewpro.php?uid=62007" target=_blank&gt;&lt;STRONG&gt;Joran&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; 回复于：2003-08-13 19:55:03&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;呵呵,CSDN上的 &lt;BR&gt;&lt;PRE&gt;&lt;BR&gt;/*&amp;nbsp;the&amp;nbsp;emplementation&amp;nbsp;in&amp;nbsp;VC++&amp;nbsp;*/
&lt;BR&gt;char*&amp;nbsp;strcpy(char*&amp;nbsp;dest,&amp;nbsp;const&amp;nbsp;char*&amp;nbsp;src)
&lt;BR&gt;{
&lt;BR&gt;	char*&amp;nbsp;tmp&amp;nbsp;=&amp;nbsp;dest;
&lt;BR&gt;	
&lt;BR&gt;	while&amp;nbsp;(*tmp++&amp;nbsp;=&amp;nbsp;*src++)
&lt;BR&gt;		;
&lt;BR&gt;	
&lt;BR&gt;	return&amp;nbsp;dest;
&lt;BR&gt;}
&lt;BR&gt;
&lt;BR&gt;/*&amp;nbsp;the&amp;nbsp;emplementation&amp;nbsp;in&amp;nbsp;Linux&amp;nbsp;*/
&lt;BR&gt;char*&amp;nbsp;strcpy(char*&amp;nbsp;dest,&amp;nbsp;const&amp;nbsp;char*&amp;nbsp;src)
&lt;BR&gt;{
&lt;BR&gt;	char*&amp;nbsp;tmp&amp;nbsp;=&amp;nbsp;dest;
&lt;BR&gt;
&lt;BR&gt;	while&amp;nbsp;((*tmp++&amp;nbsp;=&amp;nbsp;*src++)&amp;nbsp;!=&amp;nbsp;'\0')
&lt;BR&gt;		;
&lt;BR&gt;
&lt;BR&gt;	return&amp;nbsp;dest;
&lt;BR&gt;}&lt;BR&gt;
&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;A href="http://bbs.chinaunix.net/viewpro.php?uid=77674" target=_blank&gt;&lt;STRONG&gt;quanliking&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; 回复于：2003-08-23 01:23:49&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;引用：&lt;I&gt;&lt;U&gt;原帖由&amp;nbsp;"Joran"]&lt;/I&gt;&lt;BR&gt;&amp;nbsp;发表：&lt;/U&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;引用有错误,贴这种教课书式的代码，还是得严谨些。 &lt;BR&gt;Linux&amp;nbsp;下的定义是这样的： &lt;BR&gt;/usr/lib/string.h &lt;BR&gt;&lt;PRE&gt;&lt;BR&gt;&amp;nbsp;string.h:
&lt;BR&gt;char&amp;nbsp;*strcpy&amp;nbsp;(char&amp;nbsp;*__restrict&amp;nbsp;__dest,&amp;nbsp;__const&amp;nbsp;char&amp;nbsp;*__restrict&amp;nbsp;__src)
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__THROW;
&lt;BR&gt;&lt;/PRE&gt;&lt;BR&gt;/usr/src/linux-2.6.0-test3/lib/string.c &lt;BR&gt;&lt;PRE&gt;&lt;BR&gt;/**
&lt;BR&gt;&amp;nbsp;*&amp;nbsp;strcpy&amp;nbsp;-&amp;nbsp;Copy&amp;nbsp;a&amp;nbsp;%NUL&amp;nbsp;terminated&amp;nbsp;string
&lt;BR&gt;&amp;nbsp;*&amp;nbsp;@dest:&amp;nbsp;Where&amp;nbsp;to&amp;nbsp;copy&amp;nbsp;the&amp;nbsp;string&amp;nbsp;to
&lt;BR&gt;&amp;nbsp;*&amp;nbsp;@src:&amp;nbsp;Where&amp;nbsp;to&amp;nbsp;copy&amp;nbsp;the&amp;nbsp;string&amp;nbsp;from
&lt;BR&gt;&amp;nbsp;*/
&lt;BR&gt;char&amp;nbsp;*&amp;nbsp;strcpy(char&amp;nbsp;*&amp;nbsp;dest,const&amp;nbsp;char&amp;nbsp;*src)
&lt;BR&gt;{
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*tmp&amp;nbsp;=&amp;nbsp;dest;
&lt;BR&gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;((*dest++&amp;nbsp;=&amp;nbsp;*src++)&amp;nbsp;!=&amp;nbsp;'\0')
&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;nothing&amp;nbsp;*/;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;tmp;
&lt;BR&gt;}
&lt;BR&gt;&lt;/PRE&gt;&lt;BR&gt;在&amp;nbsp;string.h&amp;nbsp;中有&amp;nbsp;__THROW&amp;nbsp;这个宏,我们来查看一下在哪里定义的： &lt;BR&gt;$&amp;nbsp;grep&amp;nbsp;__THROW&amp;nbsp;/usr/include/*.h&amp;nbsp;|grep&amp;nbsp;define &lt;BR&gt;&lt;PRE&gt;&lt;BR&gt;...
&lt;BR&gt;usr/include/malloc.h:#&amp;nbsp;&amp;nbsp;define&amp;nbsp;__THROW&amp;nbsp;throw&amp;nbsp;()
&lt;BR&gt;...
&lt;BR&gt;&lt;/PRE&gt;&lt;BR&gt;而且几乎每个预处理指令都由&amp;nbsp;__THROW&amp;nbsp;来处理，可以这样查看： &lt;BR&gt;$&amp;nbsp;grep&amp;nbsp;-R&amp;nbsp;__THROW&amp;nbsp;/usr/include/*&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;"#" &lt;BR&gt;&lt;BR&gt;linux&amp;nbsp;里的和高质量C/C++&amp;nbsp;里的其实是一样的，除了异常处理哪里稍不同而已。&lt;BR&gt;&lt;BR&gt;&lt;TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;B&gt;&lt;A href="http://bbs.chinaunix.net/viewpro.php?uid=43673" target=_blank&gt;hangne&lt;/A&gt; 回复于：2003-09-11 11:04:03&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;引用：&lt;I&gt;&lt;U&gt;原帖由&amp;nbsp;"HopeCao"&amp;nbsp;发表：&lt;/U&gt;&lt;BR&gt;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;返回strSrc的原始值是错误的。其一，源字符串肯定是已知的，返回它没有意义。其二，不能支持形如第二例的表达式。其三，为了保护源字符串，形参用const限定strSrc所指的内容，把const&amp;nbsp;char&amp;nbsp;*作为char&amp;nbsp;*返回?.........&lt;/I&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD bgColor=#747474 height=1&gt;&lt;IMG height=1 src="http://image2.sina.com.cn/c.gif" width=1&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;BR&gt;原文链接：&lt;A href="http://bbs.chinaunix.net/viewthread.php?tid=25356"&gt;http://bbs.chinaunix.net/viewthread.php?tid=25356&lt;/A&gt;&lt;BR&gt;转载请注明作者名及原文出处&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/PRE&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/17856.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>关于窗口重绘的初级问题</title><link>http://blog.vckbase.com/zuilang/archive/2005/11/03/14431.html</link><pubDate>Thu, 03 Nov 2005 11:46:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/11/03/14431.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/14431.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/11/03/14431.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/14431.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/14431.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;zuilang&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;关于窗口重画的初级问题&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;既然是初级问题，我尽量少说一点原理，并且使用通俗易懂的话。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;初初级问题：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;我在视图画的图象或者文字，当窗口改变后（包括最小化后还原，被别的窗口挡住后重新显示等）为什么不见了？&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这就是窗口重绘或者说重画的问题。当窗口改变后，会产生无效区域，这个无效的区域需要重画。什么是无效区域？自己到网上搜索或者看相关资料。我这里给出一个特殊的解释：以最小化后还原为例，假设只有一个程序在运行，窗口最小化时显示计算机桌面，并不妨假设桌面是蓝色的背景，当窗口还原时，窗口所占的这一块区域该显示些什么东西呢？操作系统并不知道，因此，就形成一块无效区域。要是我们告诉操作系统，显示一个红方块，于是它就显示一个红方块，我们的程序过一会想显示一个绿方块呢？同样也要告诉它。在哪里告诉它呢？在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;或&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnPaint&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数这里（这里不准备讨论他们的区别，并且只关注&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数在什么时候执行呢？在存在无效区域窗口需要重绘时执行。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面开始做例子（为简化程序，不显示方块显示线条），建立一个&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;SDI&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;工程，并添加一个菜单项&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;DrawLine&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，添加&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDrawline&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;显示线条&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A(20,20,50,50)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDrawline() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your command handler code here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CClientDC dc(this);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dc.MoveTo(20,20);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dc.LineTo(50,50);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编译运行，出现一个线条，最小化还原，没有了。更改&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;显示线条&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;B(100,100,70,70)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDraw(CDC* pDC)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CDrawDoc* pDoc = GetDocument();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT_VALID(pDoc);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: add draw code for native data here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;MoveTo(100,100);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;LineTo(70,70);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;运行，最小化还原，你会发现线条&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;B&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一直存在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;线条&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;没有了。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到这里，你应该有一个疑问：我们新建一个&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;SDI&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;程序，什么都没做啊，为什么这个时候还是能显示菜单，框架这些东西？我们并没有告诉操作系统要显示什么啊？这是因为一般&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;Windows&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会发送两个消息&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_PAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（通知客户区有变化）和&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;WM_NCPAINT&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（通知非客户区有变化）。非客户区的重画系统自己搞定了，而客户区的重画需要我们自己来完成。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;初级问题：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;我要在菜单函数里面画图怎么办？或者说，我希望点击菜单就画图，不想把代码放在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这个问题主要是思路没有转过弯来。其实很简单，在菜单函数里面设置一个开关，然后在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面根据这个开关来决定是否显示就可以了。例如：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;BOOL bShowLineA=FALSE;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDrawline() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your command handler code here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;bShowLineA=TRUE;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invalidate();//&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这个函数暂时只需要知道是用来&amp;#8220;调用&amp;#8221;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数的&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDraw(CDC* pDC)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CDrawDoc* pDoc = GetDocument();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT_VALID(pDoc);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: add draw code for native data here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if(bShowLineA)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;MoveTo(20,20);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;LineTo(50,50);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;单击菜单项&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;DrawLine&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就会画线条&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，当然你还可以再搞一个函数令&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;bShowLineA=FALSE&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;达到删除线条的目的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上述做法存在很大局限：必须事先知道要画什么图。考虑这样一种情况：我们用鼠标画图，鼠标按下时决定开始线条开始点，鼠标弹起时决定结束点并画图。你也许会说，还是可以用上面的做法啊，用变量来代替数字就可以了，例如：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your message handler code here and/or call default&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;start=point;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CView::OnLButtonDown(nFlags, point);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: Add your message handler code here and/or call default&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;end=point;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invalidate();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CView::OnLButtonUp(nFlags, point);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDraw(CDC* pDC)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CDrawDoc* pDoc = GetDocument();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT_VALID(pDoc);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: add draw code for native data here&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;MoveTo(start.x,start.y);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;LineTo(end.x,end.y);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这样的确是可以解决一部分问题，考虑更复杂的情况：画若干条线条，还要画一些圆、正方形，甚至还要显示一行文字。这个时候上面的方法就不太适合了。但原理是一样的：在菜单函数里面计算，保存数据结果，通知系统更新；在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数里面根据新的结果数据进行重画。在菜单函数里面如何保存数据结果呢？可以使用一个结构（或者类）保存在内存里（例如可以使用数组，链表等等方式），也可以把数据保存在一个文件里，然后，在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面读取这个结构（前面说的数组、链表、文件等）的数据进行重画。总之，具体问题具体分析。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;记住一个大原则：画图代码（确切的说是用来显示的代码）放在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;那么，是不是任何时候画图代码都必须要放在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面？也不全是，例如操作的一些中间过程就要放在其他函数。一个经典的例子是用鼠标画直线，并且动态显示中间画图过程，鼠标弹起才最终决定最后的直线。那么，在鼠标移动事件中就要动态的画线了，然后保存最终结果，在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面只需要画这个最终结果就可以了。当然，这个中间过程其实还是可以放到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面来的。特别是一些复杂的图形处理，例如画不规则图形，就需要开一个线程专门用来计算显示画线的过程，这个不在我们讨论范围之内。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;我还发现一个初学者有趣的心理活动，包括我自己也是一样的，就是舍不得在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面放较多的代码。如下：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDraw(CDC* pDC)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CDrawDoc* pDoc = GetDocument();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT_VALID(pDoc);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: add draw code for native data here&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;MoveTo(start.x,start.y);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pDC-&amp;gt;LineTo(end.x,end.y);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;....&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面还有很多的画图的代码。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上面这种情况他们总是担心会不会效率太低了？因为窗口动不动就要刷新，这么多代码会不会太慢了？但是，要是下面这样的代码他们就放心多了：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;void CDrawView::OnDraw(CDC* pDC)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CDrawDoc* pDoc = GetDocument();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT_VALID(pDoc);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// TODO: add draw code for native data here&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;fun();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;fun&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很多很多很多的画图的代码&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;呵呵，有时候我跟别人说，把画图代码放在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面，他们就会认为，每一行代码都放到&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;OnDraw&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里面。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还有一些&amp;#8220;顽固分子&amp;#8221;说，我把画图的代码放在菜单函数里面，然后禁止窗口重画就行了，然后到处去问怎么禁止窗口自动重画。他们都忽略了一个事实，显示器只有一个！他们都把窗口当作一个个的实体了。他们的想法是：把这个窗口画好了，就再也不动了，最小化吗？好办，请工人把这个窗口拿走，就可以看到后面的窗口了，还原，就让工人再搬回来就是了。可事实是：窗口（显示器）永远都只有一个。我们只看显示器里面中间的一个象素点：这个时候，这个点在我们的程序里面是红色的，然后把我们的窗口最小化，这个点并没有随着我们的窗口跑掉啊，它还是在那里，可是下一个窗口是绿色的，你说，这个时候是不是要重新把这个点涂成绿色的？这就是重画。还原时，又要重新把它涂成红色，如此反复。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;觉得太罗嗦，好像还没说清楚，累啊&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;^_^&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"&gt;&lt;SPAN lang=EN-US&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/14431.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>如何查看vc的sp版本</title><link>http://blog.vckbase.com/zuilang/archive/2005/10/16/13336.html</link><pubDate>Sun, 16 Oct 2005 13:13:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/10/16/13336.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/13336.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/10/16/13336.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/13336.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/13336.html</trackback:ping><description>作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;zuilang&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;很多人包括我自己一直都在寻找这个方法，虽然我一直没安装过，也因为一直没碰到什么问题，因此，现在也没打算装。&lt;BR&gt;&lt;BR&gt;方法1：如果你安装了vb，据说可以在&amp;#8220;关于&amp;#8221;里面可以看到，或者在inter dev里面也可以看到。&lt;BR&gt;&lt;BR&gt;方法2：可以通过在工程里面插入一个Registed ActiveX Control，例如Microsoft&amp;nbsp;DataGrid&amp;nbsp;Control&amp;nbsp;6.0&amp;nbsp;(SP5)，不需要真正插入，在这个过程里就可以看见，如果没有安装，可能就没有后面括号里面的SP5等&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;方法3：你还可以通过编程查看&lt;BR&gt;&lt;BR&gt;方法4：看看注册表里的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks\latest&lt;BR&gt;&amp;nbsp; 键值，这是win2000里的注册表键值的 路径，98里可能有所不同&lt;BR&gt;&lt;BR&gt;注：以上方法我一个也没有验证，谁验证了，请评论一下，告诉我一声，谢谢！&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/13336.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>在SDI中实现两幅位图包含遮挡关系的任意拖动</title><link>http://blog.vckbase.com/zuilang/archive/2005/08/31/11707.html</link><pubDate>Wed, 31 Aug 2005 05:39:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/08/31/11707.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/11707.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/08/31/11707.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/11707.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/11707.html</trackback:ping><description>作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;&lt;FONT color=#000080&gt;zuilang&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;应一位网友的要求，简单实现了一下，还不知道有什么用呢。&lt;BR&gt;&lt;BR&gt;&lt;A href="http://blog.vckbase.com/Files/zuilang/MoveTwoBitMapsInSDI.rar"&gt;下载源代码工程&lt;/A&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;CBitmap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_bitmap1;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;位图对象&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CBitmap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_bitmap2;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;CSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map1Size;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;位图大小&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map2Size;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;nForeground;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;前景&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;BOOL&amp;nbsp;bMoveMap;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;移动图像&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CPoint&amp;nbsp;pMap1Pos;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;图像位置（左上角）&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CPoint&amp;nbsp;pMap2Pos;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;CPoint&amp;nbsp;pStartPos;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;鼠标单击准备移动图像的位置&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CPoint&amp;nbsp;pMapNowPos;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;图像当前位置&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;为求简便，首先在资源中加入了两幅位图。&lt;BR&gt;m_bitmap1.LoadBitmap(IDB_BITMAP1);&lt;BR&gt;&amp;nbsp;m_bitmap2.LoadBitmap(IDB_BITMAP2);&lt;BR&gt;然后，一个判断单击是否落在图像的函数：&lt;BR&gt;int CSdiView::IsDownInMap(CPoint point)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;//按图像的前后顺序判断单击是否落在图像范围内&lt;BR&gt;&amp;nbsp;if(1==nForeground)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;CRect rtMap1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.left= pMap1Pos.x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.top = pMap1Pos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.right = pMap1Pos.x+Map1Size.cx;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.bottom = pMap1Pos.y+Map1Size.cy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(rtMap1.PtInRect(point))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 1;//落在前景&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;CRect rtMap2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.left= pMap2Pos.x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.top = pMap2Pos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.right = pMap2Pos.x+Map2Size.cx;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.bottom = pMap2Pos.y+Map2Size.cy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(rtMap2.PtInRect(point))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 2;//落在后景&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;CRect rtMap2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.left= pMap2Pos.x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.top = pMap2Pos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.right = pMap2Pos.x+Map2Size.cx;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap2.bottom = pMap2Pos.y+Map2Size.cy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(rtMap2.PtInRect(point))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 2;//落在前景&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;CRect rtMap1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.left= pMap1Pos.x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.top = pMap1Pos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.right = pMap1Pos.x+Map1Size.cx;&lt;BR&gt;&amp;nbsp;&amp;nbsp;rtMap1.bottom = pMap1Pos.y+Map1Size.cy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(rtMap1.PtInRect(point))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 1;//落在后景&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;return 0;&amp;nbsp;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void CSdiView::OnLButtonDown(UINT nFlags, CPoint point) &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// TODO: Add your message handler code here and/or call default&lt;BR&gt;&amp;nbsp;int DownInMap=IsDownInMap(point);&lt;BR&gt;&amp;nbsp;if(0!=DownInMap)//单击落在图像上&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;bMoveMap=TRUE;&lt;BR&gt;&amp;nbsp;&amp;nbsp;pStartPos=point;&lt;BR&gt;&amp;nbsp;&amp;nbsp;//限制鼠标移动&lt;BR&gt;&amp;nbsp;&amp;nbsp;CRect rt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;GetClientRect(&amp;amp;rt);&lt;BR&gt;&amp;nbsp;&amp;nbsp;ClientToScreen(&amp;amp;rt);&lt;BR&gt;&amp;nbsp;&amp;nbsp;::ClipCursor(&amp;amp;rt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;switch(DownInMap) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;case 1:&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(1!=nForeground)//前景改变&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nForeground=1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos=pMap1Pos;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Invalidate();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;case 2:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(2!=nForeground)//前景改变&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nForeground=2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos=pMap2Pos;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Invalidate();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;default:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;CView::OnLButtonDown(nFlags, point);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void CSdiView::OnLButtonUp(UINT nFlags, CPoint point) &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// TODO: Add your message handler code here and/or call default&lt;BR&gt;&amp;nbsp;bMoveMap=FALSE;&lt;BR&gt;&amp;nbsp;if(1==nForeground)&lt;BR&gt;&amp;nbsp;&amp;nbsp;pMap1Pos=pMapNowPos;//更新图像最后的位置&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;pMap2Pos=pMapNowPos;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;//释放鼠标&lt;BR&gt;&amp;nbsp;::ClipCursor(NULL);&lt;BR&gt;&amp;nbsp;CView::OnLButtonUp(nFlags, point);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void CSdiView::OnMouseMove(UINT nFlags, CPoint point) &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// TODO: Add your message handler code here and/or call default&lt;BR&gt;&amp;nbsp;if(bMoveMap)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(1==nForeground)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos.x=pMap1Pos.x+point.x-pStartPos.x;//更新图像现在的位置&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos.y=pMap1Pos.y+point.y-pStartPos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos.x=pMap2Pos.x+point.x-pStartPos.x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMapNowPos.y=pMap2Pos.y+point.y-pStartPos.y;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Invalidate();&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;CView::OnMouseMove(nFlags, point);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;来看看OnDraw函数，其实关键是按图像的先后顺序来显示，先显示后面的，再显示前面的，很简单。&lt;BR&gt;void CSdiView::OnDraw(CDC* pDC)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;CSdiDoc* pDoc = GetDocument();&lt;BR&gt;&amp;nbsp;ASSERT_VALID(pDoc);&lt;BR&gt;&amp;nbsp;// TODO: add draw code for native data here&lt;/P&gt;
&lt;P&gt;&amp;nbsp;CRect rect;&lt;BR&gt;&amp;nbsp;GetClientRect(rect);//取得客户区域&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;CDC MemDC,MemDC_Map1,MemDC_Map2; //首先定义显示设备对象&lt;BR&gt;&amp;nbsp;CBitmap MemBitmap;//定义一个位图对象&lt;/P&gt;
&lt;P&gt;&amp;nbsp;//建立与屏幕显示兼容的内存显示设备&lt;BR&gt;&amp;nbsp;MemDC.CreateCompatibleDC(NULL);&lt;BR&gt;&amp;nbsp;MemDC_Map1.CreateCompatibleDC(NULL);&lt;BR&gt;&amp;nbsp;MemDC_Map2.CreateCompatibleDC(NULL);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());&lt;BR&gt;&amp;nbsp;MemDC.SelectObject(&amp;amp;MemBitmap);&lt;BR&gt;&amp;nbsp;MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;MemDC_Map1.SelectObject(&amp;amp;m_bitmap1);&lt;BR&gt;&amp;nbsp;MemDC_Map2.SelectObject(&amp;amp;m_bitmap2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;//将位图拷贝到内存中&lt;BR&gt;&amp;nbsp;if(1==nForeground)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;MemDC.BitBlt(pMap2Pos.x,pMap2Pos.y,Map2Size.cx,Map2Size.cy,&amp;amp;MemDC_Map2,0,0,SRCCOPY);&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MemDC.BitBlt(pMapNowPos.x,pMapNowPos.y,Map1Size.cx,Map1Size.cy,&amp;amp;MemDC_Map1,0,0,SRCCOPY);&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;MemDC.BitBlt(pMap1Pos.x,pMap1Pos.y,Map1Size.cx,Map1Size.cy,&amp;amp;MemDC_Map1,0,0,SRCCOPY);&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MemDC.BitBlt(pMapNowPos.x,pMapNowPos.y,Map2Size.cx,Map2Size.cy,&amp;amp;MemDC_Map2,0,0,SRCCOPY);&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;//将内存中的图拷贝到屏幕上进行显示&lt;BR&gt;&amp;nbsp;pDC-&amp;gt;BitBlt(0,0,rect.Width(),rect.Height(),&amp;amp;MemDC,0,0,SRCCOPY);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;MemBitmap.DeleteObject();&lt;BR&gt;&amp;nbsp;MemDC_Map1.DeleteDC();&lt;BR&gt;&amp;nbsp;MemDC_Map2.DeleteDC();&lt;BR&gt;&amp;nbsp;MemDC.DeleteDC();&lt;BR&gt;}&lt;BR&gt;为防止闪烁，上面使用了内存DC（双缓存）的方法，所以不要忘了：&lt;BR&gt;BOOL CSdiView::OnEraseBkgnd(CDC* pDC) &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// TODO: Add your message handler code here and/or call default&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&amp;nbsp;&lt;BR&gt;//&amp;nbsp;return CView::OnEraseBkgnd(pDC);&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/11707.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>极其严重的惯性思维！</title><link>http://blog.vckbase.com/zuilang/archive/2005/08/28/11625.html</link><pubDate>Sun, 28 Aug 2005 09:15:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/08/28/11625.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/11625.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/08/28/11625.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/11625.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/11625.html</trackback:ping><description>&lt;P&gt;&lt;FONT color=#800080&gt;&lt;U&gt;HELP ME!怎么把一个整数追加到一个字符串的后面?&lt;BR&gt;&lt;/U&gt;&lt;FONT color=#000000&gt;我想在一个字符串的后面追加一个整数,我用下如下的代码,怎么不行呀?&lt;BR&gt;CString str="abc";&lt;BR&gt;&lt;BR&gt;str.Format("%s%d",str,1);&lt;/FONT&gt;&lt;BR&gt;于是我想都不想：&lt;BR&gt;&lt;/FONT&gt;CString str="abc";&lt;BR&gt;int data=1;&lt;BR&gt;str.Format("%s%d",str,data);&lt;BR&gt;呜呼！&lt;BR&gt;&lt;A href="http://www.vckbase.com/bbs/viewtopic.asp?id=2070495&amp;amp;pg=1"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/11625.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>常用控件Radio Button的常用用法</title><link>http://blog.vckbase.com/zuilang/archive/2005/08/27/11578.html</link><pubDate>Sat, 27 Aug 2005 03:15:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/08/27/11578.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/11578.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/08/27/11578.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/11578.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/11578.html</trackback:ping><description>&lt;P&gt;作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;&lt;FONT color=#000080&gt;zuilang&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;先为对话框加上2个radio button，分别是Radio1和Radio2。&lt;/P&gt;
&lt;P&gt;问题1：如何让Radio1或者Radio2默认选上？如何知道哪个被选上了？&lt;BR&gt;&lt;BR&gt;关键是选上，&amp;#8220;默认&amp;#8221;只要放在OnInitDialog()即可。三种方法可以让它选上，&lt;BR&gt;第一种：&lt;BR&gt;((CButton *)GetDlgItem(IDC_RADIO1))-&amp;gt;SetCheck(TRUE);//选上&lt;BR&gt;((CButton *)GetDlgItem(IDC_RADIO1))-&amp;gt;SetCheck(FALSE);//不选上&lt;BR&gt;((CButton *)GetDlgItem(IDC_RADIO1))-&amp;gt;GetCheck();返回1表示选上，0表示没选上&lt;BR&gt;第二种：&lt;BR&gt;关联一个congtrol型变量（子类化），好ctrl+W(即打开classwizard),点开 Member Variables，咦？怎么没有IDC_RADIO1这个ID？原来是没有分组。因为radio button通常都是成组使用的，在一组里面是互斥的。取消，回到对话框资源面板，右键Radio1查看属性把Group选上，那么，Radio1和Radio2就是一组了（怎么知道他们是一组的？后面说）。此时，就可以为Radio1增加一congtrol型变量m_ctrlRadio1了。如下：&lt;BR&gt;m_ctrlRadio1.SetCheck(TRUE);&lt;BR&gt;同样可以使用GetCheck()获取状态。&lt;BR&gt;第三种：&lt;BR&gt;关联一个int型变量（同样需要先分组）m_nRadio1，打开对话框构造函数，你会发现有：&lt;BR&gt;m_nRadio1 = -1;m_nRadio1别赋值-1表示哪个都没有选上。如果你把-1改成0，就会发现Radio1默认被选上了，依此类推，m_nRadio1的值为1就是第二个被选上了（这里同样有问题，哪个是第一个？哪个是第二个？）。获取状态很简单，UpdateData(TRUE)后判断m_nRadio1的值即可。&lt;/P&gt;
&lt;P&gt;问题2：如何使用多组？&lt;BR&gt;&lt;BR&gt;多组和一组是一样的使用，只要搞清楚哪个是哪一组的就行了。再为对话框添加Radio3和Radio4。很简单，先为这些Radio Button排个顺序，就是排列他们的TAB ORDER。在对话框资源面板上Ctrl+D，然后按你自己的理想顺序用鼠标逐个点击就可以了。不妨假设Radio1、Radio2、Radio3、Radio4分别是1、2、3、4。Radio1和Radio3都选上Group属性，那么，1、2是一组，3、4是另外一组，因为分组的原则是在选上Group属性的这一个开始直到碰到下一个选上Group属性的。你不妨再Ctrl+D，令Radio1、Radio2、Radio3、Radio4分别是1、3、2、4，那么Radio1和Radio3是一组，如果m_nRadio1=1,此时是Radio3被选上而不是Radio2被选上。分好了组就分别使用它们吧。&lt;/P&gt;
&lt;P&gt;嗯，也许你还要为它们添加鼠标单击事件，非常简单。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/11578.html" width = "1" height = "1" /&gt;</description></item></channel></rss>