﻿<?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++博客-chenjt3533</title><link>http://www.cppblog.com/chenjt3533/</link><description>&lt;script type="text/javascript" charset="UTF-8" src="http://www.yulu.info/javascript.asp"&gt;&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 10:09:43 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 10:09:43 GMT</pubDate><ttl>60</ttl><item><title>从Graphics 中获取Bitmap图像</title><link>http://www.cppblog.com/chenjt3533/archive/2014/09/12/208285.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Fri, 12 Sep 2014 08:36:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/09/12/208285.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/208285.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/09/12/208285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/208285.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/208285.html</trackback:ping><description><![CDATA[<div><span style="white-space:pre">	</span>CDC dcTmp;<span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>HDC hDc= graph.GetHDC(); /// &lt;会被加锁&gt;</div><div><span style="white-space:pre">	</span>dcTmp.Attach(hDc);</div><div><span style="white-space:pre">	</span>CBitmap *pBmp = dcTmp.GetCurrentBitmap();</div><div><span style="white-space:pre">	</span>HBITMAP hBITMAP = (HBITMAP)pBmp-&gt;GetSafeHandle();</div><div><span style="white-space:pre">	</span>Bitmap bitmap(hBITMAP, 0);<span style="white-space: pre;">	</span></div><div><span style="white-space:pre">	</span>dcTmp.Detach(); /// &lt;释放&gt;</div><div><span style="white-space:pre">	</span>graph.ReleaseHDC(hDc); /// &lt;解锁&gt;</div><img src ="http://www.cppblog.com/chenjt3533/aggbug/208285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-09-12 16:36 <a href="http://www.cppblog.com/chenjt3533/archive/2014/09/12/208285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记</title><link>http://www.cppblog.com/chenjt3533/archive/2014/09/05/208236.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Fri, 05 Sep 2014 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/09/05/208236.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/208236.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/09/05/208236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/208236.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/208236.html</trackback:ping><description><![CDATA[<div>获取系统版本 http://dreamisx.blog.163.com/blog/static/1150048392012898257606/ http://cool.worm.blog.163.com/blog/static/64339006200911903953953/<br /><br />修改文件属性&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp;strFileName="";<br /><div>//&nbsp;&nbsp;&nbsp;1 &nbsp;.<br />&nbsp; &nbsp; &nbsp; CFileStatus fs;</div><div><span style="white-space:pre">	</span>CFile::GetStatus(strFileName,fs); &nbsp;&nbsp;</div><div><span style="white-space:pre">	</span>fs.m_attribute = CFile::hidden; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//set hidden attribute&nbsp;</div><div><span style="white-space:pre">	</span>CFile::SetStatus(strFileName,fs);　<br />// &nbsp; &nbsp; &nbsp; &nbsp; 2.<br />&nbsp; &nbsp; &nbsp; &nbsp;<span style="white-space: pre;">	</span>GetFileAttributes(strFileName.c_str())<div><span style="white-space:pre">	</span>SetFileAttributes(strFile.c_str(), fileinfo.attrib);</div>&nbsp;<br /><div>std::wstring CDigitalClockEffector::GetUnit(bool bShow, bool bAM, int nType)</div><div>{</div><div><span style="white-space:pre">	</span>std::wstring wstrUnit = L"";</div><div><span style="white-space:pre">	</span>if (bShow)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>switch(nType)</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">		</span>case e_time_type_hh_mm_ss:</div><div><span style="white-space:pre">		</span>case e_time_type_hh_mm:</div><div><span style="white-space:pre">			</span>wstrUnit = bAM ? L"AM" : L"PM";</div><div><span style="white-space:pre">			</span>break;</div><div><span style="white-space:pre">		</span>case e_time_type_hh_s_mm_s_ss_s:</div><div><span style="white-space:pre">		</span>case e_time_type_hh_s_mm_s:</div><div><span style="white-space:pre">			</span>wstrUnit = bAM ? L"上午" : L"下午";</div><div><span style="white-space:pre">			</span>break;</div><div><span style="white-space:pre">		</span>default:</div><div><span style="white-space:pre">			</span>break;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>return wstrUnit;</div><div>}</div></div></div><img src ="http://www.cppblog.com/chenjt3533/aggbug/208236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-09-05 11:30 <a href="http://www.cppblog.com/chenjt3533/archive/2014/09/05/208236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记 文本走马灯特效</title><link>http://www.cppblog.com/chenjt3533/archive/2014/09/01/208192.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Mon, 01 Sep 2014 03:49:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/09/01/208192.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/208192.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/09/01/208192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/208192.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/208192.html</trackback:ping><description><![CDATA[<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 />-->SizeF&nbsp;stringSize,&nbsp;strSize(1000,1000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_bStatic)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;静止，居中&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.SetAlignment(StringAlignmentCenter);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.SetLineAlignment(StringAlignmentCenter);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.MeasureString(m_wstrText.c_str(),&nbsp;m_wstrText.length(),&nbsp;&amp;font,&nbsp;strSize,&nbsp;&amp;fmt,&nbsp;&amp;stringSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RectF&nbsp;rectf(m_rect.GetLeft(),&nbsp;m_rect.GetTop(),&nbsp;m_rect.Width,&nbsp;min(m_rect.Height,&nbsp;stringSize.Height));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawString(graph,&nbsp;m_wstrText,&nbsp;font,&nbsp;solidBrush,&nbsp;rectf,&nbsp;fmt);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;左移，左对齐&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.SetAlignment(StringAlignmentNear);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.SetLineAlignment(StringAlignmentNear);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;测量输出字符串所需要的矩形空间&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::wstring&nbsp;wstr&nbsp;=&nbsp;m_wstrText;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.MeasureString(wstr.c_str(),&nbsp;wstr.length(),&nbsp;&amp;font,&nbsp;strSize,&nbsp;&amp;fmt,&nbsp;&amp;stringSize);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;fProgress&nbsp;=&nbsp;m_timeInfo.GetProgress();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">REAL&nbsp;fOffsetX&nbsp;=&nbsp;max(m_rect.Width,&nbsp;stringSize.Width)&nbsp;*&nbsp;fProgress;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REAL&nbsp;fOffsetX&nbsp;=&nbsp;(stringSize.Width&nbsp;+&nbsp;m_rect.Width)&nbsp;*&nbsp;fProgress;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REAL&nbsp;fDiffx&nbsp;=&nbsp;fOffsetX&nbsp;-&nbsp;m_rect.Width;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(fDiffx&nbsp;&gt;&nbsp;0.000001)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nLength&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::wstring&nbsp;wstrTmp&nbsp;=&nbsp;L"";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">do</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wstrTmp&nbsp;=&nbsp;wstr.substr(0,&nbsp;nLength++);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.MeasureString(wstrTmp.c_str(),&nbsp;wstrTmp.length(),&nbsp;&amp;font,&nbsp;strSize,&nbsp;&amp;fmt,&nbsp;&amp;stringSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">while</span>(stringSize.Width&nbsp;&lt;&nbsp;abs(fDiffx));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--nLength;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wstr&nbsp;=&nbsp;wstr.substr(nLength,&nbsp;wstr.length()&nbsp;-&nbsp;nLength);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.MeasureString(L"1",&nbsp;2,&nbsp;&amp;font,&nbsp;strSize,&nbsp;&amp;fmt,&nbsp;&amp;stringSize);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fOffsetX&nbsp;=&nbsp;max(m_rect.GetLeft(),&nbsp;m_rect.GetRight()&nbsp;-&nbsp;fOffsetX);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RectF&nbsp;rect(fOffsetX,&nbsp;m_rect.GetTop(),&nbsp;min(m_rect.Width,&nbsp;max(1,&nbsp;m_rect.GetRight()&nbsp;-&nbsp;fOffsetX)),&nbsp;min(m_rect.Height,&nbsp;stringSize.Height));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawString(graph,&nbsp;wstr,&nbsp;font,&nbsp;solidBrush,&nbsp;rect,&nbsp;fmt);<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.cppblog.com/chenjt3533/aggbug/208192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-09-01 11:49 <a href="http://www.cppblog.com/chenjt3533/archive/2014/09/01/208192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取农历年、时辰</title><link>http://www.cppblog.com/chenjt3533/archive/2014/08/26/208145.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Tue, 26 Aug 2014 15:28:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/08/26/208145.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/208145.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/08/26/208145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/208145.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/208145.html</trackback:ping><description><![CDATA[<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 />--><br /><span style="color: #0000FF; ">void</span>&nbsp;CCalendar::FormatLunarYear(WORD&nbsp;iYear,&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;pBuffer)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;szText1[]&nbsp;=&nbsp;"甲乙丙丁戊己庚辛壬癸";<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;szText2[]&nbsp;=&nbsp;"子丑寅卯辰巳午未申酉戌亥";<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;szText3[]&nbsp;=&nbsp;"鼠牛虎免龙蛇马羊猴鸡狗猪";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pBuffer,&nbsp;&nbsp;&nbsp;szText1+((iYear-4)%10)*2,&nbsp;2);<br />&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pBuffer+2,&nbsp;szText2+((iYear-4)%12)*2,&nbsp;2);<br />&nbsp;&nbsp;&nbsp;&nbsp;pBuffer[4]='&nbsp;';<br />&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pBuffer+5,&nbsp;szText3+((iYear-4)%12)*2,&nbsp;2);<br />&nbsp;&nbsp;&nbsp;&nbsp;strcpy(pBuffer+7,&nbsp;"年");<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;CCalendar::FormatLunarHour(WORD&nbsp;iHour,&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*pBuffer)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;szText[]&nbsp;=&nbsp;"子丑寅卯辰巳午未申酉戌亥";<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nIndex&nbsp;=&nbsp;(iHour&nbsp;+&nbsp;1)&nbsp;/&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(12&nbsp;==&nbsp;nIndex&nbsp;&amp;&amp;&nbsp;23&nbsp;==&nbsp;iHour)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nIndex&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pBuffer,&nbsp;szText+nIndex*2,&nbsp;2);<br />&nbsp;&nbsp;&nbsp;&nbsp;strcpy(pBuffer+2,&nbsp;"时");<br />}</div><img src ="http://www.cppblog.com/chenjt3533/aggbug/208145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-08-26 23:28 <a href="http://www.cppblog.com/chenjt3533/archive/2014/08/26/208145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ffplay 将视频帧转换成bmp图片</title><link>http://www.cppblog.com/chenjt3533/archive/2014/08/21/208083.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Thu, 21 Aug 2014 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/08/21/208083.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/208083.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/08/21/208083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/208083.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/208083.html</trackback:ping><description><![CDATA[<div><div><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: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;video_thread2(<span style="color: #0000FF; ">void</span>&nbsp;*arg)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;AVPacket&nbsp;pkt&nbsp;=&nbsp;{&nbsp;0&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;VideoState&nbsp;*<span style="color: #0000FF; ">is</span>&nbsp;=&nbsp;(VideoState&nbsp;*)arg;<br />&nbsp;&nbsp;&nbsp;&nbsp;AVFrame&nbsp;*pFrame&nbsp;=&nbsp;avcodec_alloc_frame();<br />&nbsp;&nbsp;&nbsp;&nbsp;int64_t&nbsp;pts_int&nbsp;=&nbsp;AV_NOPTS_VALUE,&nbsp;pos&nbsp;=&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;pts;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ret;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(;;)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(<span style="color: #0000FF; ">is</span>-&gt;paused&nbsp;&amp;&amp;&nbsp;!<span style="color: #0000FF; ">is</span>-&gt;videoq.abort_request)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDL_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avcodec_get_frame_defaults(pFrame);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;av_free_packet(&amp;pkt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;get_video_frame(<span style="color: #0000FF; ">is</span>,&nbsp;pFrame,&nbsp;&amp;pts_int,&nbsp;&amp;pkt);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(ret&nbsp;&lt;&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">goto</span>&nbsp;the_end;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!ret)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pts&nbsp;=&nbsp;pts_int&nbsp;*&nbsp;av_q2d(<span style="color: #0000FF; ">is</span>-&gt;video_st-&gt;time_base);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;queue_picture(<span style="color: #0000FF; ">is</span>,&nbsp;pFrame,&nbsp;pts,&nbsp;pkt.pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(ret&nbsp;&lt;&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">goto</span>&nbsp;the_end;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(<span style="color: #0000FF; ">is</span>-&gt;step)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream_toggle_pause(<span style="color: #0000FF; ">is</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nWidth&nbsp;=&nbsp;pFrame-&gt;width;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nHeight&nbsp;=&nbsp;pFrame-&gt;height;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVPixelFormat&nbsp;srcfmt&nbsp;=&nbsp;(AVPixelFormat)pFrame-&gt;format;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVPixelFormat&nbsp;dstfmt&nbsp;=&nbsp;AV_PIX_FMT_BGR24;<span style="color: #008000; ">//</span><span style="color: #008000; ">AV_PIX_FMT_RGB24;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">AV_PIX_FMT_BGR24;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVFrame&nbsp;*pFrameRGB;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrameRGB&nbsp;=&nbsp;avcodec_alloc_frame();<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;src_bytes_num&nbsp;=&nbsp;avpicture_get_size(srcfmt,&nbsp;nWidth,&nbsp;nHeight);<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t*&nbsp;src_buff&nbsp;=&nbsp;(uint8_t*)av_malloc(src_bytes_num);<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avpicture_fill((AVPicture*)pFrame,&nbsp;src_buff,&nbsp;srcfmt,&nbsp;nWidth,&nbsp;nHeight);</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;dst_bytes_num&nbsp;=&nbsp;avpicture_get_size(dstfmt,&nbsp;nWidth,&nbsp;nHeight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t*&nbsp;dst_buff&nbsp;=&nbsp;(uint8_t*)av_malloc(dst_bytes_num);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avpicture_fill((AVPicture*)pFrameRGB,&nbsp;dst_buff,&nbsp;dstfmt,&nbsp;nWidth,&nbsp;nHeight);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwsContext*&nbsp;pSwsCtx&nbsp;=&nbsp;sws_getContext(nWidth,&nbsp;nHeight,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcfmt,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nWidth,&nbsp;nHeight,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dstfmt,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWS_BICUBIC,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,NULL,NULL);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;转换图像格式&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sws_scale(pSwsCtx,&nbsp;pFrame-&gt;data,&nbsp;pFrame-&gt;linesize,&nbsp;0,&nbsp;nHeight,&nbsp;pFrameRGB-&gt;data,&nbsp;pFrameRGB-&gt;linesize);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nnn&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;((nnn++&nbsp;%&nbsp;5)&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">saveAsBitmap(pFrameRGB,&nbsp;nWidth,&nbsp;nHeight,&nbsp;nnn);</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />the_end:<br />&nbsp;&nbsp;&nbsp;&nbsp;avcodec_flush_buffers(<span style="color: #0000FF; ">is</span>-&gt;video_st-&gt;codec);<br />&nbsp;&nbsp;&nbsp;&nbsp;av_free_packet(&amp;pkt);<br />&nbsp;&nbsp;&nbsp;&nbsp;avcodec_free_frame(&amp;pFrame);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /><br /><br /><span style="color: #0000FF; ">bool</span>&nbsp;saveAsBitmap(AVFrame&nbsp;*pFrameRGB,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;width,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;height,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iFrame)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(NULL&nbsp;==&nbsp;pFrameRGB-&gt;data[0])<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*pFile&nbsp;=&nbsp;NULL;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BITMAPFILEHEADER&nbsp;bmpheader;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BITMAPINFO&nbsp;bmpinfo;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;fileName[32];&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;bpp&nbsp;=&nbsp;24;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;open&nbsp;file&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(fileName,&nbsp;"./images/frame%d.bmp",&nbsp;iFrame);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pFile&nbsp;=&nbsp;fopen(fileName,&nbsp;"wb");&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!pFile)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;bmpheader.bfType&nbsp;=&nbsp;('M'&nbsp;&lt;&lt;8)|'B';&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpheader.bfReserved1&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpheader.bfReserved2&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpheader.bfOffBits&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(BITMAPFILEHEADER)&nbsp;+&nbsp;<span style="color: #0000FF; ">sizeof</span>(BITMAPINFOHEADER);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpheader.bfSize&nbsp;=&nbsp;bmpheader.bfOffBits&nbsp;+&nbsp;width*height*bpp/8;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biSize&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(BITMAPINFOHEADER);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biWidth&nbsp;=&nbsp;width;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biHeight&nbsp;=&nbsp;-height;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">reverse&nbsp;the&nbsp;image&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biPlanes&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biBitCount&nbsp;=&nbsp;bpp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biCompression&nbsp;=&nbsp;BI_RGB;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biSizeImage&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biXPelsPerMeter&nbsp;=&nbsp;100;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biYPelsPerMeter&nbsp;=&nbsp;100;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biClrUsed&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bmpinfo.bmiHeader.biClrImportant&nbsp;=&nbsp;0;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(&amp;bmpheader,&nbsp;<span style="color: #0000FF; ">sizeof</span>(BITMAPFILEHEADER),&nbsp;1,&nbsp;pFile);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(&amp;bmpinfo.bmiHeader,&nbsp;<span style="color: #0000FF; ">sizeof</span>(BITMAPINFOHEADER),&nbsp;1,&nbsp;pFile);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*buffer&nbsp;=&nbsp;pFrameRGB-&gt;data[0];&nbsp;&nbsp;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;h=0;&nbsp;h&lt;height;&nbsp;h++)&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;w=0;&nbsp;w&lt;width;&nbsp;w++)&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(buffer+2,&nbsp;1,&nbsp;1,&nbsp;pFile);&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(buffer+1,&nbsp;1,&nbsp;1,&nbsp;pFile);&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(buffer,&nbsp;1,&nbsp;1,&nbsp;pFile);&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;+=&nbsp;3;&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(buffer,width*height*bpp/8,1,pFile);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;fclose(pFile);&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;&nbsp;&nbsp;<br />}&nbsp;</div></div></div><img src ="http://www.cppblog.com/chenjt3533/aggbug/208083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-08-21 22:21 <a href="http://www.cppblog.com/chenjt3533/archive/2014/08/21/208083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现对话框透明</title><link>http://www.cppblog.com/chenjt3533/archive/2014/05/11/206889.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Sun, 11 May 2014 01:54:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2014/05/11/206889.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/206889.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2014/05/11/206889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/206889.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/206889.html</trackback:ping><description><![CDATA[<pre style="line-height: normal;"><span style="color: #990000; font-family: Consolas, 'Courier New', Courier, mono; font-size: 15px; white-space: normal; background-color: #ffffff;">继承CDialogEx,并在 OnInitDialog() 添加一下代码<br /></span><br />SetBackgroundColor(#010b15); <br />LONG ExtendedStyle = GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE ); <br />SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,ExtendedStyle | WS_EX_LAYERED ); <br />::SetLayeredWindowAttributes(GetSafeHwnd(),#010b15,0,LWA_COLORKEY);</pre><img src ="http://www.cppblog.com/chenjt3533/aggbug/206889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2014-05-11 09:54 <a href="http://www.cppblog.com/chenjt3533/archive/2014/05/11/206889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ 汉字转换成拼音</title><link>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200721.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Fri, 31 May 2013 08:53:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200721.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/200721.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/200721.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/200721.html</trackback:ping><description><![CDATA[<p><br />&nbsp;首先有必要说下机内码与区位：</p>
<p>&nbsp;机内码高位字节=(区号)H+A0H<br />&nbsp;机内码低位字节=(位号)H+A0H</p>
<p>&nbsp;例子：<br />&nbsp;string str = "陈"; // 机内码存储，占两个字节<br />&nbsp;unsigned char ucHigh = (unsigned char)strText[0]; // 获取机内码高字节 ucHigh = 179<br />&nbsp;unsigned char ucLow&nbsp; = (unsigned char)strText[1]; // 获取机内码低字节 ucLow = 194<br />&nbsp;unsigned int uCode = (ucHigh - 0xA0) * 100 + ucLow - 0xA0; // 区位码 uCode = (179 - 160) * 100 + 194 - 160 = 1934;<br />&nbsp;接下来就是根据区位码 1934 找到对应的拼音，怎么找呢？看源码吧。</p><br /><br />源码下载 <a href="http://pan.baidu.com/share/link?shareid=483963&amp;uk=1812123514">http://pan.baidu.com/share/link?shareid=483963&amp;uk=1812123514</a>&nbsp; <br /><img src ="http://www.cppblog.com/chenjt3533/aggbug/200721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2013-05-31 16:53 <a href="http://www.cppblog.com/chenjt3533/archive/2013/05/31/200721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ 获取汉字首字母</title><link>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200716.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Fri, 31 May 2013 05:01:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200716.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/200716.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2013/05/31/200716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/200716.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/200716.html</trackback:ping><description><![CDATA[<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;CONVERT(start,&nbsp;end,&nbsp;code,&nbsp;letter)&nbsp;if(code&nbsp;&gt;=&nbsp;start&nbsp;&amp;&amp;&nbsp;code&nbsp;&lt;=&nbsp;end)&nbsp;return&nbsp;letter</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;Convert(wchar_t&nbsp;n)<br /><img id="Codehighlighter1_175_993_Open_Image" onclick="this.style.display='none'; Codehighlighter1_175_993_Open_Text.style.display='none'; Codehighlighter1_175_993_Closed_Image.style.display='inline'; Codehighlighter1_175_993_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_175_993_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_175_993_Closed_Text.style.display='none'; Codehighlighter1_175_993_Open_Image.style.display='inline'; Codehighlighter1_175_993_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_175_993_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_175_993_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_178_195_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_195_Open_Text.style.display='none'; Codehighlighter1_178_195_Closed_Image.style.display='inline'; Codehighlighter1_178_195_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_178_195_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_178_195_Closed_Text.style.display='none'; Codehighlighter1_178_195_Open_Image.style.display='inline'; Codehighlighter1_178_195_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_178_195_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">/**/</span><span id="Codehighlighter1_178_195_Open_Text"><span style="color: #808080">///</span><span style="color: #008000">&nbsp;根据汉字区域码获取拼音声母</span><span style="color: #808080"></span></span><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB0A1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB0C4</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0XB0C5</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0XB2C0</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB2C1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB4ED</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">c</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB4EE</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB6E9</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">d</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB6EA</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB7A1</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">e</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB7A2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB8c0</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">f</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB8C1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xB9FD</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">g</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xB9FE</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xBBF6</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">h</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xBBF7</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xBFA5</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">j</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xBFA6</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC0AB</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">k</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC0AC</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC2E7</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">l</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC2E8</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC4C2</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">m</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC4C3</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC5B5</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">n</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC5B6</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC5BD</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">o</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC5BE</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC6D9</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">p</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC6DA</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC8BA</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">q</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC8BB</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xC8F5</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">r</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xC8F6</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xCBF0</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">s</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xCBFA</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xCDD9</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">t</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xCDDA</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xCEF3</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">w</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xCEF4</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xD188</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">x</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xD1B9</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xD4D0</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">y</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CONVERT(</span><span style="color: #000000">0xD4D1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xD7F9</span><span style="color: #000000">,&nbsp;n,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">z</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img alt="" 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">'</span><span style="color: #000000">\0</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Test_Invert()<br /><img id="Codehighlighter1_1015_1408_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1015_1408_Open_Text.style.display='none'; Codehighlighter1_1015_1408_Closed_Image.style.display='inline'; Codehighlighter1_1015_1408_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1015_1408_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1015_1408_Closed_Text.style.display='none'; Codehighlighter1_1015_1408_Open_Image.style.display='inline'; Codehighlighter1_1015_1408_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_1015_1408_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1015_1408_Open_Text"><span style="color: #000000">{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;sChinese&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">根据汉字区域码获取汉字首字母</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;输入汉字</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wchar_t&nbsp;wchr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sChinese.length()&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;buff&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[nCount];<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;memset(buff,&nbsp;</span><span style="color: #000000">0x00</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">nCount</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;nCount;&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_1238_1355_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1238_1355_Open_Text.style.display='none'; Codehighlighter1_1238_1355_Closed_Image.style.display='inline'; Codehighlighter1_1238_1355_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1238_1355_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1238_1355_Closed_Text.style.display='none'; Codehighlighter1_1238_1355_Open_Image.style.display='inline'; Codehighlighter1_1238_1355_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1238_1355_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1238_1355_Open_Text"><span style="color: #000000">{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wchr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(sChinese[j</span><span style="color: #000000">++</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xff</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">8</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;高字节</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wchr&nbsp;</span><span style="color: #000000">|=</span><span style="color: #000000">&nbsp;(sChinese[j</span><span style="color: #000000">++</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xff</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;低字节</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Convert(wchr);<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pin&nbsp;yin&nbsp;=&nbsp;[&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;buff&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;]</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;&nbsp;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><img height="61" alt="" src="http://www.cppblog.com/images/cppblog_com/chenjt3533/reulst.jpg" width="283" border="0" longdesc="" /><br /><br /><br /><br /><img src ="http://www.cppblog.com/chenjt3533/aggbug/200716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2013-05-31 13:01 <a href="http://www.cppblog.com/chenjt3533/archive/2013/05/31/200716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《c Templates 》笔记</title><link>http://www.cppblog.com/chenjt3533/archive/2013/05/30/200696.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Thu, 30 May 2013 07:36:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2013/05/30/200696.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/200696.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2013/05/30/200696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/200696.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/200696.html</trackback:ping><description><![CDATA[<p>1、Function Templates(函数模版)</p>
<p>例：<br />tempalte &lt;typename T&gt;<br />T GetMax(T a, T b)<br />{<br />&nbsp;return a &lt; b ? b : a;<br />}</p>
<p>/// 重载<br />tempalte &lt;typename T&gt;<br />T GetMax(T a, T b, T c)<br />{<br />&nbsp;return (c &lt; GetMax(a, b) ? GetMax(a, b) : c);<br />}</p>
<p>/// 默认类型<br />template &lt;typename T=int&gt;<br />T GetMax(T a, T b)<br />{<br />&nbsp;retrun a &lt; b ? b : a;<br />}</p>
<p>2、Class Templates(类模版)<br />例：<br />template &lt;typename T&gt;<br />class MyStack<br />{<br />&nbsp;friend class CFriend1;&nbsp;&nbsp; // 普通友元类不需要先申明<br />&nbsp;friend class CFriend2&lt;T&gt;; // error, 友元模板类必须先申明</p>
<p>&nbsp;public:<br />&nbsp;&nbsp;void Push(T const&amp;);<br />&nbsp;&nbsp;void Pop();<br />&nbsp;&nbsp;T Top() const;<br />&nbsp;&nbsp;bool Empty() const;<br />&nbsp;private:<br />&nbsp;&nbsp;std::vector&lt;T&gt; elems;<br />};</p>
<p>void MyStack&lt;T&gt;::Push(T const&amp; e)<br />{<br />&nbsp;elems.push_back(e);<br />}</p>
<p>/// 继承<br />template &lt;typename T&gt;<br />class Derived : public MyStack&lt;T&gt;<br />{<br />public:<br />&nbsp;void Test()<br />&nbsp;{<br />&nbsp;&nbsp;Top(); // 应该使用this-&gt;Top() 或 MyStack&lt;T&gt;::Top(), 否则就调用外部Top()，或者编译错误<br />&nbsp;}</p>
<p>&nbsp;/// 成员模版函数，不能是virtual<br />&nbsp;template &lt;typename T2&gt;<br />&nbsp;void Test2()<br />&nbsp;{<br />&nbsp;&nbsp;<br />&nbsp;}<br />};</p>
<p><br />3、NonType Templates(非类型模版参数)<br />局限性：通常只能是常数整数(包括enum)和指向局部变量的指针。<br />例:<br />template &lt;typename T, int MAXSIZE&gt;<br />struct NonTypeStruct<br />{<br />&nbsp;T elems[MAXSIZE];<br />};</p>
<p><br />4、typename 关键字<br />typename是在C++标准化工程中被引入的，目的是向编译器说明template内部的某个表示符号是个类型。<br />例：<br />template&lt;typename T&gt;<br />struct MyStruct<br />{<br />&nbsp;typename T::SubType* m_Ptr; // 表示m_Ptr是指向SubType是T内部类型的一个指针，若没有typename，就表</p>
<p>示T的静态变量SubType乘以m_Ptr。<br />};</p>
<p>5、双重模版参数<br />例：<br />template &lt;typename T, template &lt;typename&gt; class CT&gt;<br />class DoubleTemplate<br />{<br />&nbsp;CT&lt;t&gt; m_ct;&nbsp;<br />};<br />DoubleTemplate&lt;int, std::vector&gt; dbTemplate; // 类中定义了一个vector&lt;int&gt;的成员属性m_ct;</p>
<p>6、模板的申明和定义必须在同一个文档中，否则会出现连接错误<br />例：<br />// Test.h<br />template &lt;typename T&gt;<br />T Max(T a);</p>
<p>// Test.cpp<br />template &lt;typename T&gt;<br />T Max(T a) { return a; }</p>
<p>// Main.cpp<br />#include "Test.h"</p>
<p>void main()<br />{<br />&nbsp;int a = Max&lt;int&gt;(1); // error LNK2019，除非同时 #inclde "test.cpp"<br />}</p>
<p>7、模版类不能和其它不同类型的实体同名。<br />例：<br />int c;<br />class c; // ok，普通类可以<br />template &lt;typename T&gt;<br />class c; // error，模板类不行</p>
<p>8、在类中声明友元模版类<br />例：<br />class Manager<br />{<br />&nbsp;template &lt;typename T&gt;<br />&nbsp;friend class Task;<br />};</p>
<p>9、看看小细节<br />例：<br />template &lt;bool b&gt;<br />class Invert<br />{<br />&nbsp;public:<br />&nbsp;&nbsp;static bool const result = !b;<br />};<br />bool bTest = Invert&lt;(1&gt;0)&gt;::result; // (1&gt;0)小括号必须存在</p>
<p>std::vector&lt;std::list&lt;int&gt; &gt; vectList; // &lt;std::list&lt;int&gt; &gt;空格必须存在</p><img src ="http://www.cppblog.com/chenjt3533/aggbug/200696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2013-05-30 15:36 <a href="http://www.cppblog.com/chenjt3533/archive/2013/05/30/200696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++模板简单分析与举例</title><link>http://www.cppblog.com/chenjt3533/archive/2013/03/30/198947.html</link><dc:creator>chenjt3533</dc:creator><author>chenjt3533</author><pubDate>Sat, 30 Mar 2013 06:23:00 GMT</pubDate><guid>http://www.cppblog.com/chenjt3533/archive/2013/03/30/198947.html</guid><wfw:comment>http://www.cppblog.com/chenjt3533/comments/198947.html</wfw:comment><comments>http://www.cppblog.com/chenjt3533/archive/2013/03/30/198947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjt3533/comments/commentRss/198947.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjt3533/services/trackbacks/198947.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#pragma&nbsp;once#include&nbsp;&lt;iostream&gt;/**//*/////////////////////////////////////////////&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/chenjt3533/archive/2013/03/30/198947.html'>阅读全文</a><img src ="http://www.cppblog.com/chenjt3533/aggbug/198947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjt3533/" target="_blank">chenjt3533</a> 2013-03-30 14:23 <a href="http://www.cppblog.com/chenjt3533/archive/2013/03/30/198947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>