﻿<?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++博客-小步慢跑-随笔分类-win32/MFC</title><link>http://www.cppblog.com/zaccheo/category/19703.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 19 Sep 2012 16:59:52 GMT</lastBuildDate><pubDate>Wed, 19 Sep 2012 16:59:52 GMT</pubDate><ttl>60</ttl><item><title>gdi+ 播放gif 时的一个未捕获异常</title><link>http://www.cppblog.com/zaccheo/archive/2012/09/19/191213.html</link><dc:creator>zaccheo</dc:creator><author>zaccheo</author><pubDate>Wed, 19 Sep 2012 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/zaccheo/archive/2012/09/19/191213.html</guid><wfw:comment>http://www.cppblog.com/zaccheo/comments/191213.html</wfw:comment><comments>http://www.cppblog.com/zaccheo/archive/2012/09/19/191213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zaccheo/comments/commentRss/191213.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zaccheo/services/trackbacks/191213.html</trackback:ping><description><![CDATA[<div class="post">
<div class="body">
<div style="padding-bottom: 0px; border-right-width: 0px; margin: 4px 0px 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" id="01e982fd-2a52-4f87-9fba-82739688795e" class="postBody" contenteditable="true">
<p>&nbsp; 使用gdi+和之前写的 CTimerMgr 写了一个播放gif动画的小控件。原理就是使用gdi+解码gif，读出动画帧间隔，使用CTimerMgr
设置定时器。定时器超在新创建的线程中设置当前应该播放的帧（SelectActiveFrame()），并要求控件重绘(Invalidate())。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用中发现debug下output窗口总是输出 First-chance exception at 0x4aeee2e0
0x80000001: 尚未实现，但并不影响程序运行。后来发现问题就源自于在 定时器线程中调用了 GDI+ 的Image类的
SelectActiveFrame（）。应该是 Image不是线程安全的类导致的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
解决方案很简单，使用WM_Timer做定时器。其实从一开始的实现上就应该使用WM_TIMER，而不是定时器线程。当初使用定时器线程是怕UI线程中有耗时操作会导致gif卡。</p>
<p>但是定时器线程并不能解决这个问题，因为定时器线程仅仅是设置了应当绘制的下一帧，具体的绘制还是在UI线程中处理的。</p>
</div>
</div>
</div>
<img src ="http://www.cppblog.com/zaccheo/aggbug/191213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zaccheo/" target="_blank">zaccheo</a> 2012-09-19 10:52 <a href="http://www.cppblog.com/zaccheo/archive/2012/09/19/191213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>richedit2.0 设置英文字符字体</title><link>http://www.cppblog.com/zaccheo/archive/2012/09/13/190499.html</link><dc:creator>zaccheo</dc:creator><author>zaccheo</author><pubDate>Thu, 13 Sep 2012 03:53:00 GMT</pubDate><guid>http://www.cppblog.com/zaccheo/archive/2012/09/13/190499.html</guid><wfw:comment>http://www.cppblog.com/zaccheo/comments/190499.html</wfw:comment><comments>http://www.cppblog.com/zaccheo/archive/2012/09/13/190499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zaccheo/comments/commentRss/190499.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zaccheo/services/trackbacks/190499.html</trackback:ping><description><![CDATA[<p>richedit 2.0&nbsp;引入了新的一个特性 IMF_AUTOFONT。设置了这个属性后当键盘布局改变后richedit&nbsp;会自动的设置适合当前布局的字体和字符集。所以在richedit中调用</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">SendMessage(&nbsp;EM_SETCHARFORMAT,&nbsp;SCF_ALL,&nbsp;(LPARAM)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">crf);</span></div>
</p>
<p>或会发现对中文字符设置的字体生效的，但是英文字符未生效。</p>
<p>可以去掉这个属性：</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;去掉&nbsp;richedit2.0&nbsp;默认设置了的&nbsp;autofont&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">BOOL&nbsp;CNetRichEditCtrl::DisableAutoFont()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwLanOptions&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;SendMessage(EM_GETLANGOPTIONS,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(dwLanOptions</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">IMF_AUTOFONT)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwLanOptions&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dwLanOptions</span><span style="color: #000000; ">&amp;~</span><span style="color: #000000; ">IMF_AUTOFONT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendMessage(EM_SETLANGOPTIONS,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,dwLanOptions);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;TRUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;FALSE;<br />
}</span></div>
</p>
<p><span style="color: #000000; "></span><span style="color: #000000; "><br />
</span></p>
<dl>
</dl>
<img src ="http://www.cppblog.com/zaccheo/aggbug/190499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zaccheo/" target="_blank">zaccheo</a> 2012-09-13 11:53 <a href="http://www.cppblog.com/zaccheo/archive/2012/09/13/190499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SonicUI 内部定时器实现分析</title><link>http://www.cppblog.com/zaccheo/archive/2012/08/29/188653.html</link><dc:creator>zaccheo</dc:creator><author>zaccheo</author><pubDate>Wed, 29 Aug 2012 09:42:00 GMT</pubDate><guid>http://www.cppblog.com/zaccheo/archive/2012/08/29/188653.html</guid><wfw:comment>http://www.cppblog.com/zaccheo/comments/188653.html</wfw:comment><comments>http://www.cppblog.com/zaccheo/archive/2012/08/29/188653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zaccheo/comments/commentRss/188653.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zaccheo/services/trackbacks/188653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SonicUI中有一个内部定时器的概念(InternalTimer)，SonicUI中的动画效果都是使用的这个定时器。这个定时器实现的思路是很清晰的：WM_TIMER消息加定时轮询。 首先使用SonicUI的工程都有一个全局的CSonicUI类的实例。在这个类中有一个静态的成员变量HWND m_hWnd，它指向的是一个 "SonicWnd"的窗口类的窗口实例。此窗口类在CSoinicUI::Ini...&nbsp;&nbsp;<a href='http://www.cppblog.com/zaccheo/archive/2012/08/29/188653.html'>阅读全文</a><img src ="http://www.cppblog.com/zaccheo/aggbug/188653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zaccheo/" target="_blank">zaccheo</a> 2012-08-29 17:42 <a href="http://www.cppblog.com/zaccheo/archive/2012/08/29/188653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SetWindowPos 使用注意事项</title><link>http://www.cppblog.com/zaccheo/archive/2012/08/24/188156.html</link><dc:creator>zaccheo</dc:creator><author>zaccheo</author><pubDate>Fri, 24 Aug 2012 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/zaccheo/archive/2012/08/24/188156.html</guid><wfw:comment>http://www.cppblog.com/zaccheo/comments/188156.html</wfw:comment><comments>http://www.cppblog.com/zaccheo/archive/2012/08/24/188156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zaccheo/comments/commentRss/188156.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zaccheo/services/trackbacks/188156.html</trackback:ping><description><![CDATA[<p>比起 MoveWindow，SetWindowPos 可以同时改变窗口的大小和ZOrder。但是它的使用没有MoveWindow那么直观。api 原型如下</p> <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"> <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> WINUSERAPI</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> BOOL</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> WINAPI</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> SetWindowPos(</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> __in HWND hWnd,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> __in_opt HWND hWndInsertAfter,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span> __in <span style="color: #0000ff">int</span> X,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span> __in <span style="color: #0000ff">int</span> Y,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> __in <span style="color: #0000ff">int</span> cx,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span> __in <span style="color: #0000ff">int</span> cy,</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span> __in UINT uFlags);</pre><!--CRLF--></div></div>
<p>个人总结有以下几点要注意</p>
<p>1. 当 SetWindowPos&nbsp; 的 nFlags 参数设置的有 SWP_SHOWWINDOW 或 SWP_HIDEWINDOW 时 设置窗口ZOrder的hWndInsertAfter参数和设置大小位置的x，y，cx，cy无效。这个在msdn中有特别的说明</p>
<p>2.当设置窗口置顶时实际上SetWindowPos 是通过给窗口增加 WS_EX_TOPMOST 扩展样式来实现的。而 WS_EX_TOPMOST 的扩展样式是只能设置到顶层窗口的(top level window)。这意味者对子窗口（具有 ws_child风格）的窗口调用下面的代码是无效的，但悲剧的是这个调用的返回值仍然是 true。</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">//hChildWnd 是具有 WS_CHILD风格的窗口 ,下面的操作无效</span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> BOOL bRet = ::SetWindowPos(hChildWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #008000">//hChildWnd 是具有 WS_CHILD风格的窗口,可以 通过下面的调用 把hChildWnd置为 hChildWnd的 sibling 窗口的顶层</span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> BOOL bRet = ::SetWindowPos(hChildWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>&nbsp; </pre><!--CRLF--></div></div><img src ="http://www.cppblog.com/zaccheo/aggbug/188156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zaccheo/" target="_blank">zaccheo</a> 2012-08-24 17:15 <a href="http://www.cppblog.com/zaccheo/archive/2012/08/24/188156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于 TimerQueue 的定时器封装类</title><link>http://www.cppblog.com/zaccheo/archive/2012/08/14/187190.html</link><dc:creator>zaccheo</dc:creator><author>zaccheo</author><pubDate>Tue, 14 Aug 2012 11:09:00 GMT</pubDate><guid>http://www.cppblog.com/zaccheo/archive/2012/08/14/187190.html</guid><wfw:comment>http://www.cppblog.com/zaccheo/comments/187190.html</wfw:comment><comments>http://www.cppblog.com/zaccheo/archive/2012/08/14/187190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zaccheo/comments/commentRss/187190.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zaccheo/services/trackbacks/187190.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本来以为是很简单的事，没想到又牵涉出了线程池，APC，内核定时器对象一大堆没搞明白的知识。先把代码保存下。牵涉到的知识再慢慢消化。 主要使用了以下 API。这些API还是有不少的陷阱（注意点）的，《windows 核心编程》的第11章有详细的解释。     1: CreateTimerQueue   2: DeleteTimerQueueEx   3:&nbsp;    4: CreateTime...&nbsp;&nbsp;<a href='http://www.cppblog.com/zaccheo/archive/2012/08/14/187190.html'>阅读全文</a><img src ="http://www.cppblog.com/zaccheo/aggbug/187190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zaccheo/" target="_blank">zaccheo</a> 2012-08-14 19:09 <a href="http://www.cppblog.com/zaccheo/archive/2012/08/14/187190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>