ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>а√在线中文在线新版,欧美韩国日本,欧美拍拍视频http://www.aygfsteel.com/Yipak/category/34371.html成功在于你是否努åŠ?希望在于你是否相信自å·? zh-cnTue, 16 Sep 2008 10:50:21 GMTTue, 16 Sep 2008 10:50:21 GMT60Ansi、Unicode、UTF8字符串之间的转换和写入文本文ä»?/title><link>http://www.aygfsteel.com/Yipak/articles/229223.html</link><dc:creator>æ­È¥ž</dc:creator><author>æ­È¥ž</author><pubDate>Tue, 16 Sep 2008 09:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/229223.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/229223.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/229223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/229223.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/229223.html</trackback:ping><description><![CDATA[ <p>转蝲è¯äh³¨æ˜Žå‡ºå¤?a >http://www.cppblog.com/greatws/archive/2008/08/31/60546.html</a><br /><br />最˜q‘有人问我关于这个的问题åQŒå°±æ­¤å†™ä¸€½‹‡blog<br /><br />Ansi字符串我们最熟æ?zh¨¨n)‰åQŒè‹±æ–‡å ä¸€ä¸ªå­—节,汉字2个字节,以一个\0¾l“å°¾åQŒå¸¸ç”¨äºŽtxt文本文äšg<br />Unicode字符ä¸ÔŒ¼Œæ¯ä¸ªå­—符(汉字、英文字æ¯?都占2个字节,ä»?个连¾l­çš„\0¾l“å°¾åQŒNT操作¾pȝ»Ÿå†…核用的是这¿Uå­—½W¦ä¸²åQŒå¸¸è¢«å®šä¹‰äØ“typedef unsigned short wchar_t;所以我们有时常会见åˆîC»€ä¹ˆchar*无法转换为unsigned short*之类的错误,其实ž®±æ˜¯unicode<br />UTF8是Unicode一¿UåŽ‹¾~©åŞ式,英文A在unicode中表½CÞZØ“0x0041åQŒè€å¤–觉得˜q™ç§å­˜å‚¨æ–¹å¼å¤ªæµªè´¹ï¼Œå› äØ“‹¹ªè´¹äº?0%的空é—ß_¼ŒäºŽæ˜¯ž®±æŠŠè‹±æ–‡åŽ‹ç¾ƒæˆ?个字节,成了utf8¾~–码åQŒä½†æ˜¯æ±‰å­—在utf8中占3个字节,昄¡„¶ç”¨åšä¸­æ–‡ä¸å¦‚ansi合算åQŒè¿™ž®±æ˜¯ä¸­å›½çš„网™å는¨ä½œansi¾~–码而老外的网™åµå¸¸ç”¨utf8的原因ã€?br />UTF8在还游戏里运用的很广泛,比如WOWçš„lua脚本½{?br /><br />下面来说一下è{换,主要用代码来说明å?br />写文件我用了CFile¾c»ï¼Œå…¶å®žç”¨FILE*ä¹‹ç±»çš„ä¹Ÿæ˜¯ä¸€æ øP¼Œå†™æ–‡ä»¶å’Œå­—符串什么类别没有关¾p»ï¼Œ¼‹¬äšg只关心数据和长度<br /><br />Ansi转Unicode<br />介绍2¿Uæ–¹æ³?br /><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: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonAnsiToUnicode()<br /><img id="Codehighlighter1_51_1122_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1122_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_51_1122_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_51_1122_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> ansi to unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我ä»?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预è{换,得到所需½Iºé—´çš„大ž®?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> wcsLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">分配½Iºé—´è¦ç»™'\0'留个½Iºé—´åQŒMultiByteToWideChar不会¾l?\0'½Iºé—´</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> wchar_t[wcsLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加ä¸?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wszString[wcsLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文æœ?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文ä»Óž¼Œå¤?个字èŠ?xfeffåQŒä½Žä½?xff写在å‰?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">")</span> <span style="COLOR: #000000">, CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">æ–‡äšgå¼€å¤?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Write(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">\xff\xfe</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, </span> <span style="COLOR: #000000">2</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(wszString, wcsLen </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(wchar_t));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] wszString;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">æ–ÒŽ(gu¨©)³•2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">讄¡½®å½“前地域信息åQŒä¸è®„¡½®çš„话åQŒä‹É用这¿Uæ–¹æ³•,中文不会正确昄¡¤º<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">需è¦?include<locale.h></span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    setlocale(LC_CTYPE, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">chs</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wchar_t wcsStr[</span> <span style="COLOR: #000000">100</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">注意下面是大写SåQŒåœ¨unicode中,代表后面是ansi字符ä¸?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">swprintf是sprintfçš„unicode版本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">格式的前面要加大写LåQŒä»£è¡¨æ˜¯unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    swprintf(wcsStr, L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">%S</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, szAnsi);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxW(GetSafeHwnd(), wcsStr, wcsStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br /> <br />Unicode转Ansi<br />也是2¿Uæ–¹æ³?br /><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: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToAnsi()<br /><img id="Codehighlighter1_51_1013_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1013_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_51_1013_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_51_1013_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> unicode to ansi</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我ä»?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预è{换,得到所需½Iºé—´çš„大ž®ï¼Œ˜q™æ¬¡ç”¨çš„函数和上面名字相å?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> ansiLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">同上åQŒåˆ†é…ç©ºé—´è¦¾l?\0'留个½Iºé—´</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">[ansiLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版对应的strlen是wcslen</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加ä¸?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    szAnsi[ansiLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">Ansi版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文æœ?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文ä»Óž¼ŒANSIæ–‡äšg没有BOM</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">")</span> <span style="COLOR: #000000">, CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">æ–‡äšgå¼€å¤?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(szAnsi, ansiLen </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szAnsi;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">æ–ÒŽ(gu¨©)³•2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">和上面一æ ähœ‰å¦ä¸€¿Uæ–¹æ³?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    setlocale(LC_CTYPE, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">chs</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000"> szStr[</span> <span style="COLOR: #000000">100</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">注意下面是大写,在ansi中,代表后面是unicode字符ä¸?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">sprintf</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    sprintf(szStr, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">%S</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, wszString);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br /> <br />Unicode转UTF8<br /><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: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToU8()<br /><img id="Codehighlighter1_49_850_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_850_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_49_850_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_49_850_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> unicode to UTF8</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我ä»?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预è{换,得到所需½Iºé—´çš„大ž®ï¼Œ˜q™æ¬¡ç”¨çš„函数和上面名字相å?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> u8Len </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">同上åQŒåˆ†é…ç©ºé—´è¦¾l?\0'留个½Iºé—´<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">UTF8虽然是Unicode的压¾~©åŞ式,但也是多字节字符ä¸ÔŒ¼Œæ‰€ä»¥å¯ä»¥ä»¥charçš„åŞ式保å­?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">[u8Len </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版对应的strlen是wcslen</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加ä¸?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    szU8[u8Len] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">MessageBox不支持UTF8,所以只能写文äšg<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文æœ?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文ä»Óž¼ŒUTF8çš„BOMæ˜?xbfbbef</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">), CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">æ–‡äšgå¼€å¤?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写BOMåQŒåŒæ ·ä½Žä½å†™åœ¨å‰</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">\xef\xbb\xbf</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, </span> <span style="COLOR: #000000">3</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(szU8, u8Len </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szU8;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br />UTF8转UNICODE<br /><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: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonU8ToUnicode()<br /><img id="Codehighlighter1_49_613_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_613_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_49_613_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_49_613_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">UTF8 to Unicode<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">ç”׃ºŽä¸­æ–‡ç›´æŽ¥å¤åˆ¶˜q‡æ¥ä¼šæˆä¹Þq åQŒç¼–译器有时会报错,故采ç”?6˜q›åˆ¶å½¢å¼</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预è{换,得到所需½Iºé—´çš„大ž®?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> wcsLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">分配½Iºé—´è¦ç»™'\0'留个½Iºé—´åQŒMultiByteToWideChar不会¾l?\0'½Iºé—´</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> wchar_t[wcsLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加ä¸?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wszString[wcsLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本同ansi to unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span> <span style="COLOR: #000000">}</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> </span> </div> <p> <br /> <br />Ansi转换utf8å’Œutf8转换Ansiž®±æ˜¯ä¸Šé¢2个的¾l“合åQŒæŠŠunicodeä½œäØ“ä¸­é—´é‡ï¼Œ˜q›è¡Œ2‹Æ¡è{换即å?br /><br />by greatws </p> <img src ="http://www.aygfsteel.com/Yipak/aggbug/229223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">æ­È¥ž</a> 2008-09-16 17:59 <a href="http://www.aygfsteel.com/Yipak/articles/229223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在C语言中怎样获得汉字¾~–码?http://www.aygfsteel.com/Yipak/articles/229069.htmlæ­È¥žæ­È¥žMon, 15 Sep 2008 17:11:00 GMThttp://www.aygfsteel.com/Yipak/articles/229069.htmlhttp://www.aygfsteel.com/Yipak/comments/229069.htmlhttp://www.aygfsteel.com/Yipak/articles/229069.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/229069.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/229069.html
但是åQŒè¦æ˜¯ç”¨å­—符数组存的汉字åQŒæ€Žæ ·èŽ·å¾—ä»–çš„¾~–码åQŸæ±‰å­—用的是两个字节存储åQŒæ˜¯ä¸æ˜¯˜q™ä¸¤ä¸ªå­—节都有ASII码?那该怎么获得他们åQŸç„¶åŽæŠŠä»–们¾lŸä¸€æˆä¸€ä¸ªç¼–码?


汉字¾~–码分好几种åQŒä¸çŸ¥é“你想问的是哪¿Uï¼Ÿ

C/C++支持的是ASCIIåQŒä¸˜q‡æ±‰å­—编码中åQŒGB2312与ASCII是兼容的åQŒæ‰€ä»¥å¯ä»¥åœ¨C中获得汉字的GB2312¾~–码

GB2312是两个字节的åQŒç¬¬ä¸€å­—节是高八位åQŒç¬¬äºŒå­—节是低八位,比如下面的程序:

#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
strcpy(a,"å•?);
printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
return 0;
}

a[0]是“啊”字的高八位åQŒa[1]是低八位åQŒç¨‹åºè¿è¡Œç»“果是a[0]=B0 a[1]=A1åQŒç”¨16˜q›åˆ¶è¡¨ç¤ºçš„,所以“啊”字的GB2312¾~–码是B0A1了~

输出时要强制转换成unsigned charåQŒä¸ç„¶å°±å˜æˆè´Ÿæ•°äº†ï¼Œå› äØ“¾~–码是以8位的无符åäh•´æ•îCؓ单位çš?

当然也可以è{æˆ?0˜q›åˆ¶å•¦ï¼Œæ¯”如

int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];

bå³äØ“æ±‰å­—çš?0˜q›åˆ¶GB2312¾~–码äº?br />


æ­È¥ž 2008-09-16 01:11 发表评论
]]>
C++帔R‡çš„表½C?/title><link>http://www.aygfsteel.com/Yipak/articles/227334.html</link><dc:creator>æ­È¥ž</dc:creator><author>æ­È¥ž</author><pubDate>Fri, 05 Sep 2008 14:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/227334.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/227334.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/227334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/227334.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/227334.html</trackback:ping><description><![CDATA[ <font face="宋体" size="4"> C++帔R‡çš„表½C?/font> <div> <br /> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    一、char型常é‡?/font> </div> <div> <font face="宋体" size="4"> <br />    (一)单个字符:用单引号定界åQŒå¦‚'a'åQŒC++转义字符如下åQ?br />        (01)\n        换行<br />        (02)\r        回èžR<br />        (03)\t        æ°´åã^制表½W?br />        (04)\v        垂直制表½W?br />        (05)\b        退æ ?br />        (06)\a        振铃<br />        (07)\\        字符\<br />        (08)\'        字符'<br />        (09)\"        字符"<br />        (10)\...      1-3位八˜q›åˆ¶ASCII码代表的字符('\101')<br />        (11)\x.....   十六˜q›åˆ¶ASCII码代表的字符åQŒä½æ•°çº¦æŸä¸ä¸¥æ ¼åQŒåœ¨å­—符串表½CºæŸä¸ªå­—½W¦æ—¶è¯äh…Ž</font> <font face="宋体" size="4">用之<br />        (12)\uxxxx    四位16˜q›åˆ¶æ•°å­—<br />          或\Uxxxxxxxx八位16˜q›åˆ¶æ•°å­—实现通用½W¦å·(Universal character name)<br />          注意åQŒå¿…™åÀL˜¯å››ä½æˆ–八位,位数ž®‘或多都会出错ã€?/font> </div> <div> <font face="宋体" size="4">    </font> </div> <div> <font face="宋体" size="4">    (äº?字符ä¸ÔŒ¼Œç”¨åŒå¼•号定界åQŒå¦‚"Code::Blocks"åQŒæ³¨æ„å­—½W¦ä¸²çš„长度与占用内存的大ž®ï¼Œå› å­—½W¦ä¸²¾l?/font> <font face="宋体" size="4">æŸæ ‡å¿—äØ“'\0'åQŒæ‰€ä»¥å ç”¨å†…存的大小比实际可用长度多1个字½W¦ã€‚å­—½W¦ä¸²¾l“束标志不必特别指明åQ?/font> <font face="宋体" size="4">"abcdeabcde\0",特别指明反而会再多占用一个字节的内存½Iºé—´ã€?br />#include <iostream><br />#include <cstring><br />    <br />using namespace std;</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    char s[13]="abcdeabcde";</font> </div> <div> <font face="宋体" size="4">    char s1[]="abcdeabcde";</font> </div> <div> <font face="宋体" size="4">    char s2[]="abcdeabcde\0\0\0\0";<br />    cout<<sizeof(s)<<endl;<br />    cout<<strlen(s)<<endl;</font> </div> <div> <font face="宋体" size="4">    cout<<sizeof(s1)<<endl;<br />    cout<<strlen(s1)<<endl;</font> </div> <div> <font face="宋体" size="4">    cout<<sizeof(s2)<<endl;<br />    cout<<strlen(s2)<<endl;    <br />    return EXIT_SUCCESS;<br />}<br />//-----<br />¾l“果为:<br />13<br />10</font> </div> <div> <font face="宋体" size="4">11</font> </div> <div> <font face="宋体" size="4">10</font> </div> <div> <font face="宋体" size="4">15</font> </div> <div> <font face="宋体" size="4">10<br />//-----</font> </div> <div> <font face="宋体" size="4">    </font> </div> <div> <font face="宋体" size="4">    (ä¸?wchar_t型常量加前缀LåQŒåªèƒ½æ˜¯å¤§å†™L。如:<br />        wchar_t c=L'A';//˜q™é‡Œçš„L可不加,看编译器是否认可<br />        wchar_t cc[]=L"mytest";//˜q™é‡Œçš„Lå¿…é¡»åŠ?/font> </div> <div> <font face="宋体" size="4">ä¾?<br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using std::cout;<br />using std::endl;</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    wchar_t c=L'A';<br />    char cc='A';<br />    wchar_t cp[]=L"mytest";<br />    char ccp[]="mytest1";<br />    cout<<c<<endl;<br />    cout<<(char)c<<endl;<br />    cout<<cc<<endl;<br />    cout<<cp<<endl;<br />    cout<<ccp<<endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />65<br />A<br />A<br />0x22ff60<br />mytest1<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    二、整型常é‡?/font> </div> <div> <font face="宋体" size="4"> <br /> </font> </div> <div> <font face="宋体" size="4">    (一)书写帔R‡æ—Óž¼Œè‹¥ä¸åŠ ä“Q何修饰符åQŒç¼–译器通常会认为是intæ•´åž‹åQŒä½†æœ‰æ—¶ä¹Ÿä¼šæ ÒŽ(gu¨©)®æ“ä½œè‡ªåŠ¨å®žçŽ°</font> <font face="宋体" size="4">合适的转换ã€?br />#include <iostream><br />#include <climits></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    cout<<INT_MAX<<endl;<br />    cout<<SHRT_MAX<<endl;<br />    short x=32768;<br />    short k=32767+1;<br />    long long y=2147483647;<br />    long long d=INT_MAX+1;<br />    cout<<x<<endl;<br />    cout<<k<<endl;<br />    cout<<y<<endl;<br />    cout<<d<<endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />2147483647<br />32767<br />-32768<br />-32768<br />2147483647<br />-2147483648<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    (äº?无符åäh•´åž‹åŽ¾~€æ˜¯U(u),long型后¾~€æ˜¯L(l),long long型后¾~€æ˜¯LL(ll)åQŒL或LL或以与U¾l„合ã€?/font> </div> <div> <br /> <font face="宋体" size="4">    三、æÕQ点型帔R‡</font> </div> <div> <font face="宋体" size="4"> <br />    默认是double¾cÕdž‹åQŒè¡¨½Cºfloat¾cÕdž‹å¸”R‡åŠ åŽ¾~€F(f)åQŒè¡¨½Cºlong double¾cÕdž‹å¸”R‡åŠ åŽ¾~€L(l)ã€?/font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    四、布?y¨­u)®”型帔R‡åªæœ‰trueå’ŒfalseåQŒåªè®¤å°å†™ã€‚当然可以用常数来表½Cºï¼Œ0为假åQŒéžé›¶äؓ真ã€?/font> </div> <div> </div> <div> <font face="宋体" size="4">bool x=false;<br />bool y=1.234;<br />cout<<x<<endl;<br />cout.setf(ios_base::boolalpha);<br />cout<<y<<endl;</font> </div> <div> <font face="宋体" size="4">//-----<br />0<br />true<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">ä¾?:只有一个函敎ͼŒä½†è°ƒç”¨æ—¶å‚数不同åQŒç¼–译器ž®½é‡åŒšw…<br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">void show(long);</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);<br />}</font> </div> <div> <font face="宋体" size="4">void show(long demo) {<br />    cout<<"long"<<endl;<br />}<br />//-----<br />long<br />long<br />long<br />//-----</font> </div> <div> <font face="宋体" size="4">ä¾?:有多个函敎ͼŒ¾~–è¯‘å™¨ä¼šè®¤äØ“æ˜¯äh䏸™®¾è®¡å‡½æ•°é‡è½½ï¼Œž®†ä¸å†è‡ªåŠ¨åŒ¹é…?br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">void show(int);<br />void show(long);<br />void show(unsigned long);</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);//æ”¹äØ“show(123LL)试试如何åQŸå°†ä¼šå‡ºé”™ã€?br />}</font> </div> <div> <font face="宋体" size="4">void show(int demo) {<br />    cout<<"int"<<endl;<br />}<br />void show(long demo) {<br />    cout<<"long"<<endl;<br />}<br />void show(unsigned long demo) {<br />    cout<<"unsigned long"<<endl;<br />}<br />//-----<br />int<br />long<br />unsigned long<br />//-----</font> </div> <img src ="http://www.aygfsteel.com/Yipak/aggbug/227334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">æ­È¥ž</a> 2008-09-05 22:24 <a href="http://www.aygfsteel.com/Yipak/articles/227334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC_æ–‡äšg操作http://www.aygfsteel.com/Yipak/articles/227022.htmlæ­È¥žæ­È¥žThu, 04 Sep 2008 09:25:00 GMThttp://www.aygfsteel.com/Yipak/articles/227022.htmlhttp://www.aygfsteel.com/Yipak/comments/227022.htmlhttp://www.aygfsteel.com/Yipak/articles/227022.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227022.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227022.html 1 åQ?/span>   æ–‡äšg的查æ‰?/span>  

当对一个文件操作时åQŒå¦‚果不知道该文件是否存在,ž®Þp¦é¦–å…ˆ˜q›è¡ŒæŸ¥æ‰¾ã€?/span> MFC 中有一个专门用来进行文件查扄¡š„¾c?/span> “CFileFindâ€?/font> åQŒä‹É用它可以方便快捷地进行文件的查找。下面这ŒDµä»£ç æ¼”½CÞZº†˜q™ä¸ª¾cÈš„æœ€åŸºæœ¬ä½¿ç”¨æ–ÒŽ(gu¨©)³•ã€?/span>  

CString strFileTitle; 

CFileFind finder; 

BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab"); 

while(bWorking) 

{ 

bWorking=finder.FindNextFile(); 

strFileTitle=finder.GetFileTitle(); 

} 

2
åQ?/span>   æ–‡äšg的打开 / 保存对话æ¡?/span>
 

让用户选择文äšg˜q›è¡Œæ‰“开和存储操作时åQŒå°±è¦ç”¨åˆ°æ–‡ä»¶æ‰“å¼€ / 保存对话框ã€?/span> MFC 的类 “CFileDialogâ€?/font> 用于实现˜q™ç§åŠŸèƒ½ã€‚ä‹Éç”?/span> “CFileDialogâ€?/font> 声明一个对象时åQŒç¬¬ä¸€ä¸?/span> BOOL åž‹å‚æ•°ç”¨äºŽæŒ‡å®šæ–‡ä»¶çš„æ‰“å¼€æˆ–ä¿å­˜ï¼Œå½“äØ“ TRUE 时将构造一个文件打开对话框,ä¸?/span> FALSE 时构造一个文件保存对话框ã€?/span>  

在构é€?/span> “CFileDialogâ€?/font> 对象æ—Óž¼Œå¦‚果在参æ•îC¸­æŒ‡å®šäº?/span> “OFN_ALLOWMULTISELECTâ€?/font> 风格åQŒåˆ™åœ¨æ­¤å¯¹è¯æ¡†ä¸­å¯ä»¥˜q›è¡Œå¤šé€‰æ“ä½œã€‚此时要重点注意为此 “CFileDialogâ€?/font> 对象çš?/span> “m_ofn.lpstrFileâ€?/font> 分配一块内存,用于存储多选操作所˜q”回的所有文件èµ\径名åQŒå¦‚果不˜q›è¡Œåˆ†é…æˆ–分配的内存˜q‡å°ž®×ƒ¼šå¯ÆD‡´æ“ä½œå¤ÞpÓ|。下面这ŒD늨‹åºæ¼”½CÞZº†æ–‡äšg打开对话框的使用æ–ÒŽ(gu¨©)³•ã€?/span>  

CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, "All Files (*.*)|*.*| |", AfxGetMainWnd());

CString str(" ", 10000); 

mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); 

str.ReleaseBuffer(); 

POSITION mPos=mFileDlg.GetStartPosition(); 

CString pathName(" ", 128); 

CFileStatus status; 

while(mPos!=NULL) 

{ 

pathName=mFileDlg.GetNextPathName(mPos); 

CFile::GetStatus(pathName, status); 

} 

3
åQ?/span>   æ–‡äšg的读å†?/span>
 

æ–‡äšg的读写非帔R‡è¦ï¼Œä¸‹é¢ž®†é‡ç‚¹è¿›è¡Œä»‹¾lã€‚文件读写最普通的æ–ÒŽ(gu¨©)³•是直接ä‹Éç”?/span> “CFileâ€?/font> ¾c»è¿›è¡Œï¼Œå¦‚文件的è¯Õd†™å¯ä»¥ä½¿ç”¨ä¸‹é¢çš„æ–¹æ³•:  

//
å¯ÒŽ(gu¨©)–‡ä»¶è¿›è¡Œè¯»æ“ä½œ
 

char sRead[2]; 

CFile mFile(_T("user.txt"),CFile::modeRead); 

if(mFile.GetLength()<2) 

return; 

mFile.Read(sRead
åQ?/span>
2); 

mFile.Close(); 

//
å¯ÒŽ(gu¨©)–‡ä»¶è¿›è¡Œå†™æ“ä½œ
 

CFile mFile(_T("user.txt"), CFile::modeWrite|CFile::modeCreate); 

mFile.Write(sRead
åQ?/span>
2); 

mFile.Flush(); 

mFile.Close(); 

虽然˜q™ç§æ–ÒŽ(gu¨©)³•最为基本,但是它ä‹É用烦琐,而且功能非常½Ž€å•。这里推荐的是ä‹Éç”?/span> “CArchiveâ€?/font> åQŒå®ƒçš„ä‹É用方法简单且功能十分强大。首先还是用 “CFileâ€?/font> 声明一个对象,然后用这个对象的指针做参数声明一ä¸?/span> “CArchiveâ€?/font> 对象åQŒè¿™æ ·å°±å¯ä»¥éžå¸¸æ–¹ä¾¿åœ°å­˜å‚¨å„¿Uå¤æ‚的数据¾cÕdž‹äº†ã€‚它的ä‹É用方法见下例åQ?/span>  

//
å¯ÒŽ(gu¨©)–‡ä»¶è¿›è¡Œå†™æ“ä½œ
 

CString strTemp; 

CFile mFile; 

mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); 

CArchive ar(&mFile
åQ?/span>
CArchive::store); 

ar<<strTemp; 

ar.Close(); 

mFile.Close(); 

//
å¯ÒŽ(gu¨©)–‡ä»¶è¿›è¡Œè¯»æ“ä½œ
 

CFile mFile; 

if(mFile.Open("d:\\dd\\try.TRY"
åQ?/span>
CFile::modeRead)==0) 

return; 

CArchive ar(&mFile
åQ?/span>
CArchive::load); 

ar>>strTemp; 

ar.Close(); 

mFile.Close(); 

“CArchive�/font>
çš?/span> â€?lt;<â€?/font> å’?/span> â€?gt;>â€?/font> 操作½W¦ç”¨äºŽç®€å•数据类型的è¯Õd†™åQŒå¯¹äº?/span> “CObjectâ€?/font> ‹z„¡”Ÿ¾cȝš„对象的存取要使用 ReadObject() å’?/span> WriteObject() 。ä‹Éç”?/span> “CArchiveâ€?/font> çš?/span> ReadClass() å’?/span> WriteClass() ˜q˜å¯ä»¥è¿›è¡Œç±»çš„读写,如:  

//
存储 CAboutDlg ¾c?/span>
 

ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); 

//
è¯Õd– CAboutDlg ¾c?/span>
 

CRuntimeClass*mRunClass=ar.Read 

Class(); 

//
使用 CAboutDlg ¾c?/span>
 

CObject* pObject=mRunClass->CreateObject(); 

((CDialog* )pObject)->DoModal(); 

虽然 VC 提供的文æ¡?/span> / 视结构中的文档也可进行这些操作,但是不容易理解、ä‹É用和½Ž¡ç†åQŒå¦‚果要˜q›è¡Œçš„æ–‡ä»¶æ“ä½œåªæ˜¯ç®€å•çš„è¯Õd†™æ•´è¡Œçš„å­—½W¦ä¸²åQŒå¾è®®ä‹Éç”?/span> “CStdioFileâ€?/font> åQŒç”¨å®ƒæ¥˜q›è¡Œæ­¤ç±»æ“ä½œéžå¸¸æ–¹ä¾¿åQŒå¦‚下例åQ?/span>  

CStdioFile mFile; 

CFileException mExcept; 

mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); 

CString string="I am a string."; 

mFile.WriteString(string); 

mFile.Close(); 

4
åQŽäÍ时文件的使用
 

正规软äšg¾lå¸¸ç”¨åˆ°ä¸´æ—¶æ–‡äšgåQŒç»å¸¸å¯ä»¥çœ‹åˆ?/span> “C:\Windows\Tempâ€?/font> 目录下有大量的扩展名ä¸?/span> â€?tmpâ€?/font> 的文ä»Óž¼Œ˜q™äº›ž®±æ˜¯½E‹åº˜qè¡Œæ—¶å¾ç«‹çš„临时文äšg。äÍ时文件的使用æ–ÒŽ(gu¨©)³•åŸºæœ¬ä¸Žå¸¸è§„æ–‡ä»¶ä¸€æ øP¼Œåªæ˜¯æ–‡äšg名应该调用函æ•?/span> GetTempFileName() 获得。它的第一个参数是建立此äÍ时文件的路径åQŒç¬¬äºŒä¸ªå‚数是徏立äÍ时文件名的前¾~€åQŒç¬¬å››ä¸ªå‚数用于得到建立的äÍ时文件名。得到此临时文äšg名以后,ž®±å¯ä»¥ç”¨å®ƒæ¥å»ºç«‹òq¶æ“ä½œæ–‡ä»¶äº†åQŒå¦‚åQ?/span>  

char szTempPath[_MAX_PATH]
åQ?/span>
szTempfile[_MAX_PATH]; 

GetTempPath(_MAX_PATH, szTempPath); 

GetTempFileName(szTempPath
åQ?/span> _T ("my_") åQ?/span> 0 åQ?/span>
szTempfile); 

CFile m_tempFile(szTempfile
åQ?/span>
CFile:: modeCreate|CFile:: modeWrite); 

char m_char='a'; 

m_tempFile.Write(&m_char
åQ?/span>
2); 

m_tempFile.Close(); 

5
åQŽæ–‡ä»¶çš„复制、删除等
 

MFC
中没有提供直接进行这些操作的功能åQŒå› è€Œè¦ä½¿ç”¨ SDK ã€?/span> SDK 中的文äšg相关函数常用的有 CopyFile() ã€?/span> CreateDirectory() ã€?/span> DeleteFile() ã€?/span> MoveFile() 。它们的用法很简单,可参è€?/span> MSDN ã€?/span>



]]>
è°ˆVC++¾l“合FLASH开发精¾ŸŽç¨‹åºç•Œé?/title><link>http://www.aygfsteel.com/Yipak/articles/227016.html</link><dc:creator>æ­È¥ž</dc:creator><author>æ­È¥ž</author><pubDate>Thu, 04 Sep 2008 09:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/227016.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/227016.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/227016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/227016.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/227016.html</trackback:ping><description><![CDATA[做过界面开发的人想必都清楚如果要用VC++来开发漂亮的½E‹åºç•Œé¢å…‰™š¾åº¦çœŸæ˜¯è‹¦ä¸å ª­a€, 当然VC++可以作出漂亮的界面但要投入大量的人力和时间其代码量可以用‹¹·é‡æ¥åŞ宏V€‚BUG自然也就不计其数。本文主要介¾lå¦‚何采用VC++¾l“合FLASH在短旉™—´å†…以及很ž®‘的人力投入的情况开发出¾_„¡¾Žæ¼‚亮的èÊY件界面。在本例中VC++主要˜q›è¡Œç›¸å…³æ•°æ®é€»è¾‘及业务处理,FLASH则进行相关的界面表现。FLASHå’ŒVC++之间采用XML‹¹é€šä¿¡ã€‚VC++çš„XMLè§£æžåº“äØ“å¼€æºçš„TinyXml解析库ã€?æœ¬å®žä¾‹çš„å¼€å‘çŽ¯å¢ƒäØ“visual studio 2003 + FLASH8.0。其效果囑֦‚下:<br /><img height="344" alt="" src="http://www.cppblog.com/images/cppblog_com/beifangying/show.jpg" width="490" align="left" border="0" /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />下面ž®†è¿›è¡Œè¯¦¾l†ä»‹¾lï¼š<br />1、首先徏一个基于MFC的对话框应用½E‹åºã€?br />2ã€åœ¨å¯¹è¯æ¡†ä¸­æ’å…¥åäØ“Shockwave Flash Objectçš„ActiveX控äšg.<br />3ã€äØ“è¯¥FLASH控äšgæ·ÕdŠ ç›¸åº”çš„å˜é‡å³FSCommand消息处理函数.<br />4、在OnInitDialog()函数æ·ÕdŠ å¦‚ä¸‹ä»£ç ž®†ç›¸å…Ïx•°æ®ä¼ ¾l™FLASH界面 <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"><span style="COLOR: #008080"> 1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: 在此æ·ÕdŠ é¢å¤–çš„åˆå§‹åŒ–ä»£ç <br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加蝲flash界面</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> szBuf[</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">];<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> szXml;<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    CString szFlashPath(m_FlashCtrl.GetModulePath());<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szFlashPath </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">演示界面.swf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.LoadMovie(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, szFlashPath);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    MoveWindow(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">490</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">345</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.MoveWindow(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">490</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">345</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®æ ‡é¢˜æ ?/span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    TiXmlElement xRoot(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">win_app</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    sprintf(szBuf, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%u</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0xf0000006</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szBuf);<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    TiXmlElement xItem(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">title</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">我的‹¹‹è¯•½E‹åº</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®¾l„合框的数据</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    xRoot.Clear();<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml.clear();<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">76</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    TiXmlElement xQuery(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">query</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sel_item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">xRoot.InsertEndChild(xQuery);</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.RemoveAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">title</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">武林外传</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">西游è®?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">三国演义</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">¾U¢æ¥¼æ¢?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">™ì”法英雄</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xQuery);<br /></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />     m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());<br /></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®åˆ—表框数æ?/span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">55</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    xRoot.Clear();<br /></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.Clear();<br /></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml.clear();<br /></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">77</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sel_item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">汉皇重色思們֛½</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">御宇多年求不å¾?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">杨家有女初长æˆ?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">70</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">å…Õdœ¨æ·±é—ºäººæœªè¯?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">71</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">天生丽质难自å¼?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">74</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">76</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xQuery);<br /></span><span style="COLOR: #008080">77</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">78</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">79</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());</span></div>5、在OnFsCommand()中处理FLASH发来的消æ?<br /><a ><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"><span style="COLOR: #008080"> 1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CUIShowDlg::OnFsCommand(LPCTSTR command, LPCTSTR args)<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_60_659_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_659_Open_Text.style.display='none'; Codehighlighter1_60_659_Closed_Image.style.display='inline'; Codehighlighter1_60_659_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_60_659_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_659_Closed_Text.style.display='none'; Codehighlighter1_60_659_Open_Image.style.display='inline'; Codehighlighter1_60_659_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_60_659_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_60_659_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id="Codehighlighter1_68_597_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_597_Open_Text.style.display='none'; Codehighlighter1_68_597_Closed_Image.style.display='inline'; Codehighlighter1_68_597_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_68_597_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_597_Closed_Text.style.display='none'; Codehighlighter1_68_597_Open_Image.style.display='inline'; Codehighlighter1_68_597_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_68_597_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_68_597_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nEvent </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TiXmlDocument xmlData;<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        xmlData.Parse(command);<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (xmlData.Error())<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id="Codehighlighter1_164_189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_189_Open_Text.style.display='none'; Codehighlighter1_164_189_Closed_Image.style.display='inline'; Codehighlighter1_164_189_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_164_189_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_189_Closed_Text.style.display='none'; Codehighlighter1_164_189_Open_Image.style.display='inline'; Codehighlighter1_164_189_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_164_189_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_164_189_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> (__LINE__);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TiXmlElement </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pRoot </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> xmlData.FirstChildElement();<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (NULL </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> pRoot)<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id="Codehighlighter1_268_293_Open_Image" onclick="this.style.display='none'; Codehighlighter1_268_293_Open_Text.style.display='none'; Codehighlighter1_268_293_Closed_Image.style.display='inline'; Codehighlighter1_268_293_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_268_293_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_268_293_Closed_Text.style.display='none'; Codehighlighter1_268_293_Open_Image.style.display='inline'; Codehighlighter1_268_293_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_268_293_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_268_293_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> (__LINE__);<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        pRoot</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Attribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">nEvent);<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(nEvent)<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img id="Codehighlighter1_353_594_Open_Image" onclick="this.style.display='none'; Codehighlighter1_353_594_Open_Text.style.display='none'; Codehighlighter1_353_594_Closed_Image.style.display='inline'; Codehighlighter1_353_594_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_353_594_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_353_594_Closed_Text.style.display='none'; Codehighlighter1_353_594_Open_Image.style.display='inline'; Codehighlighter1_353_594_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_353_594_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_594_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000000</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">¿UÕdЍ½H—口消息</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000001</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">关闭½H—口</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            EndDialog(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000003</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最ž®åŒ–½H—口</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            ShowWindow(SW_MINIMIZE);<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (<img src="http://www.cppblog.com/Images/dot.gif" />)<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img id="Codehighlighter1_613_657_Open_Image" onclick="this.style.display='none'; Codehighlighter1_613_657_Open_Text.style.display='none'; Codehighlighter1_613_657_Closed_Image.style.display='inline'; Codehighlighter1_613_657_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_613_657_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_613_657_Closed_Text.style.display='none'; Codehighlighter1_613_657_Open_Image.style.display='inline'; Codehighlighter1_613_657_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_613_657_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_613_657_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TRACE(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\r\n收到无效的命令Â? %s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, command);    <br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span></div></a>到此一‹Æ„¡²¾¾ŸŽçš„软äšg界面已经开发完成。有兴趣的朋友可以下载我的源代码看看ã€?br /><a >/Files/beifangying/UIShow.rar</a><br /><img src ="http://www.aygfsteel.com/Yipak/aggbug/227016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">æ­È¥ž</a> 2008-09-04 17:16 <a href="http://www.aygfsteel.com/Yipak/articles/227016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>è°ˆVC++¾l“合FLASH开发精¾ŸŽç¨‹åºç•Œé?/title><link>http://www.aygfsteel.com/Yipak/articles/227017.html</link><dc:creator>æ­È¥ž</dc:creator><author>æ­È¥ž</author><pubDate>Thu, 04 Sep 2008 09:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/227017.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/227017.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/227017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/227017.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/227017.html</trackback:ping><description><![CDATA[做过界面开发的人想必都清楚如果要用VC++来开发漂亮的½E‹åºç•Œé¢å…‰™š¾åº¦çœŸæ˜¯è‹¦ä¸å ª­a€, 当然VC++可以作出漂亮的界面但要投入大量的人力和时间其代码量可以用‹¹·é‡æ¥åŞ宏V€‚BUG自然也就不计其数。本文主要介¾lå¦‚何采用VC++¾l“合FLASH在短旉™—´å†…以及很ž®‘的人力投入的情况开发出¾_„¡¾Žæ¼‚亮的èÊY件界面。在本例中VC++主要˜q›è¡Œç›¸å…³æ•°æ®é€»è¾‘及业务处理,FLASH则进行相关的界面表现。FLASHå’ŒVC++之间采用XML‹¹é€šä¿¡ã€‚VC++çš„XMLè§£æžåº“äØ“å¼€æºçš„TinyXml解析库ã€?æœ¬å®žä¾‹çš„å¼€å‘çŽ¯å¢ƒäØ“visual studio 2003 + FLASH8.0。其效果囑֦‚下:<br /><img height="344" alt="" src="http://www.cppblog.com/images/cppblog_com/beifangying/show.jpg" width="490" align="left" border="0" /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />下面ž®†è¿›è¡Œè¯¦¾l†ä»‹¾lï¼š<br />1、首先徏一个基于MFC的对话框应用½E‹åºã€?br />2ã€åœ¨å¯¹è¯æ¡†ä¸­æ’å…¥åäØ“Shockwave Flash Objectçš„ActiveX控äšg.<br />3ã€äØ“è¯¥FLASH控äšgæ·ÕdŠ ç›¸åº”çš„å˜é‡å³FSCommand消息处理函数.<br />4、在OnInitDialog()函数æ·ÕdŠ å¦‚ä¸‹ä»£ç ž®†ç›¸å…Ïx•°æ®ä¼ ¾l™FLASH界面 <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"><span style="COLOR: #008080"> 1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: 在此æ·ÕdŠ é¢å¤–çš„åˆå§‹åŒ–ä»£ç <br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加蝲flash界面</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> szBuf[</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">];<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> szXml;<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    CString szFlashPath(m_FlashCtrl.GetModulePath());<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szFlashPath </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">演示界面.swf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.LoadMovie(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, szFlashPath);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    MoveWindow(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">490</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">345</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.MoveWindow(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">490</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">345</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®æ ‡é¢˜æ ?/span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    TiXmlElement xRoot(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">win_app</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    sprintf(szBuf, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%u</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0xf0000006</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szBuf);<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    TiXmlElement xItem(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">title</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">我的‹¹‹è¯•½E‹åº</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®¾l„合框的数据</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    xRoot.Clear();<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml.clear();<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">76</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    TiXmlElement xQuery(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">query</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sel_item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">xRoot.InsertEndChild(xQuery);</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.RemoveAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">title</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">武林外传</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">西游è®?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">三国演义</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">¾U¢æ¥¼æ¢?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">™ì”法英雄</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xQuery);<br /></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />     m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());<br /></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">讄¡½®åˆ—表框数æ?/span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">55</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    xRoot.Clear();<br /></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.Clear();<br /></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml.clear();<br /></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">77</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sel_item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">汉皇重色思們֛½</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">御宇多年求不å¾?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">杨家有女初长æˆ?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">70</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">å…Õdœ¨æ·±é—ºäººæœªè¯?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">71</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xItem.SetAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">天生丽质难自å¼?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">74</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xQuery.InsertEndChild(xItem);<br /></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">76</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    xRoot.InsertEndChild(xQuery);<br /></span><span style="COLOR: #008080">77</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">78</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    szXml </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> xRoot;<br /></span><span style="COLOR: #008080">79</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />    m_FlashCtrl.SetVariable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_root.g_Protocol.win_data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, szXml.c_str());</span></div>5、在OnFsCommand()中处理FLASH发来的消æ?<br /><a ><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"><span style="COLOR: #008080"> 1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CUIShowDlg::OnFsCommand(LPCTSTR command, LPCTSTR args)<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_60_659_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_659_Open_Text.style.display='none'; Codehighlighter1_60_659_Closed_Image.style.display='inline'; Codehighlighter1_60_659_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_60_659_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_659_Closed_Text.style.display='none'; Codehighlighter1_60_659_Open_Image.style.display='inline'; Codehighlighter1_60_659_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_60_659_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_60_659_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id="Codehighlighter1_68_597_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_597_Open_Text.style.display='none'; Codehighlighter1_68_597_Closed_Image.style.display='inline'; Codehighlighter1_68_597_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_68_597_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_597_Closed_Text.style.display='none'; Codehighlighter1_68_597_Open_Image.style.display='inline'; Codehighlighter1_68_597_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_68_597_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_68_597_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nEvent </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TiXmlDocument xmlData;<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        xmlData.Parse(command);<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (xmlData.Error())<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id="Codehighlighter1_164_189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_189_Open_Text.style.display='none'; Codehighlighter1_164_189_Closed_Image.style.display='inline'; Codehighlighter1_164_189_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_164_189_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_189_Closed_Text.style.display='none'; Codehighlighter1_164_189_Open_Image.style.display='inline'; Codehighlighter1_164_189_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_164_189_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_164_189_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> (__LINE__);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TiXmlElement </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pRoot </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> xmlData.FirstChildElement();<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (NULL </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> pRoot)<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id="Codehighlighter1_268_293_Open_Image" onclick="this.style.display='none'; Codehighlighter1_268_293_Open_Text.style.display='none'; Codehighlighter1_268_293_Closed_Image.style.display='inline'; Codehighlighter1_268_293_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_268_293_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_268_293_Closed_Text.style.display='none'; Codehighlighter1_268_293_Open_Image.style.display='inline'; Codehighlighter1_268_293_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_268_293_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_268_293_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> (__LINE__);<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        pRoot</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Attribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">nEvent);<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(nEvent)<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img id="Codehighlighter1_353_594_Open_Image" onclick="this.style.display='none'; Codehighlighter1_353_594_Open_Text.style.display='none'; Codehighlighter1_353_594_Closed_Image.style.display='inline'; Codehighlighter1_353_594_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_353_594_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_353_594_Closed_Text.style.display='none'; Codehighlighter1_353_594_Open_Image.style.display='inline'; Codehighlighter1_353_594_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_353_594_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_594_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000000</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">¿UÕdЍ½H—口消息</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000001</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">关闭½H—口</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            EndDialog(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xff000003</span><span style="COLOR: #000000">:            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最ž®åŒ–½H—口</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            ShowWindow(SW_MINIMIZE);<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (<img src="http://www.cppblog.com/Images/dot.gif" />)<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img id="Codehighlighter1_613_657_Open_Image" onclick="this.style.display='none'; Codehighlighter1_613_657_Open_Text.style.display='none'; Codehighlighter1_613_657_Closed_Image.style.display='inline'; Codehighlighter1_613_657_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_613_657_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_613_657_Closed_Text.style.display='none'; Codehighlighter1_613_657_Open_Image.style.display='inline'; Codehighlighter1_613_657_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_613_657_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_613_657_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />        TRACE(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\r\n收到无效的命令Â? %s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, command);    <br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span></div></a>到此一‹Æ„¡²¾¾ŸŽçš„软äšg界面已经开发完成。有兴趣的朋友可以下载我的源代码看看ã€?br /><a >/Files/beifangying/UIShow.rar</a><br /><img src ="http://www.aygfsteel.com/Yipak/aggbug/227017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">æ­È¥ž</a> 2008-09-04 17:16 <a href="http://www.aygfsteel.com/Yipak/articles/227017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++变量ç”Ïx˜Žhttp://www.aygfsteel.com/Yipak/articles/226947.htmlæ­È¥žæ­È¥žThu, 04 Sep 2008 06:44:00 GMThttp://www.aygfsteel.com/Yipak/articles/226947.htmlhttp://www.aygfsteel.com/Yipak/comments/226947.htmlhttp://www.aygfsteel.com/Yipak/articles/226947.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/226947.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/226947.html曄¡»¼„°åˆ°˜q‡è®©ä½ è¿·æƒ‘不解、类ä¼égºŽint * (* (*fp1) (int) ) [10];˜q™æ ·çš„变量声明吗åQŸæœ¬æ–‡å°†ç”±æ˜“到难åQŒä¸€æ­¥ä¸€æ­¥æ•™ä¼šä½ å¦‚何理解˜q™ç§å¤æ‚çš„C/C++声明åQšæˆ‘ä»¬å°†ä»Žæ¯å¤©éƒ½èƒ½ç¢°åˆ°çš„è¾ƒç®€å•çš„å£°æ˜Žå…¥æ‰‹åQŒç„¶åŽé€æ­¥åŠ å…¥const修饰½W¦å’ŒtypedefåQŒè¿˜æœ‰å‡½æ•°æŒ‡é’ˆï¼Œæœ€åŽä»‹¾lä¸€ä¸ªèƒ½å¤Ÿè®©ä½ å‡†¼‹®åœ° 理解ä»ÖM½•C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明òq¶ä¸æ˜¯å¥½çš„ç¼–½E‹é£Žæ û|¼›æˆ‘这里仅仅是教你如何åŽÈ†è§£è¿™äº›å£°æ˜Žã€‚注 意:ä¸ÞZº†ä¿è¯èƒ½å¤Ÿåœ¨åŒä¸€è¡Œä¸Šæ˜„¡¤ºä»£ç å’Œç›¸å…Ïx³¨é‡Šï¼Œæœ¬æ–‡æœ€å¥½åœ¨è‡›_°‘1024x768分èöL率的昄¡¤ºå™¨ä¸Šé˜…读。Â?

基础 

让我们从一个非常简单的例子开始,如下åQšÂ?

int n; 

˜q™ä¸ªåº”è¯¥è¢«ç†è§£äØ“â€œdeclare n as an int”(n是一个int型的变量åQ‰ã€‚Â?

接下åŽÀL¥çœ‹ä¸€ä¸‹æŒ‡é’ˆå˜é‡ï¼Œå¦‚下åQšÂ?

int *p; 

˜q™ä¸ªåº”è¯¥è¢«ç†è§£äØ“â€œdeclare p as an int *”(p是一个int *型的变量åQ‰ï¼Œæˆ–者说p是一个指向一个int型变量的指针。我惛_œ¨˜q™é‡Œå±•开讨论一下:我觉得在声明一个指针(或引用)¾cÕdž‹çš„变量时åQŒæœ€å¥½å°†*åQˆæˆ–&åQ‰å†™åœ¨ç´§é å˜é‡ä¹‹å‰ï¼Œè€Œä¸æ˜¯ç´§è·ŸåŸºæœ¬ç±»åž‹ä¹‹åŽã€‚这样可以避免一些理解上的误区,比如åQšÂ?

int*  p,q; 

½W¬ä¸€çœ¼çœ‹åŽ»ï¼Œå¥½åƒæ˜¯på’Œq都是int*¾cÕdž‹çš„,但事实上åQŒåªæœ‰p是一个指针,而q是一个最½Ž€å•çš„int型变量。Â?

我们˜q˜æ˜¯¾l§ç®‹æˆ‘们前面的话题,再来看一个指针的指针的例子: 

char **argv; 

理论上,对于指针的çñ”数没有限åˆÓž¼Œä½ å¯ä»¥å®šä¹‰ä¸€ä¸ªæÕQ点类型变量的指针的指针的指针的指é’?.. 

再来看如下的声明åQšÂ?

int RollNum[30][4];
int (*p)[4]=RollNum;
int *q[5]; 

˜q™é‡ŒåQŒpè¢«å£°æ˜ŽäØ“ä¸€ä¸ªæŒ‡å‘ä¸€ä¸?元素åQˆint¾cÕdž‹åQ‰æ•°¾l„的指针åQŒè€Œqè¢«å£°æ˜ŽäØ“ä¸€ä¸ªåŒ…å?个元素(int¾cÕdž‹çš„æŒ‡é’ˆï¼‰çš„æ•°¾l„。Â?

另外åQŒæˆ‘们还可以在同一个声明中混合实用*å’?amp;åQŒå¦‚下: 

int **p1; // p1 is a pointer  to a pointer  to an int. 
int *&p2; // p2 is a reference to a pointer  to an int. 
int &*p3; // ERROR: Pointer  to a reference is illegal. 
int &&p4; // ERROR: Reference to a reference is illegal. 

注:p1是一个int¾cÕdž‹çš„æŒ‡é’ˆçš„æŒ‡é’ˆåQ?br />      p2是一个int¾cÕdž‹çš„æŒ‡é’ˆçš„引用åQ?br />      p3是一个int¾cÕdž‹å¼•用的指针(不合法!åQ‰ï¼›
      p4是一个int¾cÕdž‹å¼•用的引用(不合法!åQ‰ã€‚Â?

const修饰½W?br />当你想阻止一个变量被改变åQŒå¯èƒ½ä¼šç”¨åˆ°const关键字。在你给一个变量加上const修饰½W¦çš„同时åQŒé€šå¸¸éœ€è¦å¯¹å®ƒè¿›è¡Œåˆå§‹åŒ–åQŒå› ä¸ÞZ»¥åŽçš„ä»ÖM½•

时候你ž®†æ²¡æœ‰æœºä¼šå†åŽÀL”¹å˜å®ƒã€‚例如: 

const int n=5;
int const m=10; 

上述两个变量nå’Œm其实是同一¿Uç±»åž‹çš„--都是const intåQˆæ•´å½¢æ’量)。因为C++标准规定åQŒconst关键字放在类型或变量名之前等ä»ïLš„。我个äh

æ›´å–œ‹Æ¢ç¬¬ä¸€¿Uå£°æ˜Žæ–¹å¼ï¼Œå› äؓ它更½Hå‡ºäº†const修饰½W¦çš„作用。Â?

当const与指针一起ä‹É用时åQŒå®¹æ˜“让人感到迷惑。例如,我们来看一下下面的på’Œq的声明: 

const int *p;
int const *q; 

他们当中哪一个代表const int¾cÕdž‹çš„æŒ‡é’ˆï¼ˆconst直接修饰intåQ‰ï¼Œå“ªä¸€ä¸ªä»£è¡¨int¾cÕdž‹çš„const指针åQˆconst直接修饰指针åQ‰ï¼Ÿå®žé™…上,på’Œqéƒ?

è¢«å£°æ˜ŽäØ“const int¾cÕdž‹çš„æŒ‡é’ˆã€‚而int¾cÕdž‹çš„const指针应该˜q™æ ·å£°æ˜ŽåQšÂ?

int * const r= &n; // n has been declared as an int 

˜q™é‡ŒåQŒpå’Œq都是指向const int¾cÕdž‹çš„æŒ‡é’ˆï¼Œä¹Ÿå°±æ˜¯è¯´åQŒä½ åœ¨ä»¥åŽçš„½E‹åºé‡Œä¸èƒ½æ”¹å?p的倹{€‚而r是一个const指针åQŒå®ƒåœ¨å£°æ˜Žçš„æ—¶å€™è¢«åˆå§‹åŒ–指

向变量nåQˆå³r=&n;åQ‰ä¹‹åŽï¼Œr的值将不再允许被改变(ä½?r的值可以改变)。Â?

¾l„合上述两种const修饰的情况,我们来声明一个指向const int¾cÕdž‹çš„const指针åQŒå¦‚下: 

const int * const p=&n // n has been declared as const int
//------------------------------------------------------------------------
下面¾l™å‡ºçš„一些关于const的声明,ž®†å¸®åЩ你å½Õdº•理清const的用法。不˜q‡è¯·æ³¨æ„åQŒä¸‹é¢çš„ä¸€äº›å£°æ˜Žæ˜¯ä¸èƒ½è¢«ç¼–è¯‘é€šè¿‡çš„ï¼Œå› äØ“ä»–ä»¬éœ€è¦åœ¨å£°æ˜Ž

çš„åŒæ—¶è¿›è¡Œåˆå§‹åŒ–ã€‚äØ“äº†ç®€‹zè“vè§ï¼Œæˆ‘å¿½ç•¥äº†åˆå§‹åŒ–éƒ¨åˆ†ï¼›å› äØ“åŠ å…¥åˆå§‹åŒ–ä»£ç çš„è¯ï¼Œä¸‹é¢æ¯ä¸ªå£°æ˜Žéƒ½å°†å¢žåŠ ä¸¤è¡Œä»£ç ã€‚Â?

char ** p1;          //    pointer to    pointer to    char 
const char **p2;        //    pointer to    pointer to const char 
char * const * p3;       //    pointer to const pointer to    char 
const char * const * p4;    //    pointer to const pointer to const char 
char ** const p5;       // const pointer to    pointer to    char 
const char ** const p6;    // const pointer to    pointer to const char 
char * const * const p7;    // const pointer to const pointer to    char 
const char * const * const p8; // const pointer to const pointer to const char 

注:
p1是指向char¾cÕdž‹çš„æŒ‡é’ˆçš„æŒ‡é’ˆåQ?br />p2是指向const char¾cÕdž‹çš„æŒ‡é’ˆçš„æŒ‡é’ˆåQ?br />p3是指向char¾cÕdž‹çš„const指针åQ?br />p4是指向const char¾cÕdž‹çš„const指针åQ?br />p5是指向char¾cÕdž‹çš„æŒ‡é’ˆçš„const指针åQ?br />p6是指向const char¾cÕdž‹çš„æŒ‡é’ˆçš„const指针åQ?br />p7是指向char¾cÕdž‹const指针的const指针åQ?br />p8是指向const char¾cÕdž‹çš„const指针的const指针ã€?br />//------------------------------------------------------------------------
typedef的妙ç”?br />typedef¾l™ä½ ä¸€¿Uæ–¹å¼æ¥å…‹æœâ€?只适合于变量而不适合于类型”的弊端。你可以如下使用typedefåQšÂ?

typedef char * PCHAR;
PCHAR p,q; 

˜q™é‡Œçš„på’Œq都被声明为指针。(如果不ä‹É用typedefåQŒqž®†è¢«å£°æ˜Žä¸ÞZ¸€ä¸ªchar变量åQŒè¿™è·Ÿæˆ‘们的½W¬ä¸€çœ¼æ„Ÿè§‰ä¸å¤ªä¸€è‡ß_¼åQ‰ä¸‹é¢æœ‰ä¸€äº›ä‹É用typedef

的声明,òq¶ä¸”¾l™å‡ºäº†è§£é‡Šï¼šÂ 

typedef char * a; // a is a pointer to a char 

typedef a b();   // b is a function that returns 
          // a pointer to a char 

typedef b *c;   // c is a pointer to a function 
          // that returns a pointer to a char 

typedef c d();   // d is a function returning 
          // a pointer to a function 
          // that returns a pointer to a char 

typedef d *e;   // e is a pointer to a function 
          // returning a pointer to a 
          // function that returns a 
          // pointer to a char 

e var[10];     // var is an array of 10 pointers to 
          // functions returning pointers to 
          // functions returning pointers to chars. 

typedef¾lå¸¸ç”¨åœ¨ä¸€ä¸ªç»“æž„å£°æ˜Žä¹‹å‰ï¼Œå¦‚ä¸‹ã€‚è¿™æ øP¼Œå½“创建结构变量的时候,允许你不使用关键字structåQˆåœ¨C中,创徏¾l“构变量时要求ä‹É用str

uct关键字,如struct tagPOINT aåQ›è€Œåœ¨C++中,struct可以忽略åQŒå¦‚tagPOINT båQ‰ã€‚Â?

typedef struct tagPOINT
{
  int x;
  int y;
}POINT; 

POINT p; /* Valid C code */
//------------------------------------------------------------------------
函数指针 

函数指针可能是最å®ÒŽ(gu¨©)˜“引è“v理解上的困惑的声明。函数指针在DOS时代写TSR½E‹åºæ—¶ç”¨å¾—最多;在Win32å’ŒX-Windows时代åQŒä»–们被用在需要回è°?函数的场合。当ç„Óž¼Œ˜q˜æœ‰å…¶å®ƒå¾ˆå¤šåœ°æ–¹éœ€è¦ç”¨åˆ°å‡½æ•°æŒ‡é’ˆï¼šè™šå‡½æ•°è¡¨åQŒSTL中的一些模板,Win NT/2K/XP¾pȝ»ŸæœåŠ¡½{‰ã€‚让我们来看一个函数指é’?

的简单例子: 

int (*p)(char); 

˜q™é‡Œpè¢«å£°æ˜ŽäØ“ä¸€ä¸ªå‡½æ•°æŒ‡é’ˆï¼Œ˜q™ä¸ªå‡½æ•°å¸¦ä¸€ä¸ªchar¾cÕdž‹çš„参敎ͼŒòq¶ä¸”有一个int¾cÕdž‹çš„返回倹{€‚另外,带有两个float¾cÕdž‹å‚数、返回值是char

¾cÕdž‹çš„æŒ‡é’ˆçš„æŒ‡é’ˆçš„函数指针可以声明如下: 

char ** (*p)(float, float); 

那么åQŒå¸¦ä¸¤ä¸ªchar¾cÕdž‹çš„const指针参数、无˜q”回值的函数指针又该如何声明呢?参考如下: 

void * (*a[5])(char * const, char * const); 

“右左法则”[重要åQï¼åQ] 

The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you 

encounter parentheses, the direction should be reversed. Once everything in the parentheses has been parsed, jump out of it. 

Continue till the whole declaration has been parsed. 

˜q™æ˜¯ä¸€ä¸ªç®€å•的法则åQŒä½†èƒ½è®©ä½ å‡†¼‹®ç†è§£æ‰€æœ‰çš„声明。这个法则运用如下:从最内部的括号开始阅è¯Õd£°æ˜Žï¼Œå‘右看,然后向左看。当你碰åˆîC¸€

个括åäh—¶ž®Þp°ƒè½¬é˜…è¯Èš„方向。括号内的所有内定wƒ½åˆ†æžå®Œæ¯•ž®ÞpŸ©å‡ºæ‹¬åïLš„范围。这æ ïL‘ô¾l­ï¼Œç›´åˆ°æ•´ä¸ªå£°æ˜Žéƒ½è¢«åˆ†æžå®Œæ¯•。Â?

对上˜q°â€œå³å·¦æ³•则”做一个小ž®çš„修正åQšå½“你第一‹Æ¡å¼€å§‹é˜…è¯Õd£°æ˜Žçš„æ—¶å€™ï¼Œä½ å¿…™åÖM»Žå˜é‡åå¼€å§‹ï¼Œè€Œä¸æ˜¯ä»Žæœ€å†…部的括受÷€‚Â?

下面¾l“合例子来演½CÞZ¸€ä¸‹â€œå³å·¦æ³•则”的使用。Â?

int * (* (*fp1) (int) ) [10]; 

阅读步骤åQ?br />1. 从变量名开å§?-------------------------------------------- fp1 2. 往右看åQŒä»€ä¹ˆä¹Ÿæ²¡æœ‰åQŒç¢°åˆîCº†)åQŒå› æ­¤å¾€å·¦çœ‹åQŒç¢°åˆîC¸€ä¸? ------ 一个指é’?br />3. è·›_‡ºæ‹¬å·åQŒç¢°åˆîCº†(int) ----------------------------------- 一个带一个int参数的函æ•?br />4. 向左看,发现一ä¸? --------------------------------------- åQˆå‡½æ•ŽÍ¼‰˜q”回一个指é’?br />5. è·›_‡ºæ‹¬å·åQŒå‘右看åQŒç¢°åˆ°[10] ------------------------------ 一ä¸?0元素的数¾l?br />6. 向左看,发现一ä¸? --------------------------------------- 指针
7. 向左看,发现int ----------------------------------------- int¾cÕdž‹Â 


æ€È»“åQšfp1被声明成ä¸ÞZ¸€ä¸ªå‡½æ•°çš„æŒ‡é’ˆ,该函数返回指向指针数¾l„的指针. 


再来看一个例子: 

int *( *( *arr[5])())(); 

阅读步骤åQ?br />1. 从变量名开å§?-------------------------------------------- arr 2. 往右看åQŒå‘现是一个数¾l?---------------------------------- 一ä¸?元素的数¾l?br />3. 向左看,发现一ä¸? --------------------------------------- 指针
4. è·›_‡ºæ‹¬å·åQŒå‘右看åQŒå‘çŽ?) -------------------------------- 不带参数的函æ•?br />5. 向左看,¼„°åˆ°* ------------------------------------------- åQˆå‡½æ•ŽÍ¼‰˜q”回一个指é’?br />6. è·›_‡ºæ‹¬å·åQŒå‘叛_‘çŽ?) ------------------------------------ 不带参数的函æ•?br />7. 向左åQŒå‘çŽ? --------------------------------------------- åQˆå‡½æ•ŽÍ¼‰˜q”回一个指é’?br />8. ¾l§ç®‹å‘å·¦åQŒå‘现int --------------------------------------- int¾cÕdž‹Â 

æ€È»“åQšï¼ŸåQŸÂ?


˜q˜æœ‰æ›´å¤šçš„例子: 

float ( * ( *b()) [] )();       // b is a function that returns a 
                            // pointer to an array of pointers 
                            // to functions returning floats. 

void * ( *c) ( char, int (*)());        // c is a pointer to a function that takes 
                                // two parameters: 
                                //   a char and a pointer to a 
                                //   function that takes no 
                                //   parameters and returns 
                                //   an int 
                                // and returns a pointer to void. 

void ** (*d) (int &, 
char **(*)(char *, char **));   // d is a pointer to a function that takes 
                            // two parameters: 
                            //   a reference to an int and a pointer 
                            //   to a function that takes two parameters: 
                            //    a pointer to a char and a pointer 
                            //    to a pointer to a char 
                            //   and returns a pointer to a pointer 
                            //   to a char 
                            // and returns a pointer to a pointer to void 

float ( * ( * e[10]) 
  (int &) ) [5];              // e is an array of 10 pointers to 
                            // functions that take a single 
                            // reference to an int as an argument 
                            // and return pointers to 
                            // an array of 5 floats.  



]]>
C语言中格式化输入输出函数http://www.aygfsteel.com/Yipak/articles/226943.htmlæ­È¥žæ­È¥žThu, 04 Sep 2008 06:34:00 GMThttp://www.aygfsteel.com/Yipak/articles/226943.htmlhttp://www.aygfsteel.com/Yipak/comments/226943.htmlhttp://www.aygfsteel.com/Yipak/articles/226943.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/226943.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/226943.html1.1.1 格式化输入输出函æ•?br />Turbo C2.0 标准库提供了两个控制台格式化输入ã€?输出函数printf( ) å’?br />scanf(), ˜q™ä¸¤ä¸ªå‡½æ•°å¯ä»¥åœ¨æ ‡å‡†è¾“入输出讑֤‡ä¸Šä»¥å„种不同的格式读写数据ã€?br />printf()å‡½æ•°ç”¨æ¥å‘æ ‡å‡†è¾“å‡ø™®¾å¤?屏幕)写数æ? scanf() 函数用来从标准输å…?br />讑֤‡(键盘)上读数据。下面详¾l†ä»‹¾lè¿™ä¸¤ä¸ªå‡½æ•°çš„用法ã€?br />一、printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出讑֤‡æŒ‰è§„定格式输å‡?br />信息。在¾~–写½E‹åºæ—¶ç»å¸æ€¼šç”¨åˆ°æ­¤å‡½æ•°ã€‚printf()å‡½æ•°çš„è°ƒç”¨æ ¼å¼äØ“:
printf(â€?lt;格式化字½W¦ä¸²>â€? <参量è¡?gt;);
其中格式化字½W¦ä¸²åŒ…括两部分内å®? 一部分是正常字½W? ˜q™äº›å­—符ž®†æŒ‰åŽ?br />æ ¯‚¾“å‡? 另一部分是格式化规定字符, 以â€?”开å§? 后跟一个或几个规定字符,
用来¼‹®å®šè¾“出内容格式ã€?br />参量表是需要输出的一¾pÕdˆ—参数, 其个数必™åÖM¸Žæ ¼å¼åŒ–å­—½W¦ä¸²æ‰€è¯´æ˜Žçš„输å‡?br />参数个数一样多, 各参æ•îC¹‹é—´ç”¨â€?”分开, 且顺序一一对应, 否则ž®†ä¼šå‡ºçŽ°æ„æƒ³
不到的错误�br />1. 格式化规定符
Turbo C2.0提供的格式化规定½W¦å¦‚ä¸?
━━━━━━━━━━━━━━━━━━━━━━━━━━
½W¦å· 作用
—————————————————————————â€?br />%d 十进制有½W¦å·æ•´æ•°
%u 十进制无½W¦å·æ•´æ•°
%f ‹¹®ç‚¹æ•?br />%s 字符ä¸?br />%c 单个字符
%p 指针的å€?br />%e 指数形式的æÕQç‚ÒŽ(gu¨©)•°
%x, %X 无符号以十六˜q›åˆ¶è¡¨ç¤ºçš„æ•´æ•?br />%0 无符号以八进制表½Cºçš„æ•´æ•°
%g 自动选择合适的表示�br />━━━━━━━━━━━━━━━━━━━━━━━━━━
说明:
(1). 可以在â€?”和字母之间插进数字表示最大场宽ã€?br />例如: %3d 表示输出3位整型数, 不够3位右寚w½ã€?br />%9.2f 表示输出场宽ä¸?çš„æÕQç‚ÒŽ(gu¨©)•°, 其中ž®æ•°ä½äØ“2, æ•´æ•°ä½äØ“6,
ž®æ•°ç‚¹å ä¸€ä½? 不够9位右寚w½ã€?br />%8s 表示输出8个字½W¦çš„字符ä¸? 不够8个字½W¦å³å¯šw½ã€?br />如果字符串的长度、或整型æ•îC½æ•°è¶…˜q‡è¯´æ˜Žçš„场宽, ž®†æŒ‰å…¶å®žé™…长度输出ã€?br />但对‹¹®ç‚¹æ•? 若整数部分位数超˜q‡äº†è¯´æ˜Žçš„æ•´æ•îC½å®½åº¦, ž®†æŒ‰å®žé™…整数位输å‡?
若小数部分位数超˜q‡äº†è¯´æ˜Žçš„小æ•îC½å®½åº¦, 则按说明的宽度以四舍五入输出ã€?br />另外, 若想在输出值前加一äº?, ž®±åº”在场宽项前加ä¸?ã€?br />例如: %04d 表示在输å‡ÞZ¸€ä¸ªå°äº?位的数值时, ž®†åœ¨å‰é¢è¡?使其æ€Õd®½åº?br />ä¸?位ã€?br />如果用æÕQç‚ÒŽ(gu¨©)•°è¡¨ç¤ºå­—符或整型量的输出格å¼? ž®æ•°ç‚¹åŽçš„æ•°å­—代表最大宽åº?
ž®æ•°ç‚¹å‰çš„æ•°å­—代表最ž®å®½åº¦ã€?br />例如: %6.9s 表示昄¡¤ºä¸€ä¸ªé•¿åº¦ä¸ž®äºŽ6且不大于9的字½W¦ä¸²ã€‚若大于9, åˆ?br />½W?个字½W¦ä»¥åŽçš„内容ž®†è¢«åˆ é™¤ã€?br />(2). 可以在â€?”和字母之间加小写字母l, 表示输出的是长型数ã€?br />例如: %ld 表示输出longæ•´æ•°
%lf 表示输出double‹¹®ç‚¹æ•?br />(3). 可以控制输出左对齐或叛_¯¹é½? 卛_œ¨â€?”和字母之间加入一个â€?â€?号可
说明输出为左寚w½, 否则为右寚w½ã€?br />例如: %-7d 表示输出7位整数左寚w½
%-10s 表示输出10个字½W¦å·¦å¯šw½
2. 一些特ŒDŠè§„定字½W?br />━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 作用
—————————————————————————�br />\n 换行
\f 清屏òq¶æ¢™å?br />\r 回èžR
\t Tab½W?br />\xhh 表示一个ASCII码用16˜q›è¡¨½C?
其中h(hu¨¢n)hæ˜?åˆ?ä¸?6˜q›åˆ¶æ•?br />━━━━━━━━━━━━━━━━━━━━━━━━━━
由本节所学的printf()函数, òq¶ç»“合上一节学习的数据¾cÕdž‹, ¾~–制下面的程
åº? 以加深对Turbo C2.0数据¾cÕdž‹çš„了解ã€?br />ä¾?
#include<stdio.h>
#include<string.h>
int main()
{
char c, s[20], *p;
int a=1234, *i;
float f=3.141592653589;
double x=0.12345678987654321;
p=”How do you do�
strcpy(s, “Hello, Comrade�;
*i=12;
c=’\x41�
printf(”a=%d\nâ€? a); /*¾l“果输出十进制整数a=1234*/
printf(”a=%6d\nâ€? a); /*¾l“果输出6位十˜q›åˆ¶æ•°a= 1234*/
printf(”a=%06d\nâ€? a); /*¾l“果输出6位十˜q›åˆ¶æ•°a=001234*/
printf(”a=%2d\nâ€? a); /*a­‘…过2ä½? æŒ‰å®žé™…å€ÆD¾“出a=1234*/
printf(â€?i=%4d\nâ€? *i); /*输出4位十˜q›åˆ¶æ•´æ•°*i= 12*/
printf(â€?i=%-4d\nâ€? *i); /*输出左对é½?位十˜q›åˆ¶æ•´æ•°*i=12*/
printf(”i=%p\n� i); /*输出地址i=06E4*/
printf(”f=%f\nâ€? f); /*输出‹¹®ç‚¹æ•°f=3.141593*/
printf(”f=6.4f\nâ€? f); /*输出6位其中小数点å?位的‹¹®ç‚¹æ•?br />f=3.1416*/
printf(”x=%lf\nâ€? x); /*输出长æÕQç‚ÒŽ(gu¨©)•°x=0.123457*/
printf(”x=%18.16lf\nâ€? x);/*输出18位其中小数点å?6位的长æÕQç‚?br />æ•°x=0.1234567898765432*/
printf(”c=%c\n� c); /*输出字符c=A*/
printf(”c=%x\n� c); /*输出字符的ASCII码值c=41*/
printf(”s[]=%s\n� s); /*输出数组字符串s[]=Hello, Comrade*/
printf(”s[]=%6.9s\nâ€? s);/*输出最å¤?个字½W¦çš„字符串s[]=Hello,
Co*/
printf(”s=%p\n� s); /*输出数组字符串首字符地址s=FFBE*/
printf(�p=%s\n� p); /* 输出指针字符串p=How do you do*/
printf(”p=%p\n� p); /*输出指针的值p=0194*/
getch();
retunr 0;
}
上面¾l“果中的地址值在不同计算æœÞZ¸Šå¯èƒ½ä¸åŒã€?br />ä¾?.中第一条语å?include<stdio.h>的含义是调用另一个文件stdio.h, ˜q?br />是一个头文äšg, 其中包括全部标准输入输出库函数的数据¾cÕdž‹å®šä¹‰å’Œå‡½æ•°è¯´æ˜Žã€?br />Turbo C2.0å¯ÒŽ(gu¨©)¯ä¸ªåº“函数便用的变量及函数¾cÕdž‹éƒ½å·²ä½œäº†å®šä¹‰ä¸Žè¯´æ˜? 攑֜¨ç›¸åº”
头文件â€?.h”中, 用户用到˜q™äº›å‡½æ•°æ—¶å¿…™å»è¦ç”?include<*.h>æˆ?includeâ€?. hâ€?br />语句调用相应的头文äšg, 以供˜qžæŽ¥ã€‚若没有用此语句说明, 则连接时ž®†ä¼šå‡ºçްé”?br />误ã€?br />二、scanf()函数
scanf()函数是格式化输入函数, 它从标准输入讑֤‡(键盘) è¯Õd–输入的信息ã€?br />å…¶è°ƒç”¨æ ¼å¼äØ“:
scanf(â€?lt;格式化字½W¦ä¸²>â€? <地址è¡?gt;);
格式化字½W¦ä¸²åŒ…括以下三类不同的字½W?
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明½W¦åŸºæœ¬ç›¸åŒã€?br />2. ½Iºç™½å­—符: ½Iºç™½å­—符会ä‹Éscanf()函数在读操作中略去输入中的一个或å¤?br />个空白字½W¦ã€?br />3. 非空白字½W? 一个非½Iºç™½å­—符会ä‹Éscanf()函数在读入时剔除掉与˜q™ä¸ªé?br />½Iºç™½å­—符相同的字½W¦ã€?br />地址表是需要读入的所有变量的地址, 而不是变量本íw«ã€‚这与printf()函数
完全不同, 要特别注意。各个变量的地址之间同�”分开�br />�:
main()
{
int i, j;
printf(”i, j=?\n�;
scanf(�d, %d� &i, &j);
}

上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除� 最
后读入另一个整型数。如果â€?”这一特定字符没有扑ֈ°, scanf()函数ž®Þq»ˆæ­¢ã€‚è‹¥
参数之间的分隔符为空æ ? 则参æ•îC¹‹é—´å¿…™å»è¾“入一个或多个½Iºæ ¼ã€?br />说明:
(1). 对于字符串数¾l„或字符串指针变é‡? ç”׃ºŽæ•°ç»„名和指针变量名本íw«å°±
是地址, 因此使用scanf()函数� 不需要在它们前面加上�amp;”操作符�br />�
mian()
{
char *p, str[20];
scanf(â€?sâ€? p); /*从健盘输入字½W¦ä¸²*/
scanf(�s� str);
printf(â€?s\nâ€? p); /*向屏òq•输出字½W¦ä¸²*/
printf(�s\n� str);
}

(2). 可以在格式化字符串中的�”各格式化规定符之间加入一个整� 表示
ä»ÖM½•è¯ÀL“ä½œä¸­çš„æœ€å¤§ä½æ•°ã€?br />如例3中若规定只能输入10字符¾l™å­—½W¦ä¸²æŒ‡é’ˆp, 则第一条scanf() 函数语句
å˜äØ“
scanf(�10s� p);
½E‹åº˜qè¡Œæ—¶ä¸€æ—¦è¾“入字½W¦ä¸ªæ•°å¤§äº?0, pž®×ƒ¸å†ç‘ô¾l­è¯»å…? 而后面的一个读
入函数即scanf(â€?sâ€? str)ž®×ƒ¼šä»Žç¬¬11个字½W¦å¼€å§‹è¯»å…¥ã€?br />实际使用scanf()函数时存在一个问é¢? 下面举例˜q›è¡Œè¯´æ˜Ž:
当ä‹É用多个scanf()函数˜qžç®‹¾l™å¤šä¸ªå­—½W¦å˜é‡è¾“入时, 例如:
main()
{
char c1, c2;
scanf(�c� &c1);
scanf(�c� &c2);
printf(”c1 is %c, c2 is %c� c2\1, c2);
}

˜qè¡Œè¯¥ç¨‹åº? 输入一个字½W¦A后回è½?(要完成输入必™åÕd›žè½?, 在执行scanf
(â€?câ€? &c1)æ—? ¾l™å˜é‡c1赋值”Aâ€? 但回车符仍然留在¾~“冲区内, 执行输入语句
scanf(â€?câ€? &c2)æ—? 变量c2输出的是一½Iø™¡Œ, 如果输入AB后回è½? 那么输出¾l?br />æžœäØ“: c1 is A, c2 is Bã€?br />要解决以上问é¢? 可以在输入函数前加入清除函数fflush()( ˜q™ä¸ªå‡½æ•°çš„ä‹É
用方法将在本节最后讲˜q?。修改以上程序变æˆ?
#include<stdio.h>
main()
{
char c1, c2;
scanf(�c� &c1);
fflush(stdin);
scanf(�c� &c2);
printf(”c1 is %c, c2 is %c� c1, c2);
}

1.1.2 非格式化输入输出函数
非格式化输入输出函数可以ç”׃¸Šé¢è®²˜q°çš„æ ‡å‡†æ ¼å¼åŒ–输入输出函æ•îC»£æ›? ä½?br />˜q™äº›å‡½æ•°¾~–译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比è¾?br />方便。下面分别进行介¾lã€?br />一、puts()å’Œgets()函数
1. puts()函数
puts()å‡½æ•°ç”¨æ¥å‘æ ‡å‡†è¾“å‡ø™®¾å¤?屏幕)写字½W¦ä¸²òq¶æ¢è¡? å…¶è°ƒç”¨æ ¼å¼äØ“:
puts(s);
其中s为字½W¦ä¸²å˜é‡(字符串数¾l„名或字½W¦ä¸²æŒ‡é’ˆ)ã€?br />puts()函数的作用与语printf(â€?s\nâ€? s)相同ã€?br />ä¾?:
main()
{
char s[20], *f; /*定义字符串数¾l„和指针变量*/
strcpy(s, “Hello! Turbo C2.0â€?; /*字符串数¾l„变量赋å€?/
f=”Thank you� /*字符串指针变量赋�/
puts(s);
puts(f);
}

说明:
(1). puts()函数只能输出字符ä¸? 不能输出数值或˜q›è¡Œæ ¼å¼å˜æ¢ã€?br />(2). 可以ž®†å­—½W¦ä¸²ç›´æŽ¥å†™å…¥puts()函数中。如:
puts(”Hello, Turbo C2.0�;

2. gets()函数
gets()函数用来从标准输入设å¤?键盘)è¯Õd–字符串直到回车结æ? 但回车符
不属于这个字½W¦ä¸²ã€‚其调用格式ä¸?
gets(s);
其中s为字½W¦ä¸²å˜é‡(字符串数¾l„名或字½W¦ä¸²æŒ‡é’ˆ)ã€?br />gets(s)函数与scanf(â€?sâ€? &s)ç›æ€¼¼, 但不完全相同, 使用scanf(â€?sâ€? &s)
函数输入字符串时存在一个问é¢? ž®±æ˜¯å¦‚果输入了空æ ég¼šè®¤äؓ输入字符串结æ?
½Iºæ ¼åŽçš„字符ž®†ä½œä¸ÞZ¸‹ä¸€ä¸ªè¾“入项处理, 但gets() 函数ž®†æŽ¥æ”¶è¾“入的整个字符
ä¸²ç›´åˆ°å›žè½¦äØ“æ­¢ã€?br />ä¾?
main()
{
char s[20], *f;
printf(”What’s your name?\n�;
gets(s); /*½{‰å¾…输入字符串直到回车结æ?/
puts(s); /*ž®†è¾“入的字符串输å‡?/
puts(”How old are you?�;
gets(f);
puts(f);
}



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ±ß°ÓÏØ| ˳ÒåÇø| ·¿²ú| ³ÇÊÐ| ÒÍÁ¼ÏØ| ±¨¼Û| È«ÄÏÏØ| º£ÐËÏØ| ƽÄÏÏØ| ¸ÊÈªÏØ| ÏɾÓÏØ| µÂ°²ÏØ| Ïå³ÇÏØ| °²ÇìÊÐ| ÓíÖÝÊÐ| ´óÆÒÏØ| ½­Î÷Ê¡| ÎÚÀ¼ºÆÌØÊÐ| µæ½­ÏØ| ¹ðÑôÏØ| ÁúÄÏÏØ| ÎåÕ¯ÏØ| Å®ÐÔ| ÌÆºÓÏØ| ºÓÎ÷Çø| ÅîÏªÏØ| äàË®ÏØ| ʯ×ìɽÊÐ| ÔÆ¸¡ÊÐ| ͼÃÇÊÐ| ÓñÊ÷ÏØ| ÖÜ¿ÚÊÐ| °¢À­¶ûÊÐ| ÎߺþÊÐ| ´óÒØÏØ| ºìºÓÏØ| Î÷ÄþÊÐ| Ëç±õÏØ| ÙðÖÝÊÐ| °à¸êÏØ| ¿µ¶¨ÏØ|