﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-把握命运，追逐梦想</title><link>http://www.cppblog.com/FateNo13/</link><description>对自己所做的事要有兴趣，同时还要能够坚持不懈</description><language>zh-cn</language><lastBuildDate>Fri, 03 Apr 2026 21:03:41 GMT</lastBuildDate><pubDate>Fri, 03 Apr 2026 21:03:41 GMT</pubDate><ttl>60</ttl><item><title>VC 2008 sp1 中 deque的erase函数的问题</title><link>http://www.cppblog.com/FateNo13/archive/2011/04/22/144763.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Fri, 22 Apr 2011 01:02:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2011/04/22/144763.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/144763.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2011/04/22/144763.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/144763.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/144763.html</trackback:ping><description><![CDATA[该函数在erase一个元素的时候，先复制最近端，例如该元素靠近前端，那么该元素之前的所有元素被复制，并后移拷贝，达到覆盖该元素的效果，导致最后Destroy的是第一个元素，析构函数也是第一个元素的，由于第一个元素被复制了，所以第一个元素如果没有拷贝复制函数来处理指针变量的话，那么之后第一个元素的副本中的指针将是错误的，而且同时有一个问题，我们想要destroy的那个元素的析构函数没被调用。
<img src ="http://www.cppblog.com/FateNo13/aggbug/144763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2011-04-22 09:02 <a href="http://www.cppblog.com/FateNo13/archive/2011/04/22/144763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>def文件一个比较详细的例子</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/24/94224.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Mon, 24 Aug 2009 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/24/94224.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/94224.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/24/94224.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/94224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/94224.html</trackback:ping><description><![CDATA[先看看EXPORTS语法规则：<br>entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]<br><br>对上面语法的解释：<br>1、<br>
<p><em>entryname</em> 是要导出的函数名或变量名。这是必选项。如果导出的名称与 DLL 中的名称不同，则通过 <em>internalname</em> 指定 DLL 中导出的名称。例如，如果 DLL 导出函数 <tt>func1()</tt>，要将它用作 <tt>func2()</tt>，则应指定：</p>
<pre class=libCScode id=ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl01 style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">EXPORTS
func2=func1</pre>
<br>2、<br>
<p>@<span class=parameter><em>ordinal</em></span> 允许指定是序号而不是函数名将进入 DLL 的导出表。这有助于最小化 DLL 的大小。.LIB 文件将包含序号与函数之间的映射，这使您得以像通常在使用 DLL 的项目中那样使用函数名。</p>
<p>可选的 <strong>NONAME</strong> 关键字允许只按序号导出，并减小结果 DLL 中导出表的大小。但是，如果要在 DLL 上使用 <a id=ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl02 onclick="javascript:Track('ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_contenthere|ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl02',this);" href="http://msdn.microsoft.com/zh-cn/library/cc429133.aspx"><font color=#0033cc>GetProcAddress</font></a>，则必须知道序号，因为名称将无效。</p>
<p>可选的 <strong>PRIVATE</strong> 关键字禁止将 <em>entryname</em> 放到由 LINK 生成的导入库中。它对同样是由 LINK 生成的图像中的导出无效。</p>
<p>可选的 <strong>DATA</strong> 关键字指定导出的是数据，而不是代码。例如，可以导出数据变量：</p>
<pre class=libCScode id=ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl03 style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">EXPORTS
i DATA</pre>
<pre class=libCScode style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">
<p>当对同一导出使用 <strong>PRIVATE</strong> 和 <strong>DATA</strong> 时，<strong>PRIVATE</strong> 必须位于 <strong>DATA</strong> 的前面。</p>
</pre>
3、
<p>有三种导出定义的方法，按照建议的使用顺序依次为： </p>
<ol>
    <li>
    <p>源代码中的 <strong>__declspec(dllexport)</strong> 关键字</p>
    <li>
    <p>.def 文件中的 <strong>EXPORTS</strong> 语句</p>
    <li>
    <p>LINK 命令中的 <a id=ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl04 onclick="javascript:Track('ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_contenthere|ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl04',this);" href="http://msdn.microsoft.com/zh-cn/library/7k30y2k5(VS.80).aspx"><font color=#0033cc>/EXPORT</font></a> 规范</p>
    </li>
</ol>
<p>所有这三种方法可以用在同一个程序中。LINK 在生成包含导出的程序时还创建导入库，除非生成中使用了 .exp 文件。</p>
<br>4、一个详细的<br>
<pre class=libCScode id=ctl00_MTContentSelector1_mainContentContainer_ctl12_ctl00_ctl05 style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">EXPORTS
DllCanUnloadNow      @1     PRIVATE   DATA
DllWindowName = Name        DATA
DllGetClassObject    @4 NONAME   PRIVATE
DllRegisterServer    @7
DllUnregisterServer</pre>
<pre class=libCScode style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">注意，使用 .def 文件从 DLL 中导出变量时，不需要在变量上指定 <strong>__declspec(dllexport)</strong>。但是，在任何使用 DLL 的文件中，仍必须在数据声明上使用 <strong>__declspec(dllimport)</strong>。</pre>
<pre class=libCScode style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">&nbsp;</pre>
<pre class=libCScode style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">下面的是一个例子，可以看到def文件实际上的作用。<br><br><br><br><br><br><br><br><br><br><br><br></pre>
<pre class=libCScode style="WORD-BREAK: break-all; WORD-WRAP: break-word" space="preserve">
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Node_t&nbsp;node;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>BOOL&nbsp;APIENTRY&nbsp;DllMain(&nbsp;HMODULE&nbsp;hModule,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ul_reason_for_call,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LPVOID&nbsp;lpReserved<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br><img id=Codehighlighter1_153_198_Open_Image onclick="this.style.display='none'; Codehighlighter1_153_198_Open_Text.style.display='none'; Codehighlighter1_153_198_Closed_Image.style.display='inline'; Codehighlighter1_153_198_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_153_198_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_153_198_Closed_Text.style.display='none'; Codehighlighter1_153_198_Open_Image.style.display='inline'; Codehighlighter1_153_198_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_153_198_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_153_198_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;node.x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;node.y&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y)<br><img id=Codehighlighter1_224_266_Open_Image onclick="this.style.display='none'; Codehighlighter1_224_266_Open_Text.style.display='none'; Codehighlighter1_224_266_Closed_Image.style.display='inline'; Codehighlighter1_224_266_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_224_266_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_224_266_Closed_Text.style.display='none'; Codehighlighter1_224_266_Open_Image.style.display='inline'; Codehighlighter1_224_266_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_224_266_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_224_266_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(x</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">y)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;y;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Min(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y)<br><img id=Codehighlighter1_291_333_Open_Image onclick="this.style.display='none'; Codehighlighter1_291_333_Open_Text.style.display='none'; Codehighlighter1_291_333_Closed_Image.style.display='inline'; Codehighlighter1_291_333_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_291_333_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_291_333_Closed_Text.style.display='none'; Codehighlighter1_291_333_Open_Image.style.display='inline'; Codehighlighter1_291_333_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_291_333_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_291_333_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(x</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">y)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;y;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Node_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;func1()<br><img id=Codehighlighter1_353_370_Open_Image onclick="this.style.display='none'; Codehighlighter1_353_370_Open_Text.style.display='none'; Codehighlighter1_353_370_Closed_Image.style.display='inline'; Codehighlighter1_353_370_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_353_370_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_353_370_Closed_Text.style.display='none'; Codehighlighter1_353_370_Open_Image.style.display='inline'; Codehighlighter1_353_370_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_353_370_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_353_370_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">node;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Node_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;func2()<br><img id=Codehighlighter1_390_407_Open_Image onclick="this.style.display='none'; Codehighlighter1_390_407_Open_Text.style.display='none'; Codehighlighter1_390_407_Closed_Image.style.display='inline'; Codehighlighter1_390_407_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_390_407_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_390_407_Closed_Text.style.display='none'; Codehighlighter1_390_407_Open_Image.style.display='inline'; Codehighlighter1_390_407_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_390_407_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_390_407_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">node;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>下面是def文件</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>EXPORTS<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Max&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Max&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>MinChange&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Min&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>func1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">func1&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;NONAME&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>func2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">func2&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PRIVATE&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>node&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">node&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PRIVATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p>下面是对应的lib的导出<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">Max@@YAHHH@Z&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;Max(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">))<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">MinChange@@YAHHH@Z&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;MinChange(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">))<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">func1@@YAPAUNode_t@@XZ&nbsp;(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Node_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;func1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">))</span></div>
<p>下面是对应的dll文件的导出<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ordinal&nbsp;hint&nbsp;RVA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">00001020</span><span style="COLOR: #000000">&nbsp;Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">Max@@YAHHH@Z&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;Max(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">))<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">00001030</span><span style="COLOR: #000000">&nbsp;MinChange&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">Min@@YAHHH@Z&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;Min(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">))<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">00001040</span><span style="COLOR: #000000">&nbsp;func2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">func1@@YAPAUNode_t@@XZ&nbsp;(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Node_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;func1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">))<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">00003348</span><span style="COLOR: #000000">&nbsp;node&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">node@@3UNode_t@@A&nbsp;(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Node_t&nbsp;node)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">00001040</span><span style="COLOR: #000000">&nbsp;[NONAME]&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">func1@@YAPAUNode_t@@XZ&nbsp;(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Node_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;__cdecl&nbsp;func1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">))</span></div>
<p>从上面可以看出来，def文件的符号在lib中的作用并不大，但是函数名称，比如<span style="COLOR: #000000"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#63;&#77;&#105;&#110;&#67;&#104;&#97;&#110;&#103;&#101;&#64;&#64;&#89;&#65;&#72;&#72;&#72;&#64;&#90;">?</span><span style="COLOR: #000000">MinChange@@YAHHH@Z中的MinChange是因为def中</a>把Min改成了MinChange，所以lib中也进行了修改，但是这个MinChange符号实际上出现在dll文件的name列中。其实这也看出来了，def文件只是在loadlibrary这种运行时加载有效。<br>由于lib中的函数名变成了<span style="COLOR: #000000"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#63;&#77;&#105;&#110;&#67;&#104;&#97;&#110;&#103;&#101;&#64;&#64;&#89;&#65;&#72;&#72;&#72;&#64;&#90;">?</span><span style="COLOR: #000000">MinChange@@YAHHH@Z</span></a>，导致使用<strong>__declspec(dllimport)</strong>进行导入的启动时加载，生成的<span style="COLOR: #000000"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#63;&#77;&#105;&#110;&#64;&#64;&#89;&#65;&#72;&#72;&#72;&#64;&#90;">?</span><span style="COLOR: #000000">Min@@YAHHH@Z</span></a>无法与<span style="COLOR: #000000"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#63;&#77;&#105;&#110;&#67;&#104;&#97;&#110;&#103;&#101;&#64;&#64;&#89;&#65;&#72;&#72;&#72;&#64;&#90;">?</span><span style="COLOR: #000000">MinChange@@YAHHH@Z</span></a>对应，而出现链接时的错误。所以不应该改变函数名，而应该在def文件中直接使用函数名，这样启动时加载和运行时加载都能够顺利进行。<br>同时从上面也可以看出NONAME和PRIVATE的作用的。<br></span>问题：试验中使用DATA总是出错，不知道怎么弄。<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
</pre>
<img src ="http://www.cppblog.com/FateNo13/aggbug/94224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-24 10:29 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/24/94224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WSAStartup简单解释</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/24/94219.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Mon, 24 Aug 2009 01:51:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/24/94219.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/94219.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/24/94219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/94219.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/94219.html</trackback:ping><description><![CDATA[<strong>int WSAStartup (<br>&nbsp; WORD</strong><em> wVersionRequested</em><strong>,&nbsp; </strong><br><strong>&nbsp; LPWSADATA</strong><em> lpWSAData&nbsp; </em><br><strong>);<br>第一个参数是调用者能够使用的最高版本号。<br>第二个参数中的前两个成员中，第一个成员是sock dll返回的版本号，第二个参数是dll支持的最高版本号。<br><br>这个函数成功返回的条件是，第一个参数的版本号高于sock dll能够支持的最低版本，那么就表示dll肯定支持调用者能够使用的一个版本。在第二个参数中的第一个变量种返回第一个参数和dll支持的最高版本中的那个小的版本。<br>示例图，有重叠，说明存在可以使用的版本。<br><img height=246 alt="" src="http://www.cppblog.com/images/cppblog_com/fateno13/pp.JPG" width=400 border=0><br>第一行是调用者能够使用的所有版本，第二行是dll支持的所有版本，而这个函数中的第一个参数是第一行中的最大版本。第二个参数中的第一个成员是重叠部分的最大的那个。如果没有重叠部分，那么函数失败。</strong>
<img src ="http://www.cppblog.com/FateNo13/aggbug/94219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-24 09:51 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/24/94219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程同步的几种方法</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/23/94194.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Sun, 23 Aug 2009 12:30:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/23/94194.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/94194.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/23/94194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/94194.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/94194.html</trackback:ping><description><![CDATA[1.CreateMutex<br>&nbsp;&nbsp;&nbsp;WaitForSingleObject<br>&nbsp;&nbsp;&nbsp;RealseMutex<br><br>2.CreateThread中的临界区
<img src ="http://www.cppblog.com/FateNo13/aggbug/94194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-23 20:30 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/23/94194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>istream_iterator的自增</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/20/93897.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Thu, 20 Aug 2009 04:45:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/20/93897.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93897.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/20/93897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93897.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93897.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp;// TEMPLATE CLASS istream_iterator<br>template&lt;class _Ty,<br>&nbsp;class _Elem = char,<br>&nbsp;class _Traits = char_traits&lt;_Elem&gt;,<br>&nbsp;class _Diff = ptrdiff_t&gt;<br>&nbsp;class istream_iterator<br>&nbsp;&nbsp;: public iterator&lt;input_iterator_tag, _Ty, _Diff,<br>&nbsp;&nbsp;&nbsp;const _Ty *, const _Ty&amp;&gt;<br>&nbsp;{&nbsp;// wrap _Ty extracts from input stream as input iterator<br>&nbsp;typedef istream_iterator&lt;_Ty, _Elem, _Traits, _Diff&gt; _Myt;<br>public:<br>&nbsp;typedef _Elem char_type;<br>&nbsp;typedef _Traits traits_type;<br>&nbsp;typedef basic_istream&lt;_Elem, _Traits&gt; istream_type;</p>
<p>#if _SECURE_SCL<br>&nbsp;typedef _Range_checked_iterator_tag _Checked_iterator_category;<br>#endif</p>
<p>&nbsp;istream_iterator()<br>&nbsp;&nbsp;: _Myistr(0)<br>&nbsp;&nbsp;{&nbsp;// construct singular iterator<br>&nbsp;&nbsp;}</p>
<p>&nbsp;istream_iterator(istream_type&amp; _Istr)<br>&nbsp;&nbsp;: _Myistr(&amp;_Istr)<br>&nbsp;&nbsp;{&nbsp;// construct with input stream<br>&nbsp;&nbsp;_Getval();<br>&nbsp;&nbsp;}</p>
<p>&nbsp;const _Ty&amp; operator*() const<br>&nbsp;&nbsp;{&nbsp;// return designated value</p>
<p>&nbsp;#if _HAS_ITERATOR_DEBUGGING<br>&nbsp;&nbsp;if (_Myistr == 0)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;_DEBUG_ERROR("istream_iterator is not dereferencable");<br>&nbsp;&nbsp;&nbsp;_SCL_SECURE_OUT_OF_RANGE;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;#else<br>&nbsp;&nbsp;_SCL_SECURE_VALIDATE_RANGE(_Myistr != 0);<br>&nbsp;#endif /* _HAS_ITERATOR_DEBUGGING */</p>
<p>&nbsp;&nbsp;return (_Myval);<br>&nbsp;&nbsp;}</p>
<p>&nbsp;const _Ty *operator-&gt;() const<br>&nbsp;&nbsp;{&nbsp;// return pointer to class object<br>&nbsp;&nbsp;return (&amp;**this);<br>&nbsp;&nbsp;}</p>
<p style="COLOR: #ff0000">&nbsp;_Myt&amp; operator++()<br>&nbsp;&nbsp;{&nbsp;// preincrement</p>
<p style="COLOR: #ff0000">&nbsp;#if _HAS_ITERATOR_DEBUGGING<br>&nbsp;&nbsp;if (_Myistr == 0)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;_DEBUG_ERROR("istream_iterator is not incrementable");<br>&nbsp;&nbsp;&nbsp;_SCL_SECURE_OUT_OF_RANGE;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;#else<br>&nbsp;&nbsp;_SCL_SECURE_VALIDATE_RANGE(_Myistr != 0);<br>&nbsp;#endif /* _HAS_ITERATOR_DEBUGGING */</p>
<p><span style="COLOR: #ff0000">&nbsp;&nbsp;_Getval();<br>&nbsp;&nbsp;return (*this);<br>&nbsp;&nbsp;}</span></p>
<p><span style="COLOR: #ff0000">&nbsp;_Myt operator++(int)<br>&nbsp;&nbsp;{&nbsp;// postincrement<br>&nbsp;&nbsp;_Myt _Tmp = *this;<br>&nbsp;&nbsp;++*this;<br>&nbsp;&nbsp;return (_Tmp);<br>&nbsp;&nbsp;}</span></p>
<p>&nbsp;bool _Equal(const _Myt&amp; _Right) const<br>&nbsp;&nbsp;{&nbsp;// test for iterator equality<br>&nbsp;&nbsp;return (_Myistr == _Right._Myistr);<br>&nbsp;&nbsp;}</p>
<p>protected:<br><span style="COLOR: #ff0000">&nbsp;void _Getval()<br>&nbsp;&nbsp;{&nbsp;// get a _Ty value if possible<br>&nbsp;&nbsp;if (_Myistr != 0 &amp;&amp; !(*_Myistr &gt;&gt; _Myval))<br>&nbsp;&nbsp;&nbsp;_Myistr = 0;<br>&nbsp;&nbsp;}</span></p>
<p>&nbsp;static void _Xran()<br>&nbsp;&nbsp;{&nbsp;// report an out_of_range error<br>&nbsp;&nbsp;_THROW(out_of_range, "invalid istream_iterator");<br>&nbsp;&nbsp;}</p>
<p>&nbsp;istream_type *_Myistr;&nbsp;// pointer to input stream<br>&nbsp;_Ty _Myval;&nbsp;// lookahead value (valid if _Myistr is not null)<br>&nbsp;};</p>
<p>&nbsp;&nbsp;// istream_iterator TEMPLATE OPERATORS<br>template&lt;class _Ty,<br>&nbsp;class _Elem,<br>&nbsp;class _Traits,<br>&nbsp;class _Diff&gt; inline<br>&nbsp;bool operator==(<br>&nbsp;&nbsp;const istream_iterator&lt;_Ty, _Elem, _Traits, _Diff&gt;&amp; _Left,<br>&nbsp;&nbsp;const istream_iterator&lt;_Ty, _Elem, _Traits, _Diff&gt;&amp; _Right)<br>&nbsp;{&nbsp;// test for istream_iterator equality<br>&nbsp;return (_Left._Equal(_Right));<br>&nbsp;}</p>
<p>template&lt;class _Ty,<br>&nbsp;class _Elem,<br>&nbsp;class _Traits,<br>&nbsp;class _Diff&gt; inline<br>&nbsp;bool operator!=(<br>&nbsp;&nbsp;const istream_iterator&lt;_Ty, _Elem, _Traits, _Diff&gt;&amp; _Left,<br>&nbsp;&nbsp;const istream_iterator&lt;_Ty, _Elem, _Traits, _Diff&gt;&amp; _Right)<br>&nbsp;{&nbsp;// test for istream_iterator inequality<br>&nbsp;return (!(_Left == _Right));<br>&nbsp;}<br><br>红色部分就是重点了，其实这种迭代器不能自增，只是不断把流中的元素放到自己所存的值里，当到达流末尾时，直接将判断指针设为0。</p>
<img src ="http://www.cppblog.com/FateNo13/aggbug/93897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-20 12:45 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/20/93897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++练习5作业</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/20/93895.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Thu, 20 Aug 2009 04:05:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/20/93895.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93895.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/20/93895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93895.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93895.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: //train.h#pragma&nbsp;once#include"stdafx.h"class&nbsp;Train{public:&nbsp;&nbsp;&nbsp;&nbsp;Train(int&nbsp;seatNum);&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;~Train(void);&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/FateNo13/archive/2009/08/20/93895.html'>阅读全文</a><img src ="http://www.cppblog.com/FateNo13/aggbug/93895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-20 12:05 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/20/93895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于私有成员</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/19/93870.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Wed, 19 Aug 2009 14:57:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/19/93870.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93870.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/19/93870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93870.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93870.html</trackback:ping><description><![CDATA[以前一直理解错误，一直以为私有成员是对象的，不是类的，现在想想，自己真笨，编译器怎么可能检查到运行时的对象的私有成员是否被别的代码使用了呢？编译器能做的只能是检查类的声明和定义，所以私有成员是类的，也就是同类所有对象的，而不是某一个对象的。只要在同一个类声明和成员函数定义体内，私有成员是可以随便使用的。
<img src ="http://www.cppblog.com/FateNo13/aggbug/93870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-19 22:57 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/19/93870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>__cdecl、__stdcall、__fastcall</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/18/93743.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Tue, 18 Aug 2009 15:05:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/18/93743.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93743.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/18/93743.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93743.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93743.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.这三个修饰符的基本意思&nbsp;&nbsp;&nbsp;__cdecl：C调用方式，VC默认使用该方式，参数从右向左传递，参数个数可变，栈的初始和清理由调用者完成&nbsp;&nbsp;&nbsp;__stdcall：标准调用方式，多种语言使用这种调用方式，参数从右向左传递，参数个数不可变，栈的初始和清理由被调用者完成&nbsp;&nbsp;&nbsp;__fastcall：参数尽量使用寄存...&nbsp;&nbsp;<a href='http://www.cppblog.com/FateNo13/archive/2009/08/18/93743.html'>阅读全文</a><img src ="http://www.cppblog.com/FateNo13/aggbug/93743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-18 23:05 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/18/93743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>exe、dll的进入点，以及main、winmain、dllmain的关系</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/18/93719.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Tue, 18 Aug 2009 10:50:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/18/93719.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93719.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/18/93719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93719.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93719.html</trackback:ping><description><![CDATA[<p>静态链接的情况不考虑，因为这种情况就是把所有代码合并到exe中，不需要进入点。<br><br>进入点就是系统在加载一个可执行代码块（主要是exe和dll）到内存的时候，系统将要调用的起始代码的位置。<br><br>加载分为启动时加载和运行时加载，这两种说法主要是针对dll的，因为exe加载必然会创建一个新的进程，所以exe加载都是启动时加载，就算是createprocess也应该说是启动时加载。而dll分为两种情况，第一种就是随着exe的加载一起加载到内存的同一进程地址空间中，另一种则是exe中的代码loadlibrary在运行时加载dll到当前exe的进程地址空间中。<br>无论上面哪种情况，只要加载，系统就会一定在加载的时候调用进入点代码，所以加载方式与进入点完全不影响。<br><br>win sdk文档中exe的进入点有两个，一个是main，另一个是winmain，这个进入点是可以改的，但是在c运行环境下，连接器一般把进入点默认设置为<strong>mainCRTStartup</strong>和<strong>WinMainCRTStartup</strong>，因为c运行时需要在代码执行前进行一些别的工作，所以就修改为前面两个c入口点，然后这两个函数再分别调用main和winmain。c运行时需要作的特别工作就是初始化c运行时环境，包括静态、全局变量和对象初始化。当main或者winmain返回时就又回到了前两个函数中，这两个函数的后半部分就是负责清理之前的初始化工作。<br><br>win sdk文档中的dll的进入店是dllmain，同样在c运行时下，改为<strong>_DllMainCRTStartup</strong>，系统加载dll时调用这个函数，然后这个函数做些初始化工作，再调用dllmain，然后返回<strong>_DllMainCRTStartup</strong>结束执行。此时，dll已经在进程的地址空间中了，该进程的exe可以使用dll中的代码了。如果该dll是启动时加载，那么在程序结束时会再次调用<strong>_DllMainCRTStartup</strong>进行清理之前dll初始化的工作，如果是通过loadlibrary来运行时加载dll，那么需要exe自己卸载dll，卸载的时候会再次调用<strong>_DllMainCRTStartup</strong></p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/FateNo13/aggbug/93719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-18 18:50 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/18/93719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CreateFile和WriteFile</title><link>http://www.cppblog.com/FateNo13/archive/2009/08/12/93066.html</link><dc:creator>把握命运</dc:creator><author>把握命运</author><pubDate>Wed, 12 Aug 2009 11:46:00 GMT</pubDate><guid>http://www.cppblog.com/FateNo13/archive/2009/08/12/93066.html</guid><wfw:comment>http://www.cppblog.com/FateNo13/comments/93066.html</wfw:comment><comments>http://www.cppblog.com/FateNo13/archive/2009/08/12/93066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/FateNo13/comments/commentRss/93066.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/FateNo13/services/trackbacks/93066.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tchar.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">LRESULT&nbsp;CALLBACK&nbsp;WindowProc(HWND&nbsp;hWnd,UINT&nbsp;uMsg,WPARAM&nbsp;wParam,LPARAM&nbsp;lParam);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">HANDLE&nbsp;g_hFile;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">HANDLE&nbsp;g_hFile1;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;sMsg<br><img id=Codehighlighter1_163_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_163_194_Open_Text.style.display='none'; Codehighlighter1_163_194_Closed_Image.style.display='inline'; Codehighlighter1_163_194_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_163_194_Closed_Image onclick="this.style.display='none'; Codehighlighter1_163_194_Closed_Text.style.display='none'; Codehighlighter1_163_194_Open_Image.style.display='inline'; Codehighlighter1_163_194_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_163_194_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_163_194_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;time;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;message;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;WINAPI&nbsp;_tWinMain(HINSTANCE&nbsp;hInstance,&nbsp;HINSTANCE&nbsp;,LPTSTR&nbsp;lpCmdLine,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nCmdShow)<br><img id=Codehighlighter1_285_2791_Open_Image onclick="this.style.display='none'; Codehighlighter1_285_2791_Open_Text.style.display='none'; Codehighlighter1_285_2791_Closed_Image.style.display='inline'; Codehighlighter1_285_2791_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_285_2791_Closed_Image onclick="this.style.display='none'; Codehighlighter1_285_2791_Closed_Text.style.display='none'; Codehighlighter1_285_2791_Open_Image.style.display='inline'; Codehighlighter1_285_2791_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_285_2791_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_285_2791_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">hInstance)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;WNDCLASSEX&nbsp;wcex;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wcex.style&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CS_HREDRAW&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CS_OWNDC</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">CS_VREDRAW&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">常用设置,这个设置定义类在遇到各种情况时的行为,不过都是些可有可无的东西</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.lpszClassName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">FIRSTCLASS</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">类名,必须存在,这是引用类的差不多唯一的标志,另一个是class&nbsp;atom</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.hInstance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;hInstance;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">类所属的模块句柄,如果style中有CS_OWNDC,相反,如果是CS_CLASSDC的话,这个类就属于这个进程</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.lpszMenuName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这是个指向菜单资源的指针,如果是NULL的话,则没有菜单</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.hCursor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LoadCursor(NULL,IDC_ARROW);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加载鼠标图标,如果是NULL的话,系统没有默认的鼠标图标,因此图标会出现未定义情况</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.hIcon&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">系统会加载默认图标</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.hbrBackground&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(HBRUSH)(COLOR_WINDOW</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wcex.lpfnWndProc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;WindowProc;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wcex.cbClsExtra&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">分配给类的额外内存,根本用不上,设为0</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.cbWndExtra&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">分配给由这个类产生的所有窗口的每一个内存大小,用不上,0</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.cbSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(WNDCLASSEX);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">类的大小,这个估计是以后扩展的时候用的吧,总共两种,难道是用来区分普通类和扩展类???</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wcex.hIconSm&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">小型图标,NULL,系统知道如何处理,影响不了程序的正常运行</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">RegisterClassEx(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wcex))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">函数失败,返回0,否则返回一个atom,这个atom是用来标记类的,但是用的不多,能用类名的地方,也能用这东西</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_1562_1577_Open_Image onclick="this.style.display='none'; Codehighlighter1_1562_1577_Open_Text.style.display='none'; Codehighlighter1_1562_1577_Closed_Image.style.display='inline'; Codehighlighter1_1562_1577_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1562_1577_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1562_1577_Closed_Text.style.display='none'; Codehighlighter1_1562_1577_Open_Image.style.display='inline'; Codehighlighter1_1562_1577_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1562_1577_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1562_1577_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;g_hFile&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;CreateFile(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">d:\\pe\\messagefile.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;file&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;open&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_WRITE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;open&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;&nbsp;reading&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FILE_SHARE_WRITE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;share&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;&nbsp;reading&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;default&nbsp;&nbsp;&nbsp;security&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;OPEN_ALWAYS,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;existing&nbsp;&nbsp;&nbsp;file&nbsp;&nbsp;&nbsp;only&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;normal&nbsp;&nbsp;&nbsp;file&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;NULL);&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;g_hFile1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CreateFile(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">messagefile1.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_WRITE,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_SHARE_WRITE,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_ALWAYS,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面的这个函数和CreateWindow是同一个,只是define了几个参数而以,所以现在使用的CreateWindow就是CreateWindowEx</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;hWnd&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CreateWindowEx(</span><span style="COLOR: #000000">0L</span><span style="COLOR: #000000">,_T(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">FIRSTCLASS</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),_T(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),WS_OVERLAPPEDWINDOW&nbsp;,CW_USEDEFAULT,CW_USEDEFAULT,</span><span style="COLOR: #000000">640</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">480</span><span style="COLOR: #000000">,NULL,NULL,hInstance,NULL);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">hWnd)<br><img id=Codehighlighter1_2384_2399_Open_Image onclick="this.style.display='none'; Codehighlighter1_2384_2399_Open_Text.style.display='none'; Codehighlighter1_2384_2399_Closed_Image.style.display='inline'; Codehighlighter1_2384_2399_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2384_2399_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2384_2399_Closed_Text.style.display='none'; Codehighlighter1_2384_2399_Open_Image.style.display='inline'; Codehighlighter1_2384_2399_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2384_2399_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2384_2399_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(hWnd,nCmdShow&nbsp;&nbsp;);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_2451_2453_Open_Image onclick="this.style.display='none'; Codehighlighter1_2451_2453_Open_Text.style.display='none'; Codehighlighter1_2451_2453_Closed_Image.style.display='inline'; Codehighlighter1_2451_2453_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2451_2453_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2451_2453_Closed_Text.style.display='none'; Codehighlighter1_2451_2453_Open_Image.style.display='inline'; Codehighlighter1_2451_2453_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;MSG&nbsp;msg&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2451_2453_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2451_2453_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;nbuffer;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(GetMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg,NULL,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))<br><img id=Codehighlighter1_2507_2712_Open_Image onclick="this.style.display='none'; Codehighlighter1_2507_2712_Open_Text.style.display='none'; Codehighlighter1_2507_2712_Closed_Image.style.display='inline'; Codehighlighter1_2507_2712_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2507_2712_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2507_2712_Closed_Text.style.display='none'; Codehighlighter1_2507_2712_Open_Image.style.display='inline'; Codehighlighter1_2507_2712_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2507_2712_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2507_2712_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_2550_2552_Open_Image onclick="this.style.display='none'; Codehighlighter1_2550_2552_Open_Text.style.display='none'; Codehighlighter1_2550_2552_Closed_Image.style.display='inline'; Codehighlighter1_2550_2552_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2550_2552_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2550_2552_Closed_Text.style.display='none'; Codehighlighter1_2550_2552_Open_Image.style.display='inline'; Codehighlighter1_2550_2552_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sMsg&nbsp;smsg&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2550_2552_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2550_2552_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smsg.time&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;msg.time;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smsg.message&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;msg.message;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteFile(&nbsp;&nbsp;g_hFile1,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">smsg,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(smsg),&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">nbuffer,&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;);&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(g_hFile);&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(g_hFile1);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)msg.wParam;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">LRESULT&nbsp;CALLBACK&nbsp;WindowProc(HWND&nbsp;hWnd,UINT&nbsp;uMsg,WPARAM&nbsp;wParam,LPARAM&nbsp;lParam)<br><img id=Codehighlighter1_2872_3209_Open_Image onclick="this.style.display='none'; Codehighlighter1_2872_3209_Open_Text.style.display='none'; Codehighlighter1_2872_3209_Closed_Image.style.display='inline'; Codehighlighter1_2872_3209_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2872_3209_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2872_3209_Closed_Text.style.display='none'; Codehighlighter1_2872_3209_Open_Image.style.display='inline'; Codehighlighter1_2872_3209_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2872_3209_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2872_3209_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;nbuffer;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;WriteFile(&nbsp;g_hFile,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">uMsg,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(uMsg),&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">nbuffer,&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;PAINTSTRUCT&nbsp;ps;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;HDC&nbsp;hdc;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(uMsg)<br><img id=Codehighlighter1_3008_3196_Open_Image onclick="this.style.display='none'; Codehighlighter1_3008_3196_Open_Text.style.display='none'; Codehighlighter1_3008_3196_Closed_Image.style.display='inline'; Codehighlighter1_3008_3196_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_3008_3196_Closed_Image onclick="this.style.display='none'; Codehighlighter1_3008_3196_Closed_Text.style.display='none'; Codehighlighter1_3008_3196_Open_Image.style.display='inline'; Codehighlighter1_3008_3196_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_3008_3196_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_3008_3196_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_PAINT:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;BeginPaint(hWnd,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ps);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndPaint(hWnd,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ps);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_DESTROY:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;DefWindowProc(hWnd,uMsg,wParam,lParam);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<img src ="http://www.cppblog.com/FateNo13/aggbug/93066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/FateNo13/" target="_blank">把握命运</a> 2009-08-12 19:46 <a href="http://www.cppblog.com/FateNo13/archive/2009/08/12/93066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>