﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-franksunny的个人技术空间-随笔分类-symbian 开发</title><link>http://www.cppblog.com/franksunny/category/5182.html</link><description>获得人生中的成功需要的专注与坚持不懈多过天才与机会。

                       ——C.W. Wendte</description><language>zh-cn</language><lastBuildDate>Wed, 28 Jul 2010 14:39:02 GMT</lastBuildDate><pubDate>Wed, 28 Jul 2010 14:39:02 GMT</pubDate><ttl>60</ttl><item><title>Symbian端彩信读取初探</title><link>http://www.cppblog.com/franksunny/archive/2010/07/28/121498.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 28 Jul 2010 13:16:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/07/28/121498.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/121498.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/07/28/121498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/121498.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/121498.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Symbian端彩信读取初探&nbsp;上周由于项目需要对彩信读取进行了预研，虽然并未涉及彩信的拦截，只是对Symbian S60手机收件箱中的彩信和彩信通知的内容进行提取并分析，但是也算是趟了下之前一直没有搞过的彩信这浑水，小结一下。为了体现分析过程的逻辑性，下文并非是由简入繁，而是采用由已知到未知的说明过程来进行。彩信和彩信通知的区别正如前面博文《Symbian...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2010/07/28/121498.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/121498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-07-28 21:16 <a href="http://www.cppblog.com/franksunny/archive/2010/07/28/121498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[整理]关于CompleteWithAppPath函数</title><link>http://www.cppblog.com/franksunny/archive/2010/07/09/119899.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 09 Jul 2010 11:42:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/07/09/119899.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/119899.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/07/09/119899.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/119899.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/119899.html</trackback:ping><description><![CDATA[<h1 style="MARGIN: 17pt 0cm 16.5pt"><font size=6><font color=#000000><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于</span><span lang=EN-US><font face="Times New Roman">CompleteWithAppPath</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span></font></font></h1>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一直以来以为这个函数在</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台是万能的，特别是之前用这个函数也是百试不爽，今天无意间写了个小</span><span lang=EN-US>Demo</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发现在我的</span><span lang=EN-US>N81</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">手机上，假如传递&#8220;</span><span lang=EN-US>Data\\rpm.xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#8221;返回值则为</span><span lang=EN-US>-28</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即</span><span lang=EN-US>BadName</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；假如只传递文件名，则其返回值虽然为</span><span lang=EN-US>0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，但是路径却变成了&#8220;</span><span lang=EN-US>c:sys\bin\ rpm.xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#8221;。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一头的雾水啊，干</span><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也快有</span><span lang=EN-US>3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个多年头了，从</span><span lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本到现在</span><span lang=EN-US>5</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本，居然在这个函数上没搞灵清，实在是汗颜一下，结果又搜了些资料，先一个还是支持以前观点的，见后面的补全文件路径操作；后又在诺基亚论坛找到一个</span><span lang=EN-US>wiki</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——检测应用程序路径，发现这个函数在</span><span lang=EN-US>3rd</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上有变故，问题算是找到了，为此想着好久没有更新博客了，来更新下吧，呵呵。另外跟这里的朋友道个喜，我上个月喜得千金，终于升级做爸爸了。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于这个函数，劝大家以后还是少用、不用为妙，当然明白就理能满足应用那就用吧，我写这个只是提醒大家其并没有真正搜索补全路径的功效。</span></p>
<h2 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"><font color=#000000 size=5>补全文件路径操作</font></span></h2>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>s60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下能用</span><span lang=EN-US>CompleteWithAppPath(aFileName)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个函数来补全文件路径（</span><span lang=EN-US>aFileName</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以不包含任何路径信息，但是文件名必须完成，而且如果包含路径信息，则必须正确），如果在</span><span lang=EN-US>UIQ</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下就不能用该工具函数，只能编写通用与</span><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台的代码。以下是一个实际的案例问答。</span></p>
<h3 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=5>提问：</font></span></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一，我想知道</span><span lang=EN-US>CompleteWithAppPath(aFileName);</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个在</span><span lang=EN-US>s60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下的具体含义是什么？</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二，在</span><span lang=EN-US>UIQ</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下能用什么代替它。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　下面是我写的一小段程序，请改下</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>CBitmap* CBitmap::NewL(TFileName&amp; aFileName, TInt aIndex )</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>CBitmap* bmp = new( ELeave )CBitmap;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>//CFbsBitmap tmpb;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>//load the correct bitmap..</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>TInt ret;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>//CompleteWithAppPath(aFileName);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>// load the bitmap from the mbm file</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>CFbsBitmap* tmpb = new (ELeave) CFbsBitmap();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>CleanupStack::PushL(tmpb);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>User::LeaveIfError(tmpb-&gt;Load(aFileName, aIndex)); </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>CleanupStack::Pop(); // bitmap </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>bmp-&gt;iSize = tmpb-&gt;SizeInPixels ();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>bmp-&gt;iDrawRect = bmp-&gt;iSize;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>bmp-&gt;iData = new( ELeave ) TUint16[ bmp-&gt;iSize.iWidth * bmp-&gt;iSize.iHeight ];</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>bmp-&gt;iMode = tmpb-&gt;DisplayMode();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>TUint16* dst = ( TUint16* )bmp-&gt;iData;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>for ( TInt y=0; y&lt;bmp-&gt;iSize.iHeight; y++ )</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>TPtr8 buf( ( TUint8* )dst, bmp-&gt;iSize.iWidth*2 );</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>tmpb-&gt;GetScanLine( buf, TPoint( 0, y ), bmp-&gt;iSize.iWidth, EColor4K );</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>dst += bmp-&gt;iSize.iWidth;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>tmpb-&gt;Reset();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>delete tmpb;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>tmpb = NULL;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>return bmp;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang=EN-US>}</span></p>
<h3 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=5>解决：</font></span></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>1.CompleteWithAppPath(aFileName)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">根据当前程序的安装位置补上</span><span lang=EN-US>aFileName</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中缺少的路径组成部分</span><span lang=EN-US>:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Code:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Example1:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFilename fname = _L("\testdir\pics.mbm"); // Use _LIT instead</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>CompletePathWithAppPath( fname ); </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Result: fname == "c:\testdir\pics.mbm" if application was installed to c:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Example2: </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFilename fname = _L("pics.mbm"); // Use _LIT instead </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>CompletePathWithAppPath( fname ); </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Result: fname == "c:\system\apps\myapp\pics.mbm" if application was installed to c:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>2.UIQ</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上可以使用</span><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本身提供的</span><span lang=EN-US>TParse</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来做路径的解析</span><span lang=EN-US>:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>Code:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFileName filename;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TParse parse; </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>parse.Set( CEikonEnv::Static()-&gt;EikAppUi()-&gt;Application()-&gt;AppFullName(), NULL, NULL); </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>filename.Copy( parse.DriveAndPath() );</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>//filename.Copy( parse.Drive() );</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h2 style="MARGIN: 13pt 0cm"><font size=5><font color=#000000><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">检测应用程序路径</span><span lang=EN-US><o:p></o:p></span></font></font></h2>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">详细描述终端用户将会选择将程序安装到</span><span lang=EN-US>C</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘（手机存储）或</span><span lang=EN-US>E</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘（存储卡或内置硬盘）中。程序有时需要知道自己的安装位置，对程序安装位置的判断取决于</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台的版本。</span> <span lang=EN-US><o:p></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方案</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二版</span> <span lang=EN-US><o:p></o:p></span></font></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二版中，使用</span><span lang=EN-US>aknutils.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span><span lang=EN-US>CompleteWithAppPath(TDes&amp; aFileName)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。这个方法将返回给定一个描述符，内有所有需要的组成部分（盘符，路径，包括后缀的文件名）。任何缺少的部分（路径和盘符）将从应用程序路径（</span><span lang=EN-US>&lt;drive&gt;:\system\apps\&lt;application_name&gt; </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）中获取</span> <span lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>#include &lt;aknutils.h&gt;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// Insert the full application path into the file name (fileName)<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFileName fullPath(fileName);<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>CompleteWithAppPath(fullPath);<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// from aknutils.h<o:p></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方案</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第三版</span> <span lang=EN-US><o:p></o:p></span></font></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第三版向后，所有二进制程序（</span><span lang=EN-US>Exe</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>Dll</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件）都存储在</span><span lang=EN-US>\Sys\bin</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中。要访问这个目录，程序需要</span><span lang=EN-US>AllFiles</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">能力。资源和数据是无法存入这个目录的。程序有自己的目录</span><span lang=EN-US>\private\&lt;SID&gt;\</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">各自安放，这里</span><span lang=EN-US>SID</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个安全标识，每个程序都是独一无二的。程序通过这个私有目录存放</span><span lang=EN-US>.ini</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>.mbm</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>.rsc</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和数据文件。其他没有</span><span lang=EN-US>AllFiles</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">能力的程序将无法访问它们。</span><span lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第三版上</span><span lang=EN-US>CompleteWithAppPath()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法将总是返回</span><span lang=EN-US>\sys\bin</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为程序安装目录。如果要访问程序的私有目录中的数据，将要用另一个方法来获得路径：</span><span lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFileName appPath;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TBuf&lt;2&gt; appDrive;<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// Returns private path of this application<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// in following format: \Private\&lt;SID of the application&gt;\<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// (does not contain drive specification).<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>iEikonEnv-&gt;FsSession().PrivatePath( appPath );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// Extract drive letter into appDrive<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>appDrive.Copy(iEikonEnv-&gt;EikAppUi()-&gt;Application()-&gt;AppFullName().Left(2));<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// Insert drive letter into path<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>appPath.Insert(0, appDrive);</span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/119899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-07-09 19:42 <a href="http://www.cppblog.com/franksunny/archive/2010/07/09/119899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian开发中的几个问题转帖</title><link>http://www.cppblog.com/franksunny/archive/2010/05/14/115393.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 14 May 2010 11:38:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/05/14/115393.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/115393.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/05/14/115393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/115393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/115393.html</trackback:ping><description><![CDATA[<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h2 style="MARGIN: auto 0cm"><font size=5><font color=#000000><font face=宋体><span lang=EN-US>Symbian</span>开发中的几个问题转帖</font></font></font></h2>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这阵子工作中太忙，也就没有好好总结遇到的知识点，这次就纯粹将遇到的几个问题结合别人的帖子小结下，给自己留个</span><span lang=EN-US>Mark</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">吧：</span></p>
<h3 style="MARGIN: 13pt 0cm"><span style="mso-font-kerning: 18.0pt" lang=EN-US><font size=5>bldmake error directory epoc32 does not exist<o:p></o:p></font></span></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装好</span><span lang=EN-US>Nokia </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的开发环境后，运行</span><span lang=EN-US>hello world </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用即出现如下问题：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>bldmake error directory...\epoc32 does not exist</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在网上查了半天，多半是需要重新安装</span><span lang=EN-US>SDK</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。其实，</span><span lang=EN-US>SDK</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>Carbide</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">完全可以装在不同的分区。关键问题是你工作的</span><span lang=EN-US>workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在哪。我的情况是</span><span lang=EN-US>:</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>hello</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工程位于</span><span lang=EN-US>C:\Symbian\Carbide\workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</span><span lang=EN-US>SDK</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>D:\S60\devices\Nokia_N97_SDK_v0.5\epoc32</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后来，我发现</span><span lang=EN-US>Carbide</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>File&gt;Switch workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">菜单中显示当前的</span><span lang=EN-US>workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指向</span><span lang=EN-US>D:\Develop\mobile\Symbian\Carbide\workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。当我试图指向真实的</span><span lang=EN-US>workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，即：</span><span lang=EN-US>C:\Symbian\Carbide\workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>Carbide</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再次显示时，上述菜单中就根本没有该</span><span lang=EN-US>workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。于是，我将</span><span lang=EN-US>workspace </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">复制到</span><span lang=EN-US>D</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘，即：</span><span lang=EN-US>D:\Symbian\Carbide\workspace </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，然后切换到该</span><span lang=EN-US>workspace,build</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">成功！</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结论：通过上述问题，明白了其实</span><span lang=EN-US>SDK</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>Carbide</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都不是说一定要装在</span><span lang=EN-US>C</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘，但是工程文件和</span><span lang=EN-US>Workspace</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">必须在同一个目录。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编译时的</span><span lang=EN-US>Error -1073741819</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误</span></font></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">完整错误信息类似下面这样：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>make[1]: *** [\Symbian\9.2\S60_3rd_FP1_2\EPOC32\BUILD\...\Gif_Reader.o] Error -1073741819</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>make[1]: *** Waiting for unfinished jobs&#8230;.</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>make[1]: *** Waiting for unfinished jobs&#8230;.</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>make[1]: *** Waiting for unfinished jobs&#8230;.</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>make: *** [TARGETMGATE] Error 2</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这只是在整个过程中的一部分出现，最后提示还是</span><span lang=EN-US>***Build Complete</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>carbide</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>problems</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里也没有任何对应的代码位置提示，很容易误解成</span><span lang=EN-US>sdk</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或这编译器坏了，网上有人说重装</span><span lang=EN-US>sdk</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，有人说</span><span lang=EN-US>clean</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一遍项目。其实这是由于代码里写了一些貌似合法但实际不对的写法，举个具体的例子就是拿对象类型的变量强制转换成指针使用，比如</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>CCoeControl&amp; iParent;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>((CTestAppView*)iParent)-&gt;foo();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样，就会导致这种</span><span lang=EN-US>build</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小结：这种问题很难查，压根不好找原因，后来还是从以下博客看到的</span><span lang=EN-US><a href="http://blog.k-res.net/?p=625"><u><font color=#800080>http://blog.k-res.net/?p=625</font></u></a></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 18.0pt">新手求助</span><span style="mso-font-kerning: 18.0pt"> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 18.0pt">关于</span><span style="mso-font-kerning: 18.0pt" lang=EN-US>Esock_client 14</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 18.0pt">错误</span><span style="mso-font-kerning: 18.0pt" lang=EN-US><o:p></o:p></span></font></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">我看了网上关于这个错误的介绍是说 描述符类型问题。但是我这个错误 感觉好像跟描述符的大小有关，代码如下 ：<span lang=EN-US><o:p></o:p></span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>HBufC8* iRecvData;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>void SendDataJabber::RecvInfoL()<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBuf8&lt;367&gt; buf;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TRequestStatus status(KRequestPending);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iSocket.Recv(buf, 0, status);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User::WaitForRequest(status);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User::LeaveIfError(status.Int());<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>delete iRecvData;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iRecvData = NULL;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iRecvData = buf.Alloc();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">如果<span lang=EN-US>buf</span>长度设为<span lang=EN-US>365</span>的话，会正常进行。如果超过<span lang=EN-US>365</span>在<span lang=EN-US>waitfor</span>这里就会无响应，如果去掉<span lang=EN-US>waitfor</span>，就会报出这个<span lang=EN-US>Esock_clinet14</span>错误。我不太明白难道<span lang=EN-US>socket</span>接收还会限定长度吗？<span lang=EN-US><o:p></o:p></span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">希望有前辈指点。<span lang=EN-US><o:p></o:p></span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实这个问题，像我们这种从事</span><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经两三年的人确实不敢犯的，但是我们现在跨平台实现，需要使用外部</span><span lang=EN-US>buffer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，那该如何使用</span><span lang=EN-US>AO</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的异步，下面是我采用的方案：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在类内声明成员变量</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 20pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt" lang=EN-US>TPtr8 <span style="mso-tab-count: 1"></span>*iTempBuf;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>Recv</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>AO</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中使用类似如下代码</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 20pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt" lang=EN-US>iTempBuf = new TPtr8(iBuf, iLen);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 20pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt" lang=EN-US>iSocket.RecvOneOrMore(*iTempBuf, 0, iStatus, iDummyLength);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">否则局部变量在异步的</span><span lang=EN-US>recv</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作中必然会引发</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h3 style="MARGIN: 13pt 0cm"><span lang=EN-US><font size=5>Timer in Symbian Development</font></span></h3>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US>TTime::HomeTime() / TTime::UniversalTime()</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最常见的时间获取手段，精度不高；因涉及一定的运算过程，效率较低。适用于需要以常规&#8220;年月日时分秒&#8221;方式使用时间的场合。在</span><span lang=EN-US>EKA2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台下，其精度与低阶系统时钟（</span><span lang=EN-US>Nanokernel Timer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）一致，通常为微妙级别。通过</span><span lang=EN-US> HAL::Get(HAL::ENanoTickPeriod, result) </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以获的具体精度。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：它们使用的是系统时间，这是可以被其它进程修改的。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US>User::TickCount()</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">传统的</span><span lang=EN-US>Tick</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计数器，精度通常仅为</span><span lang=EN-US>1/64</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">秒（可能随硬件有差异），适用于精度要求较低的场合。通过</span><span lang=EN-US> HAL::Get(HAL::ESystemTickPeriod, result) </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以获得具体精度。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：在休眠（</span><span lang=EN-US>Standby</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）状态下，</span><span lang=EN-US>TickCount</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将停止计数，所以</span><span lang=EN-US>User::TickCount()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在休眠状态下将&#8220;损失&#8221;计时！</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang=EN-US>3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US>User::NTickCount()</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">低阶系统时钟（</span><span lang=EN-US>Nanokernel Timer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），通常提供微妙级</span><span lang=EN-US>Tick</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。通过</span><span lang=EN-US> HAL::Get(HAL::ENanoTickPeriod, result) </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以获得具体精度。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：</span><span lang=EN-US>Symbian OS 6.x </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有此</span><span lang=EN-US>API</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。与</span><span lang=EN-US>TickCount</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不同的是，</span><span lang=EN-US>User::NTickCount()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在休眠状态下不&#8220;损失&#8221;计时。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">精度为微妙级，但是函数返回时毫秒级的数值</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang=EN-US>4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US>User::FastCounter()</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回值类似于</span><span lang=EN-US>Tick</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，提供</span><span lang=EN-US>Symbian OS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所能支持的最高精度，通常比</span><span lang=EN-US>TTime::HomeTime()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更准确。（如果硬件不支持</span><span lang=EN-US>high resolution timer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，则毫秒级时钟替代）而且，因为它采用快速的</span><span lang=EN-US>exec call</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读取一个硬件寄存器的数值，效率很高。通过</span><span lang=EN-US> HAL::Get(HALData::EFastCounterFrequency, result) </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以获得其具体精度。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：在每次终端从休眠状态激活后，它将同步至正确的数值，也就是说</span><span lang=EN-US>User::FastCounter()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在休眠状态下其实也是不&#8220;损失&#8221;计时的。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另外，</span><span lang=EN-US>User::After(), CPeriodic</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也会在休眠状态下&#8220;损失&#8221;计时，所以在手机这种特殊的应用环境中，需要特别注意不同定时器在&#8220;休眠&#8221;状态下计时的差异。</span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/115393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-05-14 19:38 <a href="http://www.cppblog.com/franksunny/archive/2010/05/14/115393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Symbian识别移动、联通和其它运营商网络的方法</title><link>http://www.cppblog.com/franksunny/archive/2010/04/22/113265.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 22 Apr 2010 11:13:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/04/22/113265.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/113265.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/04/22/113265.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/113265.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/113265.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h2 style="MARGIN: 13pt 0cm"><font size=5><font color=#000000><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">关于</span><span lang=EN-US><font face=Arial>Symbian</font></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">识别移动、联通和其它运营商网络的方法</span></font></font></h2>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自从</span><span lang=EN-US>Symbian OS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>EKA2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了强大的</span><span lang=EN-US>CTelephony</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这之后很多跟网络相关的参数都通过这个获取，像识别目前手机是注册的是移动还是联通等信息网络上传的比较多的也是通过该方法，特别是啸天兄在</span><span lang=EN-US>nokia</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">论坛分享了代码之后，网络上大多采用其代码，当然也包括我这样的懒人在内，而且往往很多人都没有注意最关键的原理即&#8220;<span style="COLOR: red">国际移动用户识别码（</span></span><span style="COLOR: red" lang=EN-US>IMSI</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span><span style="COLOR: red" lang=EN-US>International Mobile Subscriber Identification Number</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）是区别移动用户的标志，储存在</span><span style="COLOR: red" lang=EN-US>SIM</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">卡中，可用于区别移动用户的有效信息。</span><span style="COLOR: red" lang=EN-US>IMSI</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">由</span><span style="COLOR: red" lang=EN-US>MCC</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span style="COLOR: red" lang=EN-US>MNC</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span style="COLOR: red" lang=EN-US>MSIN</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组成，其中</span><span style="COLOR: red" lang=EN-US>MCC</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为移动国家号码，由</span><span style="COLOR: red" lang=EN-US>3</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位数字组成，唯一地识别移动客户所属的国家，我国为</span><span style="COLOR: red" lang=EN-US>460</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</span><span style="COLOR: red" lang=EN-US>MNC</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为网络</span><span style="COLOR: red" lang=EN-US>id</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，由</span><span style="COLOR: red" lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位数字组成，用于识别移动客户所归属的移动网络，中国移动为</span><span style="COLOR: red" lang=EN-US>00</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，中国联通为</span><span style="COLOR: red" lang=EN-US>01</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</span><span style="COLOR: red" lang=EN-US>MSIN</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为移动客户识别码，采用等长</span><span style="COLOR: red" lang=EN-US>11</span><span style="FONT-FAMILY: 宋体; COLOR: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位数字构成&#8221;</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。具体详见</span><span lang=EN-US><a href="http://wiki.forum.nokia.com/index.php/%E5%8C%BA%E5%88%86%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7SIM%E5%8D%A1%E6%98%AF%E7%A7%BB%E5%8A%A8%E8%BF%98%E6%98%AF%E8%81%94%E9%80%9A"><u><font color=#800080>http://wiki.forum.nokia.com/index.php/%E5%8C%BA%E5%88%86%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7SIM%E5%8D%A1%E6%98%AF%E7%A7%BB%E5%8A%A8%E8%BF%98%E6%98%AF%E8%81%94%E9%80%9A</font></u></a></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最近在使用该代码时，发现假如当手机处于离线状态下，则不论有无插</span><span lang=EN-US>SIM</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">卡，使用啸天兄的方法，就识别不出来了，这个应该跟</span><span lang=EN-US>CTelephony</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现有关，本人试着通过其源码去了解了，但是貌似跟踪到底层没有完全公开，或者说个人看源码能力还太弱了些。由于采用啸天兄方法实现不了了，所以只能从上面的红头文件（即红体字）寻找解决方法，虽然</span><span lang=EN-US>CTelephony::GetCurrentNetworkInfo</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在离线模式下失效，但是</span><span lang=EN-US>CTelephony::GetSubscriberId</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">仍然可用，为此我们就可以通过直接分析</span><span lang=EN-US>IMSI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现对运营商网络的识别，至于</span><span lang=EN-US>MNC</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的信息，大家可以查询</span><span lang=EN-US><a href="http://en.wikipedia.org/wiki/Mobile_network_code"><u><font color=#800080>http://en.wikipedia.org/wiki/Mobile_network_code</font></u></a></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在国内的情况如下截图：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/franksunny/Symbian技术图/MCN.JPG" width=523 height=356></o:lock></v:shapetype></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">既然知道了如上信息，我们就可以简单的对</span><span lang=EN-US>IMSI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">号进行分析了，小可对啸天兄的代码进行简单修改，当然该代码也是使用</span><span lang=EN-US>CTelephony</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，只能使用在</span><span lang=EN-US>EKA2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台上，</span><span lang=EN-US>EKA1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以采用</span><span lang=EN-US>RMobilePhone::GetSubscriberId</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方法来获取</span><span lang=EN-US>IMSI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在这里也就不做展开了，具体代码如下：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">头文件</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>/*</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>* TelephonyAO.h</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*<span style="mso-spacerun: yes">&nbsp; </span>Created on: <st1:chsdate w:st="on" Year="2010" Month="4" Day="22" IsLunarDate="False" IsROCDate="False">2010-4-22</st1:chsdate></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Author: frank</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*/</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#ifndef TELEPHONYAO_H_</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#define TELEPHONYAO_H_</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#include &lt;e32base.h&gt;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#include &lt;Etel3rdParty.h&gt;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US>typedef enum <o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US>{<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENetWorkUnKnow,<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENetWorkCM,<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENetWorkUN,<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENetWorkTC,<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENetWorkTT,<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US>}TNetWorkType;<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>class CTelephonyAO : public CActive</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>public:</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>static CTelephonyAO* NewL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TNetWorkType GetNetWorkId();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>public:</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>~CTelephonyAO();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>protected:</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void DoCancel();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void RunL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>private:</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephonyAO();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void ConstructL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void GetNetWorkInfo();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>private:</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CActiveSchedulerWait*<span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephony*<span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pTelephony_;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephony::TSubscriberIdV1<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iSubscribId;<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span style="COLOR: red" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephony::TSubscriberIdV1Pckg <span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>iSubscriberIdPckg;<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>};</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#endif /* TELEPHONYAO_H_ */</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现文件</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>/*</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>* TelephonyAO.cpp</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*<span style="mso-spacerun: yes">&nbsp; </span>Created on: <st1:chsdate w:st="on" Year="2010" Month="4" Day="22" IsLunarDate="False" IsROCDate="False">2010-4-22</st1:chsdate></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Author: frank</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>*/</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#include "TelephonyAO.h"</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CTelephonyAO::CTelephonyAO() : CActive(EPriorityStandard), iSubscriberIdPckg(iSubscribId)</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CTelephonyAO::~CTelephonyAO()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>delete pTelephony_;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pTelephony_ = NULL;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>delete iActiveSchedulerWait;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait = NULL;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void CTelephonyAO::ConstructL()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pTelephony_ = CTelephony::NewL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait = new (ELeave)CActiveSchedulerWait;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CActiveScheduler::Add(this);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CTelephonyAO* CTelephonyAO::NewL()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephonyAO* pSelf = new(ELeave) CTelephonyAO;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CleanupStack::PushL(pSelf);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pSelf-&gt;ConstructL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CleanupStack::Pop();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return pSelf;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void CTelephonyAO::RunL()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if (iActiveSchedulerWait-&gt;IsStarted()) </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{ </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait-&gt;AsyncStop(); </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void CTelephonyAO::DoCancel()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">pTelephony_-&gt;CancelAsync(CTelephony::EGetSubscriberIdCancel);<o:p></o:p></span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if (iActiveSchedulerWait-&gt;IsStarted()) </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{ </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait-&gt;AsyncStop(); </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void CTelephonyAO::GetNetWorkInfo()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Cancel();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">pTelephony_-&gt;GetSubscriberId(iStatus, iSubscriberIdPckg);<o:p></o:p></span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SetActive();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iActiveSchedulerWait-&gt;Start();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TNetWorkType CTelephonyAO::GetNetWorkId()</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>GetNetWorkInfo();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TNetWorkType vNetWorkType = ENetWorkUnKnow;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(iSubscribId.iSubscriberId.Length() &lt; 15)</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkUnKnow;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBuf&lt;6&gt; vHeader;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vHeader.Copy(iSubscribId.iSubscriberId.Left(5));</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBuf&lt;3&gt; vPtrTemp;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vPtrTemp.Copy(vHeader.Right(2));</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TInt vNetWorkId = 0;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TLex vLex(vPtrTemp);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vLex.Val(vNetWorkId);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if((vNetWorkId == 1) ||(vNetWorkId == 6))</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkUN;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else if((vNetWorkId == 0) ||(vNetWorkId == 2))</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkCM;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else if((vNetWorkId == 3) ||(vNetWorkId == 5))</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkTC;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else if(vNetWorkId == 20)</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkTT;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vNetWorkType = ENetWorkUnKnow;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return vNetWorkType;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">至于如何调用，就可以通过如下简单获取了，不用再自己去比较了。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CTelephonyAO* pTelephony = CTelephonyAO::NewL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CleanupStack::PushL(pTelephony);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TNetWorkType vNetWorkType = pTelephony-&gt;GetNetWorkId();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(pTelephony);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">好了，暂时小结如下吧，感谢啸天兄前人植树。</span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/113265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-04-22 19:13 <a href="http://www.cppblog.com/franksunny/archive/2010/04/22/113265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于RMsgQueue类的使用</title><link>http://www.cppblog.com/franksunny/archive/2010/04/09/112111.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 09 Apr 2010 13:40:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/04/09/112111.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/112111.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/04/09/112111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/112111.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/112111.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;关于RMsgQueue类的使用&nbsp;RMsgQueue类是Symbian OS EKA2才提供的一个类，最近因为项目中要使用，为此对使用进行如下小结。因为RMsgQueue类只是一个封装好的内核资源类，类似于RSocket和RTimer类，要想使用它进行异步操作就必须对其用AO类来封装，从而来实现监听消息，在有消息过来时得到通知并根据消息内容进行相对应的处理。...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2010/04/09/112111.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/112111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-04-09 21:40 <a href="http://www.cppblog.com/franksunny/archive/2010/04/09/112111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于3rd程序启动是参数的小结</title><link>http://www.cppblog.com/franksunny/archive/2010/03/26/110594.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 26 Mar 2010 09:10:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/03/26/110594.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/110594.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/03/26/110594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/110594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/110594.html</trackback:ping><description><![CDATA[<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">关于</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>3rd</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">程序启动是参数的小结</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>Symbian 3<sup>rd</sup></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">手机上对于</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>GUI</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">程序的启动方式可以采用安装时自启动、开机自启动、编码启动和点击功能表图标的方式启动，有很多软件往往对采用何种方式启动需要做些前后台以及其它相关的处理方式，那么如何识别目前的</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>GUI</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">程序是何种启动呢？</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">方法就是通过重载</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>GUI</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">框架的</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>C*AppUi::</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US> ProcessCommandParametersL (CApaCommandLine &amp;aCommandLine)</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">函数（该函数还有其它重名函数，这里只对最简单的形式进行解析，抛砖引玉），对其入参进行识别来判断是何种形式的自启动。下面对我试验中的几种情况给出示例，方便以后查询</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang=EN-US><o:p></o:p></span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、安装时启动，即</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>pkg</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">中标记为</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>FR,RI</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">标记的启动方式</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>C*AppUi::ProcessCommandParametersL</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">中入参的</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>aCommandLine.OpaqueData().Length()</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">为</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>0<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、通过</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>Startup List</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">开机自启动的方式</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">结果参数与</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">同</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>3</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、通过点击程序图片启动</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>C*AppUi::ProcessCommandParametersL</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">中入参的</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>aCommandLine.OpaqueData().Length()</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">为</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，具体符号，搞不出来，反正是</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>ASCII</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">码值为</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的那个符号</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>4</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、代码编程启动</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">试过三种方式：</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">第一种</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>const TUid KAppUid={0x2CC2D30E};<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TThreadId app_threadid;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RApaLsSession ls;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User::LeaveIfError(ls.Connect());<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TInt err=ls.StartDocument(KNullDesC, KAppUid, app_threadid);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ls.Close();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">结果同</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>3<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">第二种</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>RApaLsSession apaLsSession;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>User::LeaveIfError(apaLsSession.Connect());<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>CleanupClosePushL(apaLsSession);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>TApaAppInfo appInfo;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>TInt retVal = apaLsSession.GetAppInfo(appInfo, aAppUid);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>if (retVal == KErrNone)<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CApaCommandLine* cmdLine = CApaCommandLine::NewLC();<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cmdLine-&gt;SetCommandL(EApaCommandRun);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cmdLine-&gt;SetExecutableNameL(appInfo.iFullName);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_LIT8(KExitDesC,"start");<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cmdLine-&gt;SetOpaqueDataL(KExitDesC);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User::LeaveIfError(apaLsSession.StartApp(*cmdLine));<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(cmdLine);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>else<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// The application not found!<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(&amp;apaLsSession);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">结果还是同</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>3<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">第三种</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>_LIT8(KExitDesC,"start");<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>CApaCommandLine *cmd=CApaCommandLine::NewLC();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>cmd-&gt;SetCommandL(EApaCommandRun);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>cmd-&gt;SetExecutableNameL(_L("start.exe"));<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>cmd-&gt;SetOpaqueDataL(KExitDesC);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>RApaLsSession als;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>User::LeaveIfError(als.Connect());<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>CleanupClosePushL(als);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>User::LeaveIfError(als.StartApp(*cmd));<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #d9d9d9; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(2);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">结果与上述就不一样了，</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>aCommandLine.OpaqueData()</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">内容就是</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>"start"</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，也即五位描述符长度的内容。对于第二种和第三种情况，我是百思不得其解，为什么传执行文件名就可以，而传完整路径就是不行。</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">好了，暂时小结到这里。好久没更新空间，今天就上来码几个字。</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 24pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;<o:p></o:p></span></p>
<p style="TEXT-INDENT: 10pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/franksunny/aggbug/110594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2010-03-26 17:10 <a href="http://www.cppblog.com/franksunny/archive/2010/03/26/110594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>声音提示和震动提示的开发</title><link>http://www.cppblog.com/franksunny/archive/2009/08/12/93046.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 12 Aug 2009 09:38:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2009/08/12/93046.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/93046.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2009/08/12/93046.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/93046.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/93046.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h2 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"><font color=#000000 size=5>声音提示和震动提示的开发</font></span></h2>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声音提示可以采用两种方法：一种是利用系统自带的</span><span lang=EN-US>CoeSoundPlayer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类来实现单音铃声的播放；另一种则是利用</span><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的多媒体框架</span><span lang=EN-US>CMda*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类来实现音频播放。</span></p>
<h3 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=5>关于声音提示的使用</font></span></h3>
<h4 style="MARGIN: 14pt 0cm 14.5pt"><font size=5><span lang=EN-US><font face=Arial>CoeSoundPlayer</font></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">类使用</span></font></h4>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该类声明于</span><span style="COLOR: red" lang=EN-US>coesndpy.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">头文件，库是</span><span style="COLOR: red" lang=EN-US>cone.lib</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最简单的使用莫过于如下格式的代码应用</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TBaSystemSoundType a(KSystemSoundMessageUID); </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CoeSoundPlayer::PlaySoundNow(a);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在以上代码的使用时，第一行声明一个系统</span><span lang=EN-US>tone</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类型，该类型声明在</span><span style="COLOR: red" lang=EN-US>bassnd.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中，同时在</span><span lang=EN-US>mmp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中加上</span><span style="COLOR: red" lang=EN-US>bafl.lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">库文件。通常这种简单应用，在模拟器上能够听到声音（</span><span lang=EN-US>3<sup>rd</sup> MR</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本的模拟器上都听不到声音），但是在真机上，基本听不到声音，一个原因据说是默认的缺省音量被置成了</span><span lang=EN-US>KSystemSoundDefaultVolume</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其值最大可以到</span><span lang=EN-US>100</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（我亲测的结果是最小为</span><span lang=EN-US>0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，没有声音，最大只能到</span><span lang=EN-US>10</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，超过</span><span lang=EN-US>10</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之后和传负值一样都会报</span><span lang=EN-US>MMFAudioClient 4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的错误，程序也会</span><span lang=EN-US>Crash</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。所以关于这点最好还是有高人指点下）。另外</span><span lang=EN-US>bassnd.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中定义的类型还有</span><span lang=EN-US>KSystemSoundRingUID, KSystemSoundAlarmUID, KUidSystemSoundError, KUidSystemSoundEvent</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等，具体的效果，可以自己亲测下。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">稍微复杂一点的应用代码如下：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TBaSystemSoundType soundType(KSystemSoundMessageUID);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>//TBaSystemSoundInfo::TTone soundTone(aFrequency, aDuration);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TBaSystemSoundInfo::TTone soundTone(1500, 3*1000*1000);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TBaSystemSoundInfo soundInfo(soundType, soundTone);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>BaSystemSound::SetSoundL(CCoeEnv::Static()-&gt;FsSession(), soundInfo);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CoeSoundPlayer::PlaySoundNow(soundType);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这里，我对音调不是很懂，但是</span><span lang=EN-US>aFrequency</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的值，经人测试</span><span lang=EN-US>100</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span lang=EN-US>3400</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是工作正常，效果很好（可能</span><span lang=EN-US>1000</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span lang=EN-US>3000</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最好），</span><span lang=EN-US> 3600</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span lang=EN-US>3800</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就变弱了，再往上到</span><span lang=EN-US>4000</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基本上已经听不到了。这种方法一般在真机上还是可以感受出来的，并非像第一种情况，只有模拟器上有效果。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只是长时间播放简单的音调估计很刺耳，那么我们就可以通过事先设计好的</span><span lang=EN-US>rng</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件来进行播放单音铃声，具体代码如下：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>_LIT(KRingToneFileName1, "\\Data\\Sounds\\simple\\alarm.rng");</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>const TInt KRingingTypeSilent = 4; // Silent</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>TInt tRingingType (0);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CRepository* tRepository = CRepository::NewLC(KCRUidProfileEngine);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>User::LeaveIfError( tRepository -&gt;Get(KProEngActiveRingingType, tRingingType ) );</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>if ( <span style="COLOR: red">tRingingType != KRingingTypeSilent</span> )</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBaSystemSoundType soundType(KSystemSoundRingUID);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBaSystemSoundName soundName(KRingToneFileName1);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CompleteWithAppPath(soundName);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TBaSystemSoundInfo soundInfo(soundType, soundName, 10,<br><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>KSystemSoundDefaultPriority); </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BaSystemSound::SetSoundL(CCoeEnv::Static()-&gt;FsSession(), soundInfo);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CoeSoundPlayer::PlaySoundNow(soundType);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//CoeSoundPlayer::PlaySound(soundType);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CleanupStack::PopAndDestroy(); // tRepository</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用以上代码需要注意的是</span><span lang=EN-US>alarm.rng</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件必须要有，否则会没有声音传出，该文件在</span><span lang=EN-US>FP2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本的模拟器路径下没有，可以在</span><span lang=EN-US>S60_3rd_MR\Epoc32\release\winscw\udeb\z\system\sounds\simple</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下找到，并将其拷贝到相应的</span><span lang=EN-US>epoc32\release\winscw\udeb\z\system\sounds\simple</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面即可。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注：另外，在这里虽然对情景模式是否静音进行了判断，其实不判断也是可以的，因为情景模式设为静音，仍然是可以播放出声音来的。这点很不同于震动。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<h4 style="MARGIN: 14pt 0cm 14.5pt"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"><font size=5>多媒体框架的使用</font></span></h4>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>MMF</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（多媒体框架）提供了对音频进行播放、录制和格式转换等功能函数，具体的功能类如下：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CMdaAudioPlayerUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：音频播放；</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CMdaAudioRecorderUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：音频录制；</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CMdaAudioConvertUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：音频格式转换；</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CMdaAudioToneUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：音调播放</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>CMdaAudioInputUtility/ CMdaAudioOutputUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：音频流操作</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于这一块内容的介绍在灵活使用</span><span lang=EN-US>EMCCsoft</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的</span><span lang=EN-US>AudioPlayer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">例子程序就会比较清楚，在这里就不多做展开了。唯一需要提醒的是，相应的回调接口虚函数一定要实现，否则不好控制。另设置音量的函数</span><span lang=EN-US>SetVolume</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也是只能在</span><span lang=EN-US>0~10</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间，否则也会报</span><span lang=EN-US>MMFAudioClient 4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误。</span> </p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在用</span><span lang=EN-US>CMdaAudioPlayerUtility</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行音乐文件比如</span><span lang=EN-US>*.wav</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式播放时，假如一个文件还没有播放完，又开始播放一个新文件，也会引发</span><span lang=EN-US>MMFAudioClient 4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的错误。</span></p>
</o:p></span>
<h3 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=5>关于震动提示的使用</font></span></h3>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">震动这个接口的发展历史很奇特，</span><span lang=EN-US>Symbian OS v8.x</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之前没有提供震动接口，之后开始使用</span><span lang=EN-US>CVibraControl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类提供震动接口，而在</span><span lang=EN-US>Symbian OS v9.x</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之后在保留原有接口基础上又提供了新的</span><span lang=EN-US>CHWRMVibra</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类来提供震动接口。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网上的代码很多，常见形式如下：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>// for S60 2nd FP2 and FP3</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#include &lt;vibractrl.h&gt;<span style="mso-spacerun: yes">&nbsp; </span>// CVibraControl, VibraCtrl.lib </span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void DoVibrateL( TUint16 aDuration )</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>CVibraControl* control = VibraFactory::NewL();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>// get vibration setting in the user profile</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>if ( CVibraControl::EVibraModeON == control-&gt;VibraSettings() )<span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>control-&gt;StartVibraL( aDuration );</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>delete control;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>control = NULL;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>// for S60 3rd</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>#include &lt;hwrmvibra.h&gt;<span style="mso-spacerun: yes">&nbsp; </span>// CHWRMVibra, HWRMVibraClient.lib</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>void DoVibrateL( TInt aDuration )</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>CHWRMVibra* vibra = CHWRMVibra::NewLC();</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>// get vibration setting in the user profile</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>if ( CHWRMVibra::EVibraModeON == vibra-&gt;VibraSettings() )<span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>{</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>vibra-&gt;StartVibraL( aDuration );</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>CleanupStack::PopAndDestroy( vibra );</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>}</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事实上如果原封不动拷贝如上代码是实现不了震动功能的，因为不管是</span><span lang=EN-US>CHWRMVibra</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">还是</span><span lang=EN-US>CVibraControl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象在被新建并调用完</span><span lang=EN-US>StartVibraL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数之后，立即就被析构了，因为</span><span lang=EN-US>StartVibraL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有类似异步函数的功能，并非阻塞在持续时间之内才会返回，所以对象还没起振就删除了。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">震动功能的实现代码虽然简单，但是要想震起来还是有点麻烦的，为此我在使用时除了以上问题，还遇到其它几个问题：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当前情景模式里震动提示设置为关时，显然会因为</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>if ( CVibraControl::EVibraModeON == control-&gt;VibraSettings() )</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>if ( CHWRMVibra::EVibraModeON == vibra-&gt;VibraSettings() )</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两个条件判断没通过而没有真实调用</span><span lang=EN-US>StartVibraL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，那么我如果将判断去掉，始终让其调用</span><span lang=EN-US>StartVibraL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数应该也会震动的吧？</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结果是震动函数返回</span><span lang=EN-US>-21</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>KErrAccessDenied</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（拒绝接受），这和播放声音提示时的效果完全两样，所以说读情景配置模式里的参数在这里完全是必要的。<span lang=EN-US><o:p></o:p></span></span></p>
<p style="TEXT-INDENT: 23pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">好，那就加判断，总算执行到了</span><span lang=EN-US>StartVibraL (TUint16 aDuration, TInt aIntensity)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，假如在这里</span><span lang=EN-US>aDuration</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">超过</span><span lang=EN-US>KHWRMVibraMaxDuration</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，或者</span><span lang=EN-US>aIntensity</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不在</span><span lang=EN-US>-100</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span lang=EN-US>100</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间</span><span lang=EN-US>(</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里的强度值是马达的运转强度值，负值是马达反转，有些文章说该值在</span><span lang=EN-US>+-30</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范围内会报</span><span lang=EN-US>-2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>KErrGeneral</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">错误，但是自己用<span lang=EN-US>E65</span>亲测过，在<span lang=EN-US>+-30</span>以内，没有报错，震动感不强烈而已，可能跟手机和具体硬件有关吧</span><span lang=EN-US>)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，那么震动效果又没有起来，此时的震动函数返回为</span><span lang=EN-US>-6</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，即</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>KErrAgument</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（错误要求）。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们解决了以上两个问题后，还有两种特殊情况，一种是当你的手机在充电时，如果调用正确的</span><span lang=EN-US>StartVibraL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会返回</span><span lang=EN-US>-22</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误，即</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>KErrLocked</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 11.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（锁闭）。以上几种情况还好，虽然不震，但是你可以用<span lang=EN-US>TRAP</span>机制捕获错误码，但是如果</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当你是通过数据线的手机</span><span lang=EN-US>PC</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式装上软件后没有拔出数据线，就算使用</span><span lang=EN-US>TRAP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回时</span><span lang=EN-US>KErrNone</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，但是手机还是没有震动起来，你就会头大了，难道这个函数在当前手机上不管用吗？</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事实是，当你拔掉数据线，居然震动来了。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">唉，问题总算解决了，代码虽简单，但是实现却并不简单啊。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/93046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2009-08-12 17:38 <a href="http://www.cppblog.com/franksunny/archive/2009/08/12/93046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RConnection的简单使用两则</title><link>http://www.cppblog.com/franksunny/archive/2009/08/12/93045.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 12 Aug 2009 09:37:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2009/08/12/93045.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/93045.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2009/08/12/93045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/93045.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/93045.html</trackback:ping><description><![CDATA[<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>RConnection </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的基类是</span><span lang=EN-US>RSubSessionBase</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。目前我所知道的就是两个功能：一、为套接字在</span><span lang=EN-US>SymbianOS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上使用建立会话通道，二、使用已建立的会话通道</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一种应用是为了屏蔽接入点（</span><span lang=EN-US>IAP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）选择对话框，具体代码如下</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TInt currentProfileId;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// Check whether we are offline or online</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>iRepository-&gt;Get(KProEngActiveProfile, currentProfileId);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>if (currentProfileId == 5)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// Close and uninitialize</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iConnection.Close();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iSocketServ.Close();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里的</span><span lang=EN-US>iSelectedIap</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是已经选择好的接入点</span><span lang=EN-US>iap</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>if(iSelectedIap == 0)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>User::LeaveIfError(iSocketServ.Connect());</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>User::LeaveIfError(iConnection.Open(iSocketServ));</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TCommDbConnPref pref; </span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>// IAP ID for connection to be used</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>pref.SetIapId(iSelectedIap);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>//CEikonEnv::Static()-&gt;InfoWinL(_L("note:"), _L("Iap OK"));</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>pref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>pref.SetDirection(ECommDbConnectionDirectionOutgoing );</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>//CEikonEnv::Static()-&gt;InfoWinL(_L("note:"), _L("Pref Ok"));</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>iConnection.Start(pref,iStatus);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>SetActive();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">由以上代码可知，建立会话通道是一个异步函数，所以最好在活动对象中使用，因为目前该代码只是在</span><span lang=EN-US>G</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网上亲测过，在</span><st1:chmetcnv TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="3" UnitName="g" w:st="on"><span lang=EN-US>3G</span></st1:chmetcnv><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>WLAN</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是否也通用暂时还不敢肯定。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二种应用往往用在复用通道上，比方说同一个程序有多个线程（或者使用</span><span lang=EN-US>C/S</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">架构的程序，不同的进程乃至两个完全无关的）需要使用网络，没必要每个线程都去建立一个会话通道，所以就采用复用的方式；还有一种复用的要求就是用</span><span lang=EN-US>RConnection</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来获得当前链接的流量等数据，以下就给出这么一种应用的代码：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vUl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vDl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TPckg&lt; TUint &gt;<span style="mso-spacerun: yes">&nbsp; </span>UplinkVolume(vUl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TPckg&lt; TUint &gt;<span style="mso-spacerun: yes">&nbsp; </span>DownlinkVolume(vDl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TRequestStatus<span style="mso-spacerun: yes">&nbsp; </span>aStatus;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>RConnection<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vConnection;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>if(vConnection.Open(iSocketServ) == KErrNone)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TPckgBuf&lt;TConnectionInfo&gt; connInfo;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TUint count;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if (vConnection.EnumerateConnections(count) == KErrNone)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for (TUint i=1; i&lt;=count; i++)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Note: GetConnectionInfo expects 1-based index.</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if (vConnection.GetConnectionInfo(i, connInfo) == KErrNone)</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">TInt vErr = vConnection.Attach(connInfo, RConnection::EAttachTypeNormal);<o:p></o:p></span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>}</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>vConnection.<span style="COLOR: red">DataTransferredRequest(UplinkVolume, DownlinkVolume, aStatus);</span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>User::WaitForRequest(aStatus);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TFileName vBuffergg,vBuffergg2;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>vBuffergg.AppendNum(vDl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>iObserver.RComValuesL(EGetConnectId,_L("KDownlinkData"),vBuffergg,0);<span style="mso-tab-count: 1">&nbsp; </span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>vBuffergg2.AppendNum(vUl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>iObserver.RComValuesL(EGetConnectId,_L("KUplinkData"),vBuffergg2,0);<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>vConnection.Close();</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代码往往都是很简单的，但是往往会有点问题，在这个获取流量的方法上，起初我们使用单线程可以用，但是后来居然不能用了，百思不得其解，后来经过分析存在后面的一些问题，先得出一个结论，</span><span lang=EN-US>RConnection</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以跨线程乃至进程使用</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意点</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TConnectionInfoV2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">获取的</span><span lang=EN-US>coninfo</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能进行</span><span lang=EN-US>attach</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，否则会爆</span><span lang=EN-US>-34</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误，如果同一个</span><span lang=EN-US>RConnection</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象已经连接上了，再继续使用</span><span lang=EN-US>attach</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，则会报</span><span lang=EN-US>-14</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错误，但是</span><span lang=EN-US>RConnection</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象仍然是可以正常使用的，可以通过它创建</span><span lang=EN-US>Socket</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和监控流量等。</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在使用</span><span lang=EN-US>TPckg</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候尤其要注意类型的配对问题，因为上面代码中用到的是局部变量，很显然如下代码不会有误</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vUl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>vDl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TPckg&lt; TUint &gt;<span style="mso-spacerun: yes">&nbsp; </span>UplinkVolume(vUl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TPckg&lt; TUint &gt;<span style="mso-spacerun: yes">&nbsp; </span>DownlinkVolume(vDl);</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是一次当我将</span><span lang=EN-US>vUl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>vDl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明成类的成员变量时，弄成如下方式</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint32<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>iUl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span lang=EN-US>TUint32<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>iDl = 0;</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再将其用</span><span lang=EN-US>TPckg</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行封装之后，传入</span><span lang=EN-US>DataTransferredRequest</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，得到的流量始终是</span><span lang=EN-US>0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，真的让我百思不得其解，这种失误教训真的太深刻。<br><br><br>&nbsp;&nbsp;&nbsp; 另外，近来发现RConnection类的实例对象是不能够进行跨线程调用，同样的CRepository的实例对象跨线程调用也是不允许的。</span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/93045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2009-08-12 17:37 <a href="http://www.cppblog.com/franksunny/archive/2009/08/12/93045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转加整理]Symbian下用C++实现网页浏览的代码 </title><link>http://www.cppblog.com/franksunny/archive/2009/08/12/93044.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 12 Aug 2009 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2009/08/12/93044.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/93044.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2009/08/12/93044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/93044.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/93044.html</trackback:ping><description><![CDATA[<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">先声明一下，下面的这段代码是调用系统的浏览器实现网页浏览的功能，很显然这是一种比较简单的方法，但是它的可控制性就不行了，例如左软键的内容你是肯定该不了的。如何写一个自己的浏览器，而不调用系统的，等以后做出来再说吧。</span><span style="mso-bidi-font-size: 9.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">调用系统的浏览器来实现网页浏览可以根据系统浏览器的状态而决定调用的方法，例如当系统浏览器正在使用的时候可以用</span><span style="mso-bidi-font-size: 9.0pt; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt" lang=EN-US>T</span><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>ApaTask::SendMessage ()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">方法；当系统浏览器没有被使用的时候可以用</span><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>RapaLsSession::StartDocument() </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">方法。</span><span style="mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下面是实现代码：</span><span style="mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>TBool CinternetAppUi::ConnectL(const TDesC&amp; addr)<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>{<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;const TInt KBrowserUid = 0x10008D39;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;TUid id( TUid::Uid( KBrowserUid ) );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;TApaTaskList taskList( CEikonEnv::Static()-&gt;WsSession() );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;TApaTask task = taskList.FindApp( id );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;// the system browser is in use<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;if ( task.Exists() )<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; HBufC8* param8 = HBufC8::NewLC( addr.Length() );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; param8-&gt;Des().Append( addr );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; CleanupStack::PopAndDestroy();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;// the system browser is not in use<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>else<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;{<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;RApaLsSession&nbsp;&nbsp; appArcSession;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;User::LeaveIfError(appArcSession.Connect());&nbsp;&nbsp;&nbsp; // connect to AppArc server<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;TThreadId id;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;appArcSession.StartDocument( addr, TUid::Uid( KBrowserUid ), id );<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;&nbsp;appArcSession.Close();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;}<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&nbsp;return ETrue;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>}</span><span style="mso-bidi-font-size: 9.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">其中入口参数</span><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>addr</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的格式是</span><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&#8220;<st1:chmetcnv w:st="on" UnitName="&#8221;" SourceValue="4" HasSpace="False" Negative="False" NumberType="1" TCSC="0">4&#8221;</st1:chmetcnv>+&#8221; &lt;Space&gt;&#8220;+&#8221;&lt;Url&gt;&#8221;</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，例如</span><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>&#8220;4&nbsp; <a href="http://www.google.com/" target=_blank><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none">www.google.com</span></a>&#8221;</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: ˎ̥; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中采用以上方法不仅仅可以用于开启网页，还可以用于启动安装</span><span lang=EN-US>sis/sisx</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，具体示例代码如下：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>RApaLsSession installSession;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>TThreadId threadId;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>TUid uid;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>uid.iUid = 0x<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101F</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875A</st1:chmetcnv>;<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>installSession.Connect();<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>installSession.StartDocument(aFileName, uid, threadId);<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>installSession.Close();<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该代码自己没有亲测过，但是从理论上说应该可行，而且有大牛说</span><span lang=EN-US>uid</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都不用传进去。</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另外播放音乐文件，网上也说可以通过该方法来实现，</span><span lang=EN-US>Uid</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分别如下：</span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>0x<st1:chmetcnv w:st="on" UnitName="C" SourceValue="102072" HasSpace="False" Negative="False" NumberType="1" TCSC="0">102072c</st1:chmetcnv>3 (from S60 3rd Edition onwards)<o:p></o:p></span></p>
<p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; BACKGROUND: #e0e0e0; mso-char-indent-count: 2.0" class=MsoNormal align=left><span style="mso-font-kerning: 0pt" lang=EN-US>0x<st1:chmetcnv w:st="on" UnitName="C" SourceValue="6" HasSpace="False" Negative="False" NumberType="1" TCSC="0">6c</st1:chmetcnv>5b9d2 (S60 2nd Edition)<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span style="mso-bidi-font-family: 宋体; mso-font-kerning: 0pt" lang=EN-US>RapaLsSession::StartDocument()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">功能还是很强大的，在这里只做摘录，以后有机会再亲测，不过用其打开网页的确可行。<br><br></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/93044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2009-08-12 17:36 <a href="http://www.cppblog.com/franksunny/archive/2009/08/12/93044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[整理]symbian中活动对象的简单使用</title><link>http://www.cppblog.com/franksunny/archive/2008/10/11/63772.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Sat, 11 Oct 2008 13:03:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/10/11/63772.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/63772.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/10/11/63772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/63772.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/63772.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red">symbian</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">官方推荐使用活动服务对象</span><span lang=EN-US style="COLOR: red">(CActive)</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来代替多线程的使用</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我想这个道理是很明了的</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在手机这样的小内存设备里</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">运行多线程的程序是非常耗资源的</span><span lang=EN-US>,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了节约资源</span><span lang=EN-US style="COLOR: red">,symbian</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了一个活动服务对象的框架</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">允许把程序里并发执行对象</span><span lang=EN-US style="COLOR: red">(</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实不是并发</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不过宏观上看来是</span><span lang=EN-US style="COLOR: red">)</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">放在一个线程里面执行</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这些并发工作的对象就通过活动规划器</span><span lang=EN-US style="COLOR: red">(ActiveScheduler)</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来进行管理</span><span lang=EN-US>.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于这两个东西的介绍</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网上有一大堆的文档</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我就不在这里废话了</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何使用呢</span><span lang=EN-US>?</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里我先举一个简单的计数器的例子</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我选择写一个</span><span lang=EN-US>exe</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的程序</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也就是说程序是以</span><span lang=EN-US>E32Main</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为入口的</span><span lang=EN-US>.</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>GLDEF_C TInt E32Main()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CTrapCleanup* cleanup=CTrapCleanup::New();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TRAPD(error,callInstanceL());</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>if (error != KErrNone)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>printf("get error %d\r\n", error);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>delete cleanup;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>return 0;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以上的内容是每一个</span><span lang=EN-US>exe</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件都应该做的</span><span lang=EN-US>,<span style="COLOR: red">CTrapCleanup* cleanup=CTrapCleanup::New()</span></span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立一个清除堆栈</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以便程序在异常退出的时候把清除堆栈里面的资源都释放掉</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当然你也可以加上<span style="COLOR: red">堆检测宏（</span></span><span lang=EN-US style="COLOR: red">__UHEAP_MARK,__UHEAP_MARKEND</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里我就不多说了。</span><span lang=EN-US>TRAPD</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span lang=EN-US>symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里面经常使用的宏</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">功能类似于</span><span lang=EN-US>try,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一个参数是让定义一个错误返回值变量的名字</span><span lang=EN-US>, </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后面就是可能有异常的你写的函数</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当这个函数异常时</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序不会</span><span lang=EN-US>crash, </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你可以得到异常的原因</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以参考</span><span lang=EN-US>nokia</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">论坛上的一些关于这些使用的文档</span><span lang=EN-US>.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来是</span><span lang=EN-US>vcallInstanceL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这个函数里面我来建立</span><span lang=EN-US>ActiveScheduler.</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>LOCAL_C void callInstanceL()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CActiveScheduler* scheduler = new(ELeave) CActiveScheduler();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CleanupStack::PushL(scheduler);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CActiveScheduler::Install(scheduler);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TRAPD(error,doInstanceL());</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>if(error)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;</span></span><span lang=PT-BR style="mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=PT-BR style="mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>printf("error code=%d\r\n",error);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>else</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>printf("OK!\r\n[press any key]");</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(scheduler);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这段程序很简单就是创建一个活动规划器</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并压入清除栈</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后安装活动规划器</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样就可以用了</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再执行真正的实例函数</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后出栈销毁。</span><span lang=EN-US>doinstance(</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该函数将在最后的代码中给出，主要的功能就是调用我们自己写的活动计数器</span><span lang=EN-US>)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们放到最后来写</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">现在来构造我们的活动计数器对象。</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>class TimeCount : public CActive</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>public :</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>static TimeCount* NewLC(); // </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函数</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>~TimeCount();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void StartL();<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计数开始</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void ConstructL();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void RunL();<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">延时事件到达以后的处理函数</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void DoCancel();<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取消请求提交</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void setDelayTime(int delayTime);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>private:</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TimeCount();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>RTimer iTimer;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定时器</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>int iTimeCount;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计数器</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>int mTime;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计数间隔时间</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">单位秒</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>};</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TimeCount::TimeCount():CActive(0)<span style="mso-spacerun: yes">&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里可以设置活动对象的优先级</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">把自己加入活动规划器</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CActiveScheduler::Add(this);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TimeCount* TimeCount::NewLC()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TimeCount* result = new (ELeave) TimeCount();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CleanupStack::PushL( result );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>result-&gt;ConstructL();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>return result;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void TimeCount::DoCancel(void)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iTimer.Cancel();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void TimeCount::setDelayTime(int mTime)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>DelayTime = mTime;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TimeCount::~TimeCount()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Cancel();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iTimer.Close();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void TimeCount::StartL()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设定定时器状态为每隔</span><span lang=EN-US>mTime</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">秒钟状态完成一次</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iTimer.After(iStatus, 10000 * 100 * mTime);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提交异步请求</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>SetActive();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void TimeCount::ConstructL()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化计数器和定时器</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iTimeCount = 0;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>User::LeaveIfError(iTimer.CreateLocal());</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void TimeCount::RunL()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计数器</span><span lang=EN-US>+1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以后继续提交延时请求事件</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>printf("The Count is -&gt;&gt;%d", iTimeCount++);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>StartL();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每一个活动服务对象都有一个</span><span lang=EN-US>iStatus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来标识当前对象的状态</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这里我们把</span><span lang=EN-US>iStatus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设定为</span><span lang=EN-US>iTimer.After(iStatus, 10000 * 100 * mTime);</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也就是定时器定时</span><span lang=EN-US>mTime</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">秒钟以后</span><span lang=EN-US>iStatus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发生改变</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个时候活动规划器会收到这个状态的改变</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从而调用相应活动对象的处理函数</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也就是</span><span lang=EN-US>RunL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>RunL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数里面进行计数和输出</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后调用</span><span lang=EN-US>startL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">重新设置定时器和对象状态</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再提交给活动规划器。这样</span><span lang=EN-US>mTime</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">秒钟以后活动规划器会再次调用</span><span lang=EN-US>RunL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一直这样重复</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样就达到了计数器的效果。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后我们来写</span><span lang=EN-US>doinstanceL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>LOCAL_C void doInstanceL()</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TimeCount* timeCount = TimeCount::NewLC();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每隔一秒钟打印一次</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TimeCount-&gt;setDelayTime(1);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TimeCount-&gt;StartL();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CActiveScheduler::Start();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy(1);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建好对象以后</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加上</span><span lang=EN-US style="COLOR: red">CActiveScheduler::Start()</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序就开始运行了</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这句话告诉活动规划器该等待对象的状态的改变了（正常情况下，一旦</span><span lang=EN-US style="COLOR: red">CActiveScheduler::Start</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（）之后，程序直到</span><span lang=EN-US style="COLOR: red">CActiveScheduler::Stop</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（）才能终止运行）</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这里就是</span><span lang=EN-US>timeCount</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>iStatus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的改变</span><span lang=EN-US>.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等</span><span lang=EN-US>iStatus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">改变并调用了</span><span lang=EN-US>RunL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以后</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">继续等待</span><span lang=EN-US>iStstus</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的改变</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样我们使用活动对象的计数器就能够通过消息驱动运行起来了</span><span lang=EN-US>.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里的</span><span lang=EN-US style="COLOR: red">CActiveScheduler</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只管理了一个</span><span lang=EN-US style="COLOR: red">CActive</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就是</span><span lang=EN-US style="COLOR: red">timeCount,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以用类似的方法实现多个</span><span lang=EN-US style="COLOR: red">CActive,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并且都加入</span><span lang=EN-US style="COLOR: red">CActiveScheduler,CActiveScheduler</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将会等待所有加入它的</span><span lang=EN-US style="COLOR: red">CActive</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的状态的改变</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中有一个的状态改变就会去执行对应的活动对象的处理函数</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当状态同时发生的时候</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会通过对象的优先级来决定先调用谁的</span><span lang=EN-US style="COLOR: red">RunL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</span><span lang=EN-US style="COLOR: red">.CActiveScheduler</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也是非抢占式的</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当一个</span><span lang=EN-US style="COLOR: red">RunL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数还没有执行完的时候</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果另一个</span><span lang=EN-US style="COLOR: red">CActive</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的状态改变</span><span lang=EN-US style="COLOR: red">,</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会等待</span><span lang=EN-US style="COLOR: red">RunL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行完以后再执行另一个</span><span lang=EN-US style="COLOR: red">CActive</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的处理函数（正因为这一点，所以通常</span><span lang=EN-US style="COLOR: red">RunL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数不能设计为长函数，否则会阻塞活动对象）</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;本文在网上根据网上用人提供的原本阅读学习而成，可算是转载类型的。</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US></span>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/63772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-10-11 21:03 <a href="http://www.cppblog.com/franksunny/archive/2008/10/11/63772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从线程角度看AO框架</title><link>http://www.cppblog.com/franksunny/archive/2008/10/11/63766.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Sat, 11 Oct 2008 12:34:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/10/11/63766.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/63766.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/10/11/63766.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/63766.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/63766.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">Active Object (AO) </span><span style="FONT-FAMILY: 宋体">框架，是<span lang=EN-US>Symbian</span>的基本工作部分。它是为了满足多个任务同时执行的要求。在<span lang=EN-US> Windows/Unix </span>平台上，我们可以不加思索的使用多线程来完成多任务。可是在嵌入式平台上，系统的资源是有限的。比如<span lang=EN-US>CPU</span>、内存都比我们平时用的个人计算机要低。这就要求嵌入式系统能够合理的使用系统资源。不能频繁的切换线程或者进程。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">Symbian</span><span style="FONT-FAMILY: 宋体">为这种特别需求设计了<span lang=EN-US>Active Object (AO)</span>框架。<span lang=EN-US>AO</span>框架是运行于一个线程内部的调度框架。<span style="COLOR: red">其基本思想就是把一个单线程分为多个时间片，来运行不同的任务</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">这和多线程有很大区别。<span style="COLOR: red">多线程之间是可以被抢占的<span lang=EN-US>(</span>由操作系统调度<span lang=EN-US>)</span>，但是<span lang=EN-US>AO</span>框架中的各个任务是不可被抢占的<span lang=EN-US>,</span>一个任务必须完成，才能开始下一个任务</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">下面是多线程和<span lang=EN-US>AO</span>框架的简单比较：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">多线程<span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AO</span>框架<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">可以被抢占<span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>不可被抢占<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">上下文切换耗费<span lang=EN-US>CPU</span>时间<span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>没有上下文切换<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">由操作系统调度<span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>由线程自己的<span lang=EN-US>AO</span>框架调度<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">每个线程都有至少<span lang=EN-US>4K Stack.<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AO</span>没有单独的<span lang=EN-US>Stack.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">操作系统还要分配额外的资源记录线程<span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>只是一个<span lang=EN-US>Active Object.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">Symbian</span><span style="FONT-FAMILY: 宋体">系统本身使用了大量的<span lang=EN-US>AO</span>框架来实现一些系统服务。这使得<span lang=EN-US>Symbian</span>和其他嵌入式系统相比较，对系统资源的使用更加合理。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体">AO</span><span style="COLOR: red; FONT-FAMILY: 宋体">框架包括<span lang=EN-US>CActiveScheduler </span>和<span lang=EN-US>CActive (Active Object)</span>。一个线程的所有的<span lang=EN-US>Active Object</span>对象都被安装在该线程的<span lang=EN-US>CActiveScheduler</span>对象内<span lang=EN-US>.</span>由<span lang=EN-US>CActiveScheduler</span>对象监控每个<span lang=EN-US>Active Object</span>是否完成了当前任务，如果完成了，就调度下一个<span lang=EN-US>Active Object</span>来执行。<span lang=EN-US>CActiveScheduler</span>根据优先级来调度各个<span lang=EN-US>Active Object</span></span><span lang=EN-US style="FONT-FAMILY: 宋体">.<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">关于<span lang=EN-US>CActiveScheduler</span>的创建和安装，<span lang=EN-US>CActive</span>的创建和安装，和<span lang=EN-US>CActive</span>的任务处理，可以参看<span lang=EN-US> SDK </span>文档。理解起来不难。下面要说一个比较容易忽略的地方。这对理解<span lang=EN-US>AO</span>框架非常重要。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">创建调度器<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">CActiveScheduler * scheduler = new (ELeave) CActiveScheduler;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">CleanupStack::PushL(scheduler);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体">CActiveScheduler::Install(scheduler);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">运行调度器<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体">CActiveScheduler::Start(); <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">停止调度器<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体">CActiveScheduler::Stop();<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">以上代码都是运行在一个线程中的<span lang=EN-US>,</span>一般来讲<span lang=EN-US>,</span>一个<span lang=EN-US>EXE</span>只有一个主线程<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">可是如果真的有<span lang=EN-US>2</span>个线程呢<span lang=EN-US>?<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">为什么在当前线程下调用<span lang=EN-US>CActiveScheduler::Start(),CActiveScheduler::Stop()</span>运行<span lang=EN-US>/</span>停止的就是当前线程的调度器而不是另一个线程的调度器<span lang=EN-US>?<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">每个线程都有自己的<span lang=EN-US>CActiveScheduler,</span>那么这个<span lang=EN-US>CActiveScheduler</span>类是怎么调用<span lang=EN-US>CActiveScheduler::Start(),CActiveScheduler::Stop()</span>来运行<span lang=EN-US>/</span>停止当前的调度器的呢<span lang=EN-US>?<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">我们看到<span lang=EN-US>Start/Stop</span>并没有参数<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">打开<span lang=EN-US>CActiveScheduler</span>的类定义：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">class CActiveScheduler : public CBase<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">public:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C CActiveScheduler();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C ~CActiveScheduler();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static void Install(CActiveScheduler* aScheduler);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">IMPORT_C static CActiveScheduler* Current();<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static void Add(CActive* anActive);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static void Start();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static void Stop();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static TBool RunIfReady(TInt&amp; aError, TInt aMinimumPriority);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C static CActiveScheduler* Replace(CActiveScheduler* aNewActiveScheduler);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void WaitForAnyRequest();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void Error(TInt anError) const;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">private:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void DoStart();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>void OwnedStartLoop(TInt&amp; aRunning);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void OnStarting();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void OnStopping();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void Reserved_1();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void Reserved_2();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">private:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// private interface used through by CActiveSchedulerWait objects<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>friend class CActiveSchedulerWait;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>static void OwnedStart(CActiveSchedulerWait&amp; aOwner);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">protected:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>inline TInt Level() const;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=PT-BR style="FONT-FAMILY: 宋体; mso-ansi-language: PT-BR">private:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=PT-BR style="FONT-FAMILY: 宋体; mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TInt iLevel;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=PT-BR style="FONT-FAMILY: 宋体; mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TPriQue&lt;CActive&gt; iActiveQ;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=PT-BR style="FONT-FAMILY: 宋体; mso-ansi-language: PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-FAMILY: 宋体">};<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">我们并没有看到静态的成员来表示线程，但是却有一个<span lang=EN-US>static</span>函数<span lang=EN-US>CActiveScheduler* Current();</span>返回当前线程的调度器<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">现在猜想奥秘就在这个函数是怎么实现的。这个静态的函数怎么就能得到当前这个运行线程的调度器<span lang=EN-US>,</span>而不是别的线程的调度器。我们可以猜想<span lang=EN-US>,</span>肯定是<span lang=EN-US>Current()</span>内部实现能取到当前线程的标识信息<span lang=EN-US>.</span>用这个标识<span lang=EN-US>,</span>静态函数能取到这个线程的<span lang=EN-US>CActiveScheduler.</span>这个具体如何实现呢？<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">答案就是：当前线程的线程<span lang=EN-US>ID</span>可以这样得到<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">创建一个缺省的线程对象<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">RThread thread;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">取得当前线程的<span lang=EN-US>ID:<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-FAMILY: 宋体">TThreadId threadId = thread.Id();<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体">能得到当前线程的<span lang=EN-US>threadId,</span>当然可以得到和当前线程关联的<span lang=EN-US>CActiveScheduler</span>。因此以上两个问题也就迎刃而解了，在一个线程内调用<span lang=EN-US>CActiveScheduler::Start(),CActiveScheduler::Stop()</span>开启的就是当前线程。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">既然回复了上面的问题，那么我们自然就能明确，<span style="COLOR: red">在一个线程内是不能通过</span></span><span lang=EN-US style="COLOR: red">Start</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US style="COLOR: red">Stop</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数来开启和停止另一个线程内的活动对象规划器</span><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体">CActiveScheduler</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">补充点其他东西：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作系统中，每个进程都有一个或多个线程。线程是执行的基本单位。一个进程的主线程是在进程启动时生成的。</span><span lang=EN-US style="COLOR: red">Symbian</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属于抢占式多任务操作系统，这意味着每个线程都有自己的执行时间，直到系统将</span><span lang=EN-US style="COLOR: red">CPU</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用权给予其他线程</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。当系统调度时，具有最高优先权的线程将首先获得执行。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进程边界是受内存保护的</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。所有的用户进程都有自己的内存地址空间，同一进程中的所有线程共享这一空间，用户进程不能直接访问其他进程的地址空间。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每个线程都有它自己的</span><span lang=EN-US>stack</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>heap</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这里</span><span lang=EN-US>heap</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以是私有的，也可以被其他线程共享。应用程序框架生成并安装了一个</span><span lang=EN-US>active scheduler</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，并且为主线程准备了清除栈。如果没有使用框架（如编写</span><span lang=EN-US>exe</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序）那就要手动生成这些了。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作系统专为单线程应用优化，因此强烈推荐使用&#8220;活动对象&#8221;代替多线程。</span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/63766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-10-11 20:34 <a href="http://www.cppblog.com/franksunny/archive/2008/10/11/63766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]活动对象框架原理</title><link>http://www.cppblog.com/franksunny/archive/2008/10/09/63581.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 09 Oct 2008 12:42:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/10/09/63581.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/63581.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/10/09/63581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/63581.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/63581.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;活动对象框架原理&nbsp;一、概述：Symbian OS是一个多任务的操作系统，那么为了实现多任务，同时使系统能够快速响应，高效的进行事件处理，并减轻应用程序员的工作负担（申请大多数耗时的操作（例如文件系统）由服务提供器来完成，服务提供器完成程序员提交的请求后，将会返回给程序员一个成功或失败的信号。），Symbian OS特意引入了活动对象的概念。服务提供器API...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/10/09/63581.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/63581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-10-09 20:42 <a href="http://www.cppblog.com/franksunny/archive/2008/10/09/63581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian上往UI框架应用程序发送消息</title><link>http://www.cppblog.com/franksunny/archive/2008/09/13/61734.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 12 Sep 2008 23:46:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/09/13/61734.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/61734.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/09/13/61734.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/61734.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/61734.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">这种在Symbian C/S架构中，服务器程序与客户UI进程主动通信中用的比较多。<span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于在往</span><span lang=EN-US>UI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架应用程序发送消息，可以通过</span><span lang=EN-US>Symbian OS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>Application Architecture Services</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以进行应用程序间的通信，主要用到的类包括：</span><span lang=EN-US>TApaTaskList</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>TApaTask</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang=EN-US> </span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTaskList</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：用于访问设备中正在运行的任务（假如有些任务隐藏了的话，那么通过这种方法也无法进行访问）。</span><span lang=EN-US> </span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTask</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：表示设备中某个运行的任务，通过与程序关联的窗口组（</span><span lang=EN-US>window group</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）标识。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">具体的解决方案：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发送消息端：使用</span><span lang=EN-US>TApaTaskList</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">找到等待接收消息的任务，</span><span lang=EN-US>TApaTaskList::FindApp()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了两个重载版本，可以使用程序的标题，也可以使用程序的</span><span lang=EN-US>UID</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行查找。获得需要发消息的任务后就可以通过</span><span lang=EN-US>TApaTask:: SendMessage()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发送消息了，它有两个参数，第一个参数用于标识消息，第二个参数是一个描述符的引用，可以用来提供不同消息时附加的具体信息。</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TUid uid( TUid::Uid( 0x<st1:chmetcnv TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="116" UnitName="C" w:st="on">0116C</st1:chmetcnv>9D3 ) );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTaskList taskList( iCoeEnv-&gt;WsSession() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTask task = taskList.FindApp(uid );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>if( task.Exists() ) //</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">判断任务是否正在运行</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>LIT8( KTestMsg, "CustomMessage" );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp; </span>TUid msgUid( TUid::Uid( 1 ) );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>task.SendMessage( uid, KTestMsg );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接收消息端可以使用如下两种方案：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一种方案：由于</span><span lang=EN-US>MCoeMessageObserver</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是处理来自窗口服务器消息的接口类，而</span><span lang=EN-US>CEikAppUi</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经继承自</span><span lang=EN-US>MCoeMessageObserver</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，所以我们只需要在自己的</span><span lang=EN-US>UI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类中重现实现</span><span lang=EN-US>MCoeMessageObserver</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的唯一成员函数</span><span lang=EN-US>HandleMessageL()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用来处理接收到的消息即可，代码如下：</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>MCoeMessageObserver::TMessageResponse CXXXAppUi::HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8&amp; aMessageParameters)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>_LIT( KFormatStr, "%x" );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TBuf&lt;32&gt; bufUid;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TBuf&lt;32&gt; bufPara;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufUid.AppendFormat( KFormatStr, aMessageUid.iUid );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufPara.Copy( aMessageParameters );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iEikonEnv-&gt;InfoWinL( bufUid, bufPara );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>return MCoeMessageObserver::EMessageHandled;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二种方案：由于</span><span lang=EN-US>TApaTask::SendMessage()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发送的消息可以被</span><span lang=EN-US>CEikAppUI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的成员函数</span><span lang=EN-US>ProcessMessageL()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拦截并处理，不过必须在没有重载</span><span lang=EN-US>HandleMessageL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（）函数的前提下，而且函数</span><span lang=EN-US>ProcessMessageL()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只负责拦截消息标识为</span><span lang=EN-US>KUidApaMessageSwitchOpenFileValue</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>KUidApaMessageSwitchCreateFileValue</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的这两个消息，其它标识值的消息不会被传到</span><span lang=EN-US>ProcessMessageL()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，所以这种方案个人觉得很受限制，不自由，还是采用第一种方案好，具体代码代码如下：</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发送</span><span lang=EN-US>:</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TUid uid( TUid::Uid( 0x<st1:chmetcnv TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="116" UnitName="C" w:st="on">0116C</st1:chmetcnv>9D3 ) );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTaskList taskList( iCoeEnv-&gt;WsSession() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>TApaTask task = taskList.FindApp(uid );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>if( task.Exists() ) //</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">判断任务是否正在运行</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>LIT8( KTestMsg, "CustomMessage" );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>//</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里的</span><span lang=EN-US style="COLOR: red">Uid</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能使用自定义的，而且只有系统提供的两个</span><span lang=EN-US style="COLOR: red"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red"><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp; </span>TUid msgUid( TUid::Uid(KUidApaMessageSwitchCreateFileValue) );<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>task.SendMessage( uid, KTestMsg );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接收</span><span lang=EN-US>:</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void CXXXAppUi::ProcessMessageL(TUid aUid,const TDesC8&amp; aParams)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>RFileLogger iLog;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>iLog.Connect();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>iLog.CreateLog(_L("tb"), _L("UpdateListener2.txt"), EFileLoggingModeOverwrite);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>iLog.Write(_L("smms appui"));</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>if (aUid.iUid == KUidApaMessageSwitchCreateFileValue) </span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>TBuf&lt;256&gt; buf;</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>buf.Copy(aParams);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>iLog.Write(aParams);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>BringMeToFront();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ShowCreateFile(buf,CFileMonitorEngine::EImageType);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>else</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>CAknViewAppUi::ProcessMessageL(aUid,aParams);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>iLog.Close();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<br>明天就是中秋了，恭祝大家中秋节快乐
<img src ="http://www.cppblog.com/franksunny/aggbug/61734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-09-13 07:46 <a href="http://www.cppblog.com/franksunny/archive/2008/09/13/61734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[整理]关于vCard和Symbian上的操作</title><link>http://www.cppblog.com/franksunny/archive/2008/09/13/61733.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 12 Sep 2008 23:20:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/09/13/61733.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/61733.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/09/13/61733.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/61733.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/61733.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;关于vCard和Symbian上的操作&nbsp;前阵子关于Symbian通讯录操作的时候曾提到vCard，但是由于当时项目比较紧，所以也没有时间整理，今天特意抽了点时间小试了一下，发现很多手机（我试了下索爱的和诺基亚的）如果选中通讯录中的记录发送联系人或者发送名片之类的操作，就是会以vcf文件格式进行发送。不过手机上的vcf文件通常是用UTF-8编码的，所以虽然可以用ou...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/09/13/61733.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/61733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-09-13 07:20 <a href="http://www.cppblog.com/franksunny/archive/2008/09/13/61733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[整理]Symbian OS平台简体汉字编程编码处理</title><link>http://www.cppblog.com/franksunny/archive/2008/09/10/61526.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 10 Sep 2008 12:11:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/09/10/61526.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/61526.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/09/10/61526.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/61526.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/61526.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Symbian OS平台简体汉字编程编码处理&nbsp;相信大家都在处理symbian中文显示的时候遇到了编码的问题，我现在就给总结一下这种问题的解决方法：字符串编码中文表示常用的有：GB2312,GBK,Unicode,UTF-8其中GBK是GB2312的超集，也就是涵盖了GB2312编码的所有内容；UTF-8是Unicode的在网络传输中的一种编码格式。如果我们使用...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/09/10/61526.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/61526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-09-10 20:11 <a href="http://www.cppblog.com/franksunny/archive/2008/09/10/61526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[整理]Symbian OS中的消息存储与常用操作</title><link>http://www.cppblog.com/franksunny/archive/2008/07/30/57555.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 30 Jul 2008 13:04:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/07/30/57555.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/57555.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/07/30/57555.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/57555.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/57555.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Symbian OS中的消息存储与常用操作说明:本文前面消息的基本知识主要参考《Series60应用程序开发》中的有关内容，后面是前段做MTM开发中用到的代码。一、消息存储基本知识 Symbian OS提供的消息传送架构基于Client/Server机制，服务器负责管理手机上的各种消息，在进行消息相关操作之前我们需要了解Symbian OS是如何组织和存储消息的。 手机中的各种消息...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/07/30/57555.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/57555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-07-30 21:04 <a href="http://www.cppblog.com/franksunny/archive/2008/07/30/57555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian OS应用开发学习笔记之通讯录（电话薄Contacts）</title><link>http://www.cppblog.com/franksunny/archive/2008/06/27/54730.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 27 Jun 2008 00:05:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/06/27/54730.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/54730.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/06/27/54730.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/54730.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/54730.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Symbian OS应用开发学习笔记之通讯录（电话薄Contacts）&nbsp;Symbian OS通讯录模型Symbian OS手机的通讯录采用文件方式存储，用symbian自己的说法就是通讯录数据库。每个Symbian OS手机都有一个默认的通讯录数据库，这个通讯录数据库在2nd和3rd两个版本手机中的位置是不同的，前者是c：\ system\data\Conta...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/06/27/54730.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/54730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-06-27 08:05 <a href="http://www.cppblog.com/franksunny/archive/2008/06/27/54730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何通过EasyDgm发送中文短信(unicode)</title><link>http://www.cppblog.com/franksunny/archive/2008/05/16/50084.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 16 May 2008 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/05/16/50084.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/50084.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/05/16/50084.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/50084.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/50084.html</trackback:ping><description><![CDATA[<h2 style="MARGIN: 13pt 0cm"><font size=5><font color=#000000><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"></span></font></font>&nbsp;</h2>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">EasyDgm</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">是一个用于</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拦截短消息，发送短信的插件代码。用该插件拦截短信没有提示音，发送也不提示用户。但是本身该代码是老外开发的，只是针对</span><span lang=EN-US>8</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位编码的字符，没有根据我们中文的编码来做成完全</span><span lang=EN-US>Unicode</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本的，为此以下改写就是实现</span><span lang=EN-US>Unicode</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字符串的发送。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</span><span lang=EN-US>DatagramService</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工程中的代码，将其内用到的</span><span lang=EN-US>8</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位描述符修改为</span><span lang=EN-US>16</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位，具体修改的描述罗列如下：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt"><span lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改前内容</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C static CDatagram* NewL(TDesC8&amp; aBuf);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C static CDatagram* NewL(const TDesC8&amp; aBuf,const TDesC8&amp; aAddress);<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual const TDesC8&amp; GetData();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void<span style="mso-spacerun: yes">&nbsp; </span>SetDataL(const TDesC8&amp; aData);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void ConstructL(const TDesC8&amp; aBuf);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HBufC8* iData;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改后内容</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C static CDatagram* NewL(TDesC&amp; aBuf);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C static CDatagram* NewL(const TDesC&amp; aBuf, const TDesC8&amp; aAddress);<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual const TDesC&amp; GetData();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IMPORT_C virtual void<span style="mso-spacerun: yes">&nbsp; </span>SetDataL(const TDesC&amp; aData);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void ConstructL(const TDesC&amp; aBuf);</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HBufC* iData;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang=EN-US style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</span><span lang=EN-US>SMSDatagramService</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工程中</span><span lang=EN-US>CSMSSender</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类的代码，将其内用到的</span><span lang=EN-US>8</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位描述符修改为</span><span lang=EN-US>16</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位，具体修改的描述罗列如下：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">修改前</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">void CreateSMSMessageL(const TDesC8&amp; aText, const TDesC8&amp; aAddress);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">void SendSMSL(const TDesC8&amp; aText, const TDesC8&amp; aAddress, TRequestStatus&amp; aStatus);<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">修改后</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">void CreateSMSMessageL(const TDesC&amp; aText, const TDesC8&amp; aAddress);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">void SendSMSL(const TDesC&amp; aText, const TDesC8&amp; aAddress, TRequestStatus&amp; aStatus);<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang=EN-US style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt"><span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</span><span lang=EN-US>SMSDatagramService</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工程中</span><span lang=EN-US>CSMSSender</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类内创建短信的函数</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">CreateSMSMessageL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">内</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，将原来的代码</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt 21pt"><span lang=EN-US>smsSettings.SetAlphabet(TSmsDataCodingScheme::ESmsAlphabet7Bit);</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">改成适合</span><span lang=EN-US>unicode</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的通道值</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt 21pt"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">smsSettings.SetAlphabet(TSmsDataCodingScheme::ESmsAlphabetUCS2);<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang=EN-US style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt"><span style="mso-list: Ignore">4、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">删除原有的</span><span lang=EN-US>def</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，重新为两份工程定稿</span><span lang=EN-US>dll</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这个具体参看如何编写</span><span lang=EN-US>dll</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">以上操作已经将</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">EasyDgm</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">插件修改成适合</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Unicode</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的代码类型了，当然该代码中还有可以进行优化的部分，在这里就不多做赘述。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">具体使用的时候，可以参考</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">S60v3_EasyDgmTest</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的例子，一般都是将里面的两份代码</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">smsdatagramreceiver.cpp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">smsdatagramsender.cpp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">直接拿来用的，但是也要改成</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">16</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">位描述符。<br></span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p><br>考虑到有些网友问我要修改后的EasyDgm代码，先特给出下载地址 <a href="http://www.cppblog.com/Files/franksunny/EasyDgm.rar">http://www.cppblog.com/Files/franksunny/EasyDgm.rar</a></o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/50084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-05-16 20:12 <a href="http://www.cppblog.com/franksunny/archive/2008/05/16/50084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]在Symbian开发环境下如何编写静态接口DLL（动态链接库）</title><link>http://www.cppblog.com/franksunny/archive/2008/05/16/50083.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 16 May 2008 12:10:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/05/16/50083.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/50083.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/05/16/50083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/50083.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/50083.html</trackback:ping><description><![CDATA[<h2 style="MARGIN: 13pt 0cm"><font size=5><font color=#000000><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"></span></font></font>&nbsp;</h2>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Dynamic Link Library</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）是一段特殊的代码，它能够被外部程序在程序运行的时候调用。在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">里面的代码可以同时被许多外部程序共享，而且不会引起手机内存的重复分配。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">根据接口的类型</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">系统支持两种类型的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL:</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">静态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">和多态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">静态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在<span style="COLOR: red">主调程序启动的时候被系统自动载入到手机内存里面</span>（唯一的例外是<span style="COLOR: red">如果该</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">DLL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">是在</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">ROM</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">只读存储器里面，那么可以直接通过它的地址进行调用</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）。并且如果<span style="COLOR: red">没有外部程序使用它</span>了，它将被自动的从内存中<span style="COLOR: red">卸载</span>。静态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在系统内提供了一系列唯一的函数（例如，两个具有相同导出函数的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在系统中也不会混淆）。静态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">具有</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.dll</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件后缀，通常用于在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">系统中实现应用程序引擎（例如，与</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">UI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">无关的代码）。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">多态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL是只带一个单独导出函数的普通DLL，一般都是</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">通过调用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">RLibrary::Load()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">函数才能被载入到内存中，而且在卸载的时候，也最好通过</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">RLibrary::Close()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">函数进行卸载。多个多态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可以为外部程序导出多个相同函数名的函数。所以，这种</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">通常情况下被广泛应用于实现某个应用程序框架功能扩展时候的插件。在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">系统中，多态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可以有多种不同的文件后缀。其中最著名的一个就是</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.app</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">结尾的（应用程序），</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.ldd</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（逻辑设备驱动），</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.tsy</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.csy</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（电话和通信服务模块）等等。。。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在本文中，我们将只关注静态接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">技术，它是你我在开发中最最常用的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">类型。我们将以通用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的继续我们的内容。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">静态接口的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">从</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">调用者的角度来看，</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">有三个文件组成：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）头文件：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的文件后缀，可以</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">#include</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">到主调程序的代码中去，只有在编译</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的时候有用。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）导出文件：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的文件后缀，可以由主调程序进行链接，这个文件记载了</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的提供的所有接口函数名称和地址。（<span style="COLOR: red">在</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">arm</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">版本中应该是</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">dso</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">后缀</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件本身：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.dll</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的文件后缀包括所有</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件记载的接口函数的具体实现，主调函数在运行的时候实际调用和执行的部分。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">从</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">编写者的角度来看，</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可以被看成是一个完整的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Symbian</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">项目。它由以下几部分组成：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）项目自己的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">MMP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件（在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">bld.inf</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件中列出的）</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）一个头文件，指定了该</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">需要导出的接口</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）源代码文件，具体导出函数的实现</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">头文件</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的头文件与其它类的头文件的头文件非常类似。不同的地方在于<span style="COLOR: red">使用了</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">IMPORT_C</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">宏来定义所有导出函数</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">class CMyEngine : public CBase<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">public:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// These functions are visible by the<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// clients of the DLL and needs to have<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// the IMPORT_C tag<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>IMPORT_C static CMyEngine* NewL();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>IMPORT_C static CMyEngine* NewLC();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>IMPORT_C void MyPublicMethod(); <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>IMPORT_C void AnotherPublicMethod();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>...<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">private:<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// These functions are not visible by the<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// clients of the DLL and then do not need<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>// the IMPORT_C tag<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>CMyEngine();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>void ConstructL();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>void SomePrivateMethod(); <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">实现文件</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">编写</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">工作本身没有什么需要复杂的地方，但是有两个重要的地方需要留意：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">E32Dll()</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">函数必须实现</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）<span style="COLOR: red">另外一个特殊的宏，</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">EXPORT_C</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">，应该加在每个导出函数实现的前面</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">例如：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">// This function is mandatory for all DLLs<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">EXPORT_C TInt E32Dll(TDllReason)<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return KErrNone;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">// This function is exported: The EXPORT_C tag shall be used.<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">EXPORT_C void MyPublicMethod()<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>...<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">// This one is not: The EXPORT_C tag shall not be used.<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">void SomePrivateMethod()<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp; </span>// Do Something<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">MMP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">MMP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件应该有以下特点</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）定义项目</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">(project)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的类型是</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">dll<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）使用正确的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">UID2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的值</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">(0x1000008d)<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在开发过程中，你也应该通过</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">EXPORTUNFROZEN</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">告诉编译环境，</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">DLL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">接口还没有定稿，还可以随时修改</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">例如：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">TARGET<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MyEngine.dll<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">TARGETTYPE<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>dll<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">UID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x1000008d <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">...<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">EXPORTUNFROZEN<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">把</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">接口定稿（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Freezing DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">一旦你完成了</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的开发，在你发行你的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">版本之前，应该把接口定稿（</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">Freezing</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）这样可以确定将来发行的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可以向下兼容。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">通过将项目的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">MMP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件中的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">EXPORTUNFROZEN</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">关键字去掉，用常规的方法重新建立</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">，来实现</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">库的定稿。这时候会有&#8220;</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.def</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件不存在&#8221;的编译警告信息出现，不要紧，继续就建立当前项目，在项目编译完毕以后，你可以用如下命令定稿：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">abld freeze [platform]<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">例如</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;</span>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">bldmake<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>bldfiles;<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;</span>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">abld<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>build<span style="mso-spacerun: yes">&nbsp; </span>gcce;<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;</span>3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">abld<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>freeze gcce;<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">注意</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">:<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">这里通常有三个定稿的</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">def</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件夹：在二版本中编译</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">armi</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时，用</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">abld freeze armi</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">产生的是</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">BMARM</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件夹和对应的</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">Def</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">；在三版本中编译</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">gcce</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">和</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">armV5</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时会产生</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">EABI</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件夹和对应的</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">Def</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">；而用</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">wins</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时则编译产生</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">BWINS</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件夹和对应的</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt">Def</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。（个人总结）</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">所有的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">ARM</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">平台共享一个</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.def</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件，但是对于</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">wins</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">模拟器和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">winscw CodeWarrior</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">环境来说，他们有不同的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.def</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">一旦项目已经定稿，重新生成</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">makefile</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">，这时候导入的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">会直接通过定稿的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.def</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件生成。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<br><br>本文很大一块内容属于转载别人的，但是今天发布本文是找不到链接了，个人只是验证了下，为下篇EasyDgm使用做下预备知识 
<img src ="http://www.cppblog.com/franksunny/aggbug/50083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-05-16 20:10 <a href="http://www.cppblog.com/franksunny/archive/2008/05/16/50083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现程序在应用程序菜单中隐藏（hide application from user's menu）</title><link>http://www.cppblog.com/franksunny/archive/2008/05/09/49363.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 09 May 2008 14:48:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/05/09/49363.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/49363.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/05/09/49363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/49363.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/49363.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">实现应用程序的图标隐藏，</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2<sup>nd</sup></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">S60</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">3rd</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">差别很大，相对来说</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">3rd</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">因为有一个</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">[appname]_reg.rss</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件，所以显得很简单，默认的在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">APP_REGISTRATION_INFO</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中有一个属性值：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">BYTE hidden = KAppNotHidden;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">我们要实现图标隐藏，只需将其值赋为</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">KAppIsHidden</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">即可。具体示例代码如下：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">RESOURCE APP_REGISTRATION_INFO<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>app_file="Hello_Hide_app_0xEC<st1:chmetcnv w:st="on" UnitName="F" SourceValue="12" HasSpace="False" Negative="False" NumberType="1" TCSC="0">12F</st1:chmetcnv>4E3";<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>localisable_resource_file =<span style="mso-spacerun: yes">&nbsp; </span>qtn_loc_resource_file_1;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>localisable_resource_id = R_LOCALISABLE_APP_INFO;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">hidden = KAppIsHidden;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>embeddability=KAppNotEmbeddable;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>newfile=KAppDoesNotSupportNewFile;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2nd</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">版本中显得略微复杂些，具体实现如下（本人尚未测试过）：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">I installed the application without name (.app only) or in a folder out of \system\apps\&lt;myapp&gt;\, for example, c:\system\data. In that way the app was not in the list.<o:p></o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/49363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-05-09 22:48 <a href="http://www.cppblog.com/franksunny/archive/2008/05/09/49363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在第三版上实现开机自启动</title><link>http://www.cppblog.com/franksunny/archive/2008/05/09/49365.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 09 May 2008 14:48:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/05/09/49365.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/49365.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/05/09/49365.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/49365.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/49365.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">第二版的开机自启动比较麻烦，需要涉及到创建</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">mdl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件并且需要在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">mdl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中将另一程序开启，所以略过。至于第三版的开机自启动相对来说更加简单些：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">假设你的应用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">ID</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">为：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">ef37946b<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">1)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">data</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">下新建一个文件，</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"> [ef37946b].rss</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">（注意加上</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">[]</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">）文件具体代码如下</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">#include &lt;startupitem.rh&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">RESOURCE STARTUP_ITEM_INFO dispatcher<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>executable_name = "!:\\sys\\bin\\AutoStart.exe"; <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>recovery = EStartupItemExPolicyNone;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">此处的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">AutoStart.exe</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">是你的应用程序文件名。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">注：笔者试图通过修改此处为其他应用程序名从而启动指定其他程序，但是没有成功。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">2)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">mmp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件中增加以下代码</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">START RESOURCE [ef37946b].rss <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">TARGETPATH<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875a</st1:chmetcnv>\import <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">HEADER<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">END<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">确保：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">LANG<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SC<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">CAPABILITY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ReadUserData<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">注意&#8220;</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv>875a\import</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">&#8221;不能够变。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">3)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">pkg</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">文件中增加以下代码</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">"$(EPOCROOT)epoc32\data\z\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875a</st1:chmetcnv>\import[ef37946b].rSC"-"!:\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875a</st1:chmetcnv>\import\[ef<st1:chmetcnv w:st="on" UnitName="a" SourceValue="37946" HasSpace="False" Negative="False" NumberType="1" TCSC="0">37946a</st1:chmetcnv>].rSC"<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">如果是采用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">carbide c++</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">编译，那么使用上述代码就可以了。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">如果是使用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">makesis</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">命令行打包或者使用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt">.Net</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">编译，那么你需要修改成绝对路径，路径名视你的安装目录而定。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">例如：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="mso-bidi-font-size: 10.5pt">"C:\Symbian\9.1\S60_3rd_MR\Epoc32\Data\z\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875a</st1:chmetcnv>\import[ef37946b].rSC"-"!:\private\<st1:chmetcnv w:st="on" UnitName="F" SourceValue="101" HasSpace="False" Negative="False" NumberType="1" TCSC="0">101f</st1:chmetcnv><st1:chmetcnv w:st="on" UnitName="a" SourceValue="875" HasSpace="False" Negative="False" NumberType="1" TCSC="0">875a</st1:chmetcnv>\import\[ef<st1:chmetcnv w:st="on" UnitName="a" SourceValue="37946" HasSpace="False" Negative="False" NumberType="1" TCSC="0">37946a</st1:chmetcnv>].rSC"<o:p></o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/49365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-05-09 22:48 <a href="http://www.cppblog.com/franksunny/archive/2008/05/09/49365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现程序的前后台运行切换</title><link>http://www.cppblog.com/franksunny/archive/2008/05/09/49362.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 09 May 2008 14:45:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/05/09/49362.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/49362.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/05/09/49362.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/49362.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/49362.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先，需要使程序有获知焦点变化的能力。具体通过在</span><span lang=EN-US>AppUI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类中重载</span><span lang=EN-US>CAknAppUi:: HandleForegroundEventL(TBool aForeground )</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数来实现。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其次，在获知焦点变化的同时，改变应用程序的焦点，通过</span><span lang=EN-US>TApaTask::SendToBackground()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>TApaTask::BringToForeground()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两个函数来实现。由于这里用到的</span><span lang=EN-US>TApaTask</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类，需要包含</span><span lang=EN-US>APGTASK.H</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>apgrfx.lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再次，因为需要在调用其上函数时，必须用我们的应用程序的窗口组</span><span lang=EN-US>id(window<span style="mso-spacerun: yes">&nbsp; </span>group<span style="mso-spacerun: yes">&nbsp; </span>id)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化</span><span lang=EN-US>(Initialise) TApaTask</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个对象，这个实现需要用到，获取当前应用程序窗口组</span><span lang=EN-US>id</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的函数</span><span lang=EN-US>CEikonEnv::Static()-&gt;RootWin().Identifier()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。刚好以上函数又要包含</span><span lang=EN-US>w32std.h</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US>w32.lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">具体实现代码如下：</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>void CHelloUIAppUi::HandleForegroundEventL(TBool<span style="mso-spacerun: yes">&nbsp; </span>aForeground)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(aForeground)</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TApaTask task ( CEikonEnv::Static()-&gt;WsSession() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>task.SetWgId( CEikonEnv::Static()-&gt;RootWin().Identifier() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//Foreground run </span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>task.BringToForeground();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ActivateLocalViewL(iHelloUIContainerView-&gt;Id());</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TApaTask task ( CEikonEnv::Static()-&gt;WsSession() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>task.SetWgId( CEikonEnv::Static()-&gt;RootWin().Identifier() );</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//background run </span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>task.SendToBackground();</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class=MsoNormal style="BACKGROUND: #e0e0e0; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/49362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-05-09 22:45 <a href="http://www.cppblog.com/franksunny/archive/2008/05/09/49362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在CarBidesymbian 3rd版本下调试控制台程序</title><link>http://www.cppblog.com/franksunny/archive/2008/03/11/44208.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Tue, 11 Mar 2008 11:57:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2008/03/11/44208.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/44208.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2008/03/11/44208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/44208.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/44208.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;如何在CarBidesymbian 3rd版本下调试控制台程序&nbsp;本人搭建的环境为ActivePerl-5.8.8.822 + jdk1.6.0_04 + Carbide.C++ V1.2 + S60-SDK-200634-3.1(FP1)，至今环境没有发现什么大问题，搭建完调试控制台程序时发现问题——程序编译能通过，但是一旦运行（Run）和调试（Debug）就没有...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/03/11/44208.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/44208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2008-03-11 19:57 <a href="http://www.cppblog.com/franksunny/archive/2008/03/11/44208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>描述符&lt;下&gt;转换</title><link>http://www.cppblog.com/franksunny/archive/2007/11/28/37469.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 28 Nov 2007 14:51:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/11/28/37469.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/37469.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/11/28/37469.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/37469.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/37469.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;描述符&lt;下&gt;转换&nbsp;业余有时候把一个事情当作任务来做的时候，往往会很受限制，就象这篇文档，上次写了个上篇，关于描述符的下篇，自己就迟迟没有勇气和时间写完，好几次都想静下心来好好完成它，但是都未能如愿，可如果不写显然我也不好意思写其它的一些东西，闲话提到这里，花了几天业余时间总算是完成了，该文质量不足之处还望读者您见谅。&nbsp;通过前面关于描述...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2007/11/28/37469.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/37469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-11-28 22:51 <a href="http://www.cppblog.com/franksunny/archive/2007/11/28/37469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>描述符Descriptors&lt;上&gt;概念和使用</title><link>http://www.cppblog.com/franksunny/archive/2007/10/19/34622.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 19 Oct 2007 09:23:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/10/19/34622.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/34622.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/10/19/34622.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/34622.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/34622.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;描述符Descriptors&lt;上&gt;概念和使用&nbsp;接触Symbian已经一个半月多了，自从上个月熟悉了框架之后，一直都不敢再写什么东西了，因为没有经历过代码怎么可能写得出东西呢？起笔犹豫了很久，打算涉足Symbian与标准C++的一个不同点——描述符。希望自己能够借这个机会搞清楚描述符这个东西。&nbsp;一、总介由于手机系统的资源区别于P...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2007/10/19/34622.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/34622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-10-19 17:23 <a href="http://www.cppblog.com/franksunny/archive/2007/10/19/34622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何设置S60模拟器的网络参数</title><link>http://www.cppblog.com/franksunny/archive/2007/09/25/32848.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Tue, 25 Sep 2007 08:21:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/09/25/32848.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/32848.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/09/25/32848.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/32848.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/32848.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">本文并非本人原创，文中红色字体为我新加，原文出处<span lang=EN-US><a href="http://blog.donews.com/sevenworld/archive/2005/10/17/591911.aspx"><u><font color=#800080>http://blog.donews.com/sevenworld/archive/2005/10/17/591911.aspx</font></u></a><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体">如何设置<span lang=EN-US>S60</span>模拟器的网络参数<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在调试使用<span lang=EN-US>Socket</span>进行数据通讯的<span lang=EN-US>Symbian S60</span>程序过程中，需要编写客户端与服务器的数据交互代码，如果<span lang=EN-US>S60</span>的模拟器可以直接访问网络中的服务器程序，调试就会非常方便。<span lang=EN-US>S60</span>的模拟器提供了这些功能，不过需要对网络参数进行一些设置，下面将讨论这一问题。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">首先是网络参数的设置，在<span lang=EN-US>Symbian</span>安装目录的<span lang=EN-US>..\Epoc32\tools</span>目录下有一个网络参数设置程序<span lang=EN-US>network_config.bat</span>，对于不同的开发包，这个名字可能会有一些不同<span lang=EN-US>(</span>可以选择开始菜单下<span lang=EN-US>SDK</span>目录<span lang=EN-US>tools</span>下的<span lang=EN-US>Ethernet Support Configuration)</span>。执行该程序，将显示参数设置界面。其实参数的设置和对局域网中的<span lang=EN-US>PC</span>设置一样，你就把它当成是在设置<span lang=EN-US>PC</span>的网络配置就可以了。分配一个没有使用的<span lang=EN-US>IP</span>（<span style="COLOR: red">注意绝对不能与本机<span lang=EN-US>IP</span>相同</span>），填写好子网掩码，设置好局域网的网关。唯一的不同是要选择所使用的网卡。当你点<span lang=EN-US>OK</span>关闭该设置对话框的时候<span lang=EN-US>(</span>或着点那个<span lang=EN-US>Adapters</span>按钮<span lang=EN-US>)</span>，会显示一个命令行界面，列出了当前机器上可以使用的网卡的信息，你需要输入一个数字选择一个网卡，注意，应该选择你的<span lang=EN-US>PC</span>所使用的那个真实的网卡，也就是标识你机器在局域网内<span lang=EN-US>IP</span>地址的那个网卡。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">按照官方文档来说，这样就可以，但实际上不是所有的机器都可以，我没有测试过，不知道别人的机器如何，反正我使用的机器不可以。后来我在一本书里看到，还需要运行另外一个程序，才可以达到我们的目的。这个程序与上面的设置程序在同一个目录下，叫做<span lang=EN-US>npacketadmin.exe</span>。执行它，会显示一个程序，并跳出一个设置对话框，首先在下拉列表框里选择你刚才选定的那个网卡，然后点击下面的<span lang=EN-US>Start</span>按钮，这样就可以了。这时你就可以使用模拟器调试你的<span lang=EN-US>Symbian S60</span>通讯程序了。（<span style="COLOR: red">我实际测试中发现不用启动<span lang=EN-US>npacketadmin.exe</span>也是可以的</span>）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">测试是否连通的方法是，执行模拟器中的<span lang=EN-US>&#8220;</span>网络<span lang=EN-US>&#8221;</span>应用程序，然后输入一个网址，比如<span lang=EN-US>www.sina.com.cn,</span>如果设置正确，将显示该页面，注意也许是乱码，不过不要紧，因为我们只想知道网络是否已经可用了。（<span style="COLOR: red">强烈建议使用非中文网站做测试，比如<span lang=EN-US>www.google.com</span></span>）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如果以上的过程中，不启动<span lang=EN-US>npacketadmin.exe</span>就不能连接的用户</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，必须注意下面几个问题：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1.</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在调试期间可以关闭<span lang=EN-US>npacketadmin.exe</span>的那个设置对话框，但是不能关闭该程序。如果关闭了，网络将不通。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2.</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如果不小心关闭了该程序，需要重新启动，并重新做上面的第二步的操作。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3.</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">应该在启动模拟器之前就启动该程序，不然模拟器可能会异常退出。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">本人刚开始调试时，犯了以下一些问题：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">首先用<span lang=EN-US>msconfig</span>工具将<span lang=EN-US>S60</span>的<span lang=EN-US>Ethernet Packet Service</span>这个服务停掉了，后来每一次模拟器试图用<span lang=EN-US>Socket</span>连接时都弹出&#8220;<span lang=EN-US>Error</span>：<span lang=EN-US>1058 </span>无法启动服务&#8230;&#8230;&#8221;的报错。该错误在<span lang=EN-US>npacketadmin.exe</span>启动时也会出现。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">其次没有注意<span lang=EN-US>IP</span>的问题，用跟本机同一个<span lang=EN-US>IP</span>，结果怎么连都连不上，后来改成我同事的，害得他一个下午都因为网络上有同名<span lang=EN-US>IP</span>而半天没得上网。</span><span lang=EN-US style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<br><br>另注：最近更换环境时发现，假如主机是通过自动获取ip就可以上网的话，不知道模拟器的ip不设，读者能否实现，我本人试过老是出现&#8220;网关无响应&#8221;提示，所以我觉得原则上还是需要设置ip的，当然前提是主机设了固定IP也能上网，然后模拟器设置一个不同于主机的ip地址 modify 2008.03.17
<img src ="http://www.cppblog.com/franksunny/aggbug/32848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-09-25 16:21 <a href="http://www.cppblog.com/franksunny/archive/2007/09/25/32848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian 应用程序框架浅析</title><link>http://www.cppblog.com/franksunny/archive/2007/09/21/32597.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 20 Sep 2007 22:56:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/09/21/32597.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/32597.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/09/21/32597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/32597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/32597.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">本文档我上传过程中图片没有粘贴上来，为此如果有人感兴趣，请下载word文档，地址是<a href="http://www.cppblog.com/Files/franksunny/Symbian应用程序框架浅析.rar">http://www.cppblog.com/Files/franksunny/Symbian应用程序框架浅析.rar</a>，欢迎大家给我指点。<span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">Symbian </span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">应用程序框架浅析<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p>&nbsp;</o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font face=宋体><span lang=EN-US style="FONT-SIZE: 10.5pt">S60</span><span style="FONT-SIZE: 10.5pt">应用程序的运行依赖于大量的<span lang=EN-US>OS</span>组件，例如屏幕绘图和应用程序数据持久性等，可以直接使用<span lang=EN-US>OS</span>的窗口服务器或者文件服务器即可。<span lang=EN-US><o:p></o:p></span></span></font></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24.1pt; mso-char-indent-count: 2.0"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt"><font face=宋体>应用程序核心框架类<span lang=EN-US><o:p></o:p></span></font></span></strong></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>应用程序框架由一套核心类组成，这些类是所有应用程序框架的基础。这些类封装了应用程序和所需<span lang=EN-US>OS</span>服务器之间的相互作用。<span lang=EN-US><o:p></o:p></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: center; mso-char-indent-count: 2.0" align=center><span style="FONT-SIZE: 10.5pt"><font face=宋体>应用程序核心框架类</font><span lang=EN-US><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><font face=宋体> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></font></v:shapetype><v:shape id=_x0000_i1025 style="WIDTH: 444pt; HEIGHT: 511.5pt" alt="" o:allowoverlap="f" type="#_x0000_t75"><v:imagedata o:href="http://p.blog.csdn.net/images/p_blog_csdn_net/btooth/Symbian应用程序框架类.jpg" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg"></v:imagedata></v:shape><o:p></o:p></span></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>第一层：<span lang=EN-US>CBase</span>和<span lang=EN-US>CActive</span>两个基类，其中<span lang=EN-US>CActive</span>也是派生于<span lang=EN-US>CBase</span>，而<span lang=EN-US>CActive</span>又被第二层的<span lang=EN-US>CConEnv</span>派生<span lang=EN-US><o:p></o:p></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>第二层：包含两个基本组件：<span lang=EN-US>AppArc</span>和<span lang=EN-US>CONE</span>。<span lang=EN-US>AppArc</span>代表<span lang=EN-US>&#8220;</span>应用程序架构<span lang=EN-US>&#8221;</span>，这些类提供了基本的应用程序结构、将系统信息提交到应用程序的机制，以及使用文件服务器持久化数据。其中的类在命名时都带有前缀<span lang=EN-US>&#8220;*Apa&#8221;</span>。<span lang=EN-US>CONE</span>是控制环境的缩写，在这个组件中的类提供用于处理用户输入并创建用户界面的机制－－这些类主要用于和窗口服务器进行交互，其中的类在命名时都带有前缀<span lang=EN-US>&#8220;*Coe&#8221;</span>。<span style="COLOR: red">这一层中的许多类都是抽象类，仅仅定义了一个<span lang=EN-US>API</span>的接口。<span lang=EN-US><o:p></o:p></span></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>第三层：<span lang=EN-US>Uikon</span>组件。这是具有丰富功能、非抽象框架类的一般性设备无关实现，并且提供了一个在所有<span lang=EN-US>symbian OS</span>上公用的<span lang=EN-US>UI</span>库层。一些具体的<span lang=EN-US>UI</span>控件（比如列表框和滚动条等）都可以在该层创建，这些控件有时也被称为<span lang=EN-US>Eikon</span>控件。<span lang=EN-US>UIkon</span>组件中的类在命名时都带有前缀<span lang=EN-US>&#8220;*Eik&#8221;</span>。<span style="COLOR: red">添加了一个公共的<span lang=EN-US>symbian OS</span>实现，和其他<span lang=EN-US>Symbian OS UI</span>平台共享。<span lang=EN-US><o:p></o:p></span></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>第四层：由<span lang=EN-US>Avkon</span>类组成，这些类提供了核心的<span lang=EN-US>S60 UI</span>功能，例如菜单支持。<span lang=EN-US>Avkon</span>控件的类在命名时都带有前缀<span lang=EN-US>&#8220;*Akn&#8221;</span>。<span style="COLOR: red">在框架上添加<span lang=EN-US>S60</span>特有的实现。<span lang=EN-US><o:p></o:p></span></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>第五层：针对应用程序的层，设计自己的应用程序，<span style="COLOR: red">添加自定义应用程序实现。<span lang=EN-US><o:p></o:p></span></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>以上提到的这些类简单来说就是：视图（<span lang=EN-US>View</span>）、文档（<span lang=EN-US>Document</span>）、应用程序（<span lang=EN-US>Application</span>）、应用程序<span lang=EN-US>UI</span>（<span lang=EN-US>Application UI</span>）。那么一个<span lang=EN-US>S60 UI</span>应用程序是如何用这些类来实现其有机程序呢，这个就涉及到一个应用程序框架的初始化问题。<span lang=EN-US><o:p></o:p></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24.1pt; mso-char-indent-count: 2.0"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt"><font face=宋体>应用程序框架初始化<span lang=EN-US><o:p></o:p></span></font></span></strong></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">必须创建下面的每个方法，才能提供最小的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">S60</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">应用程序：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">a</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">&nbsp;</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">框架入口：</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">所有</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">S60 UI</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">都实现一个<span style="COLOR: red">全局函数</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">E32DLL</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">()</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（非</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">UI</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">类的全局入口函数为</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">E32Main</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">），当应用程序启动时，框架将首先调用该函数，该函数也称为</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">入口点，应用程序必须存在该函数。<span style="COLOR: red">每个</span></span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">S60 UI </span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">应用程序都是一个多态</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">DLL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">b</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、新建应用程序实例：</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">让框架调用</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">NewApplication</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">()</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，该函数是由</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">DLL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">导出的唯一函数，负责创建应用程序类的一个实例，并返回它的指针，以后框架使用该指针完成应用程序的创建。这里</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">在堆上创建应用程序实例使用的是&#8220;<span lang=EN>new</span>&#8221;方法而不是<span lang=EN>Symbian OS</span>常见的&#8220;<span lang=EN>new (ELeave)</span>&#8221;方法，这是因为<span lang=EN>TRAP harness(</span>陷阱捕捉<span lang=EN>)</span>这时还没有创立。如果系统不能为新的实例分配内存，那返回的指针就是<span lang=EN>NULL</span>，应用程序框架能够检查到并处理这个问题。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">c</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、返回</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">UID</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">：</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">由框架调用</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">AppDllUid</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">返回应用程序的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">UID</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。该函数必须返回在</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">.mmp</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">文件中指定的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">UID</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">值，该值可用于确定应用程序的实例是否正在运行。</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">如果一个应用程序正在运行，而要启动这个程序的另一个实例，这时该运行的程序就会被切换到前台，而不是重新生成一个。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">d</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、新建文档实例：</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">框架通过框架调用应用程序类实例的</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">CreateDocumentL</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）函数</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">获取指向新创建的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Document</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">类实例的指针。通过文档实例指针，框架就可以调用文档实例的某些功能，同时文档实例也通过调用自身的</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">NewL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">NewLC</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）双重静态构造函数（为什么是双重构造，这跟</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Symbian</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的异常处理机制有关，而之所以<span style="BACKGROUND: silver; mso-highlight: silver">设计成静态函数我现在也还不是很清楚</span>）来创建自己。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">e</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、是否装入文件：框架重新调用</span><span lang=EN-US style="COLOR: red; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">AppDllUid</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">来观察是否要从文件系统中装入一个文件。（<span style="BACKGROUND: silver; mso-highlight: silver">似乎这里跟某些永久存储信息有关，目前项目还没用到这个功能，我也不知道这个该怎么用</span>）</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">f</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">&nbsp;</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">新建</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">AppUi</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">和</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">View</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">实例：</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">框架通过调用文档对象的<span lang=EN style="COLOR: red">CreateAppUiL</span><span style="COLOR: red">（）</span>方法生成了一个<span lang=EN>AppUi</span>实例并获取指向它的指针。此处<span lang=EN>AppUi</span>实例创建自身时使用的是<span lang=EN>C++</span>的默认构造函数并返回实例的指针，之后框架通过这个指针调用<span lang=EN>AppUi</span>实例的<span lang=EN style="COLOR: red">ConstructL</span><span style="COLOR: red">（）</span>函数来完成构造。而在这个<span lang=EN style="COLOR: red">ConstructL</span><span style="COLOR: red">（）</span>函数中首先调用的是<span lang=EN>AppUi</span>基类的<span lang=EN style="COLOR: red">BaseContructL</span><span style="COLOR: red">（）</span>函数，处理了读入与该程序相关的资源的事宜，其次是新建需要加载的<span lang=EN>View</span>类的实例（通过双重构造），如果不止一个<span lang=EN>View</span>的情况下需要调用<span lang=EN style="COLOR: red">AddViewL</span><span style="COLOR: red">（）</span>函数将新建的<span lang=EN>View</span>实例加载进来，最后如果是多个<span lang=EN>View</span>时通过<span lang=EN style="COLOR: red">SetDefaultViewL</span><span style="COLOR: red">（）</span>函数设置缺省的默认视图。如读入一个与该程序相关的资源文件<span lang=EN>AppUi</span>调用了<span lang=EN>AppView</span>类的<span lang=EN>NewL</span>函数来生成其实例，这里也是用的双重构造<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">g</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"> View</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">的重绘：通过以上的创建过程，框架已经拥有了</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">View</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">的无限调度权利，此时如果有</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">一般的<span lang=EN>system</span>事件框架就可以通过窗口服务器调用<span lang=EN>View</span>的<span lang=EN style="COLOR: red">Draw</span><span style="COLOR: red">（）</span>函数，至于这些<span lang=EN>System</span>事件一般指程序启动、应用程序获得焦点或者选项菜单消失等等。在这里需要注意的是编程开发者并不能直接调用<span lang=EN>Draw</span>，它要求在调用前系统的<span lang=EN>graphics context</span>处于激活状态，如果编程开发者希望进行屏幕的重绘，则只能调用<span lang=EN style="COLOR: red">DrawNow</span><span style="COLOR: red">（）</span>方法。还有就是<span lang=EN>Draw</span>函数是不能异常退出的，这是因为该函数能被框架直接调用，而框架是不知道如何处理可能发生的异常的。因此<span lang=EN>Draw</span>自己需要捕捉和处理可能发生的错误。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">h</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">、</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"> </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">处理命令：完成以上步骤后，用户可以通过比如菜单选项之类的交互</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">UI</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">使</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN">框架调用<span lang=EN>HandleCommandL</span>（）函数，并传递一个参数<span lang=EN>aCommand</span>，它指明了用户所选择的命令，<span lang=EN>HandleCommandL</span>（）会据此来判断不同的命令以分别调度执行。在此处还有一个必须注意的地方是如果要程序的<span lang=EN>View</span>实例也回应用户的按键，则必须将<span lang=EN>View</span>实例通过<span lang=EN>AppUi</span>的<span lang=EN>AddToStackL</span>（）函数加入到<span lang=EN>AppUi</span>实例的控件堆栈（<span lang=EN>control stack</span>）中。具体的调用方式实现以按键来解释如下流程所示：<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US><v:shape id=_x0000_i1026 style="WIDTH: 414.75pt; HEIGHT: 119.25pt" type="#_x0000_t75" o:ole=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.emz" o:title=""></v:imagedata></v:shape></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">对于上面的调用方式实现说明，个人觉得有必要再将</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">AppUi</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的几个重要事件处理方法罗列一下：</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleWsEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）用于处理窗口服务器传递的事件，它的作用使框架调用下面这些具体事件处理方法；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandKeyEvent</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）用于处理用户按键事件（此函数在控件堆栈为空时调用，否则框架将会调用</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">OfferKeyEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）函数）；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleForegroundEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）当应用程序切换到前台或从前台切换到后台时调用该函数，默认的实现可以处理键盘焦点的改变；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleSystemEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）用于处理由窗口服务器生成的事件；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleApplicationSpecificEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）用于处理自己定义的自定义事件。默认的实现可以处理颜色方案改变的通知；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleCommandL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）用于处理用户选择的菜单项；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleSwitchOnEventL()</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">用于处理像设备切换之类的特定切换事件；</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleMessageReadyL()</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">用于处理窗口服务器产生的消息事件。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在以上各函数处理事件中，除了第一个</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HandleWsEventL</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">（）函数外，其它函数默认都是纯虚函数，需要重载才能用。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-char-indent-count: 2.0; mso-pagination: widow-orphan" align=left><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">通过以上对应用程序框架初始化步骤后，一个完整的框架就创建完毕了，其具体过程可以由一个图来形象做结。</span><span lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"><span lang=EN style="mso-bidi-font-size: 10.5pt; mso-ansi-language: EN"><a title=Image:lanuch_seq.gif href="http://wiki.forum.nokia.com/index.php/Image:Lanuch_seq.gif"><span style="TEXT-DECORATION: none; text-underline: none"><v:shape id=_x0000_i1027 title=Image:lanuch_seq.gif style="WIDTH: 420pt; HEIGHT: 468pt" alt="Image:lanuch_seq.gif" type="#_x0000_t75" o:button="t"><v:imagedata o:href="http://wiki.forum.nokia.com/images/4/47/Lanuch_seq.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif"></v:imagedata></v:shape></span></a></span><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="FONT-SIZE: 10.5pt"><font face=宋体>本文中参考了网络上的一些文章链接如下：<span lang=EN-US><o:p></o:p></span></font></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font face=宋体><span lang=EN-US style="FONT-SIZE: 10.5pt">Symbian</span><span style="FONT-SIZE: 10.5pt">程序框架研究<span lang=EN-US>http://www.sf.org.cn/Article/lumen/200607/18837.html<o:p></o:p></span></span></font></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font face=宋体><span lang=EN-US style="FONT-SIZE: 10.5pt">Symbian</span><span style="FONT-SIZE: 10.5pt">开发初级手册<span lang=EN-US>http://www.sf.org.cn/Article/lumen/200508/34.html<o:p></o:p></span></span></font></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<img src ="http://www.cppblog.com/franksunny/aggbug/32597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-09-21 06:56 <a href="http://www.cppblog.com/franksunny/archive/2007/09/21/32597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian 资源文件解析</title><link>http://www.cppblog.com/franksunny/archive/2007/09/19/32484.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 19 Sep 2007 09:30:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/09/19/32484.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/32484.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/09/19/32484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/32484.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/32484.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Symbian 资源文件解析&nbsp;一、何为资源文件：在symbian应用程序中，资源文件指的是后缀名为.rss的文件，每个应用程序至少要有一个与之关联的资源文件。资源编译器rcomp编译资源文件后，生成一个.rsc二进制文件和一个相伴的头文件（.rsg）。这样在应用程序框架启动应用程序时，会打开这个二进制文件，借助在.rsg文件中创建的资源标志符，根据需要把各个资...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2007/09/19/32484.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/32484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-09-19 17:30 <a href="http://www.cppblog.com/franksunny/archive/2007/09/19/32484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian编程起步</title><link>http://www.cppblog.com/franksunny/archive/2007/09/19/32483.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 19 Sep 2007 09:27:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2007/09/19/32483.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/32483.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2007/09/19/32483.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/32483.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/32483.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 该文档在网上比较多见，我只是找来结合自己的安装做了些增补，增补以红色字体示出第一章&nbsp;&nbsp; &nbsp; 环境搭建&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbian是Nokia公司开发的一款智能手机操作系统。Nokia根据手机的屏幕大小和价格高低把手机分成了多...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2007/09/19/32483.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/32483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/franksunny/" target="_blank">frank.sunny</a> 2007-09-19 17:27 <a href="http://www.cppblog.com/franksunny/archive/2007/09/19/32483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>