﻿<?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>Mon, 28 Mar 2011 12:56:50 GMT</lastBuildDate><pubDate>Mon, 28 Mar 2011 12:56:50 GMT</pubDate><ttl>60</ttl><item><title>SYMBIAN程序动态加载TTF字体使用小结</title><link>http://www.cppblog.com/franksunny/archive/2011/02/21/140287.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Mon, 21 Feb 2011 02:28:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2011/02/21/140287.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/140287.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2011/02/21/140287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/140287.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/140287.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Symbian S60平台上动态加载ttf字体&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2011/02/21/140287.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/140287.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> 2011-02-21 10:28 <a href="http://www.cppblog.com/franksunny/archive/2011/02/21/140287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在S60非UI框架程序中弹提示信息</title><link>http://www.cppblog.com/franksunny/archive/2010/12/17/136802.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 17 Dec 2010 13:26:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/12/17/136802.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/136802.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/12/17/136802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/136802.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/136802.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;完整文档下载地址<a href="http://www.cppblog.com/Files/franksunny/RNotifier.7z">http://www.cppblog.com/Files/franksunny/RNotifier.7z</a></o:p></span></p>
<h2 style="MARGIN: 13pt 0cm"><font  color="#000000" face="黑体"><span  style="font-size: x-large;"><h2 align="center" style="text-align:center"><span style="font-family:黑体;
mso-ascii-font-family:Arial;mso-hansi-font-family:Arial">如何在</span><span lang="EN-US">S60</span><span style="font-family:黑体;mso-ascii-font-family:Arial;
mso-hansi-font-family:Arial">非</span><span lang="EN-US">UI</span><span style="font-family:黑体;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial">框架程序中弹提示信息</span></h2></span></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">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">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">CCoeControl</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">CCoeControl</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生存的</span><span lang="EN-US">CCoeEnv</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境，当然不嫌繁琐，在程序的</span><span lang="EN-US">main</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中像自己创建活动规划器一样去创建</span><span lang="EN-US">CCoeEnv</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境也是一个可行的方法，但是这超出本文的涉及范围，本文提出的是不创建</span><span lang="EN-US">CCoeEnv</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境情况下，通过</span><span lang="EN-US">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或</span><span lang="EN-US">RNotifier</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"><font size="5"><span lang="EN-US">RNotifier</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-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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US">RFs</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一样都是派生自</span><span lang="EN-US">RSessionBase</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"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RNotifier vNotifier;</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>User::LeaveIfError(vNotifier.Connect());</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>CleanupClosePushL(vNotifier);</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>//title and context</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>TBuf&lt;256&gt; title;</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>TBuf&lt;256&gt; context;</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>title.Copy(_L("info"));</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>context.Copy(_L("data"));</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>// Button text</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>_LIT(KYesButton, "Yes");</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>_LIT(KNoButton, "No");</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>// Display the dialog</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>TInt button;</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>TRequestStatus status;</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>vNotifier.Notify(title, context, KYesButton, KNoButton, button, status);</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>User::WaitForRequest(status);</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>// destroy notifier</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::PopAndDestroy();</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"><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><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:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape style="WIDTH: 306.75pt; HEIGHT: 130.5pt" id="_x0000_i1025" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\Temp\msohtml1\01\clip_image001.png"></v:imagedata></v:shape></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本身和</span><span lang="EN-US">RFs</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">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">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">RNotifier</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"><font size="5"><span lang="EN-US">RNotify</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-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">RNotifier</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">CAknGlobal*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US">RAknKeyLock</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">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">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">CAknGlobalConfirmationQuery</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来说明下吧，在源代码</span><span lang="EN-US">sf\mw\classicui\uifw\AvKon\notifsrc</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">路径下面有多个类似类的源代码。其实</span><span lang="EN-US">CAknGlobalConfirmationQuery</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">除了二阶段构造外，最主要的就是</span><span lang="EN-US">ShowConfirmationQueryL</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">UpdateConfirmationQuery</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">CancelConfirmationQuery</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"><span style="mso-spacerun: yes">&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-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>* Shows global Confirmation query synchronously</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;&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-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aStatus<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TRequestStatus which will be completed when user</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;&nbsp;&nbsp;&nbsp; </span>*<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>selects one item from the list query.</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;&nbsp;&nbsp;&nbsp; </span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aPrompt<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Prompt text</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;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aSoftkeys<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Softkey resource </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;&nbsp;&nbsp;&nbsp; </span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aAnimation<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Animation resource</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;&nbsp;&nbsp;&nbsp; </span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aTone<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Tone id</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;&nbsp;&nbsp;&nbsp; </span>* @param<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>aDismissWithAllKeys If set ETrue the query gets dismissed with all</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;&nbsp;&nbsp;&nbsp; </span>*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><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>keypresses</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;&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">EXPORT_C void CAknGlobalConfirmationQuery::ShowConfirmationQueryL( </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; </span>TRequestStatus&amp; aStatus,</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; </span>const TDesC&amp; aPrompt,</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; </span>TInt aSoftkeys,</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; </span>TInt aAnimation,</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; </span>const TDesC&amp; aImageFile,</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; </span>TInt aImageId,</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; </span>TInt aImageMaskId,</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; </span>CAknQueryDialog::TTone aTone,</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; </span>TBool aDismissWithAllKeys )</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;&nbsp;&nbsp; </span>delete iBuffer;</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; </span>iBuffer = 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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iBuffer = CBufFlat::NewL(KBufferGranularity);</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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>RBufWriteStream bufStream;</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; </span>bufStream.Open(*iBuffer);</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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>CleanupClosePushL(bufStream);</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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="32" unitname="l">32L</st1:chmetcnv>(KAKNNOTIFIERSIGNATURE);</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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>if ( aDismissWithAllKeys )</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; </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;&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8" unitname="l">8L</st1:chmetcnv>( ETrue );</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; </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; </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-spacerun: yes">&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-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8" unitname="l">8L</st1:chmetcnv>( EFalse );</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; </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"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="32" unitname="l">32L</st1:chmetcnv>(aSoftkeys);</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="32" unitname="l">32L</st1:chmetcnv>(aAnimation);</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="l">16L</st1:chmetcnv>(aImageId);</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="l">16L</st1:chmetcnv>(aImageMaskId);</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="l">16L</st1:chmetcnv>(aTone);</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="l">16L</st1:chmetcnv>(aPrompt.Length());</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; </span>bufStream &lt;&lt; aPrompt;</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; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="16" unitname="l">16L</st1:chmetcnv>(aImageFile.Length());</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; </span>if (aImageFile.Length())</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; </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;&nbsp;&nbsp;&nbsp; </span>bufStream &lt;&lt; aImageFile;</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; </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 style="COLOR: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="32" unitname="l">32L</st1:chmetcnv>(iSkinsMajorId);<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="32" unitname="l">32L</st1:chmetcnv>(iSkinsMinorId); <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: green" 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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>if (iAknSDData)<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8" unitname="l">8L</st1:chmetcnv>(ETrue);<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bufStream &lt;&lt; *iAknSDData;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>else <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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bufStream.WriteInt<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8" unitname="l">8L</st1:chmetcnv>(EFalse);<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><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: green" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}<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"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>iBufferPtr.Set(iBuffer-&gt;Ptr(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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">iNotify.StartNotifierAndGetResponse(aStatus, KAknGlobalConfirmationQueryUid,<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 style="COLOR: red" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>iBufferPtr, iResultBuf);<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"><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>CleanupStack::PopAndDestroy();<span style="mso-spacerun: yes">&nbsp; </span>// bufStream</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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US">StartNotifierAndGetResponse</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">EXPORT_C void CAknGlobalConfirmationQuery::UpdateConfirmationQuery( TInt aSoftkeys )</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;&nbsp;&nbsp; </span>iSoftkeys = aSoftkeys;</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; </span>iCmd = EAknUpdateGlobalQuery;</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; </span>TPckgBuf&lt;SAknNotifierPackage&lt;SAknGlobalMsgQueryParams&gt; &gt; pckg;</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; </span>pckg().iParamData.iCmd = iCmd;</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; </span>pckg().iParamData.iSoftkeys = iSoftkeys;</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-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>TPckgBuf&lt;TInt&gt; ret;</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; </span><span style="COLOR: red">iNotify.UpdateNotifier( KAknGlobalConfirmationQueryUid, pckg, ret);<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></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">RNotifier::UpdateNotifier</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">EXPORT_C void CAknGlobalConfirmationQuery::CancelConfirmationQuery()</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;&nbsp;&nbsp; </span>if (iBuffer)</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; </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;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: red">iNotify.CancelNotifier(KAknGlobalConfirmationQueryUid);<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-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>delete iBuffer;</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;&nbsp;&nbsp;&nbsp; </span>iBuffer = 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-spacerun: yes">&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; 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">RNotifier::CancelNotifier</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"><font size="5"><span lang="EN-US">RNotifier</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-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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类的使用了解了，但是这个</span><span lang="EN-US">RNotifier</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">RNotifier</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">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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US">RFs</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一样派生自</span><span lang="EN-US">RSessionBase</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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的源代码实现位于</span><span lang="EN-US">sf\os\kernelhwsrv\kernel\eka\euser\us_ksvr.cpp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这个代码中还有</span><span lang="EN-US">RChunk</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">RDevice</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US">RHandleBase</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">RNotifier</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的服务器类</span><span lang="EN-US">CNotifierServer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和服务器会话通道类</span><span lang="EN-US">CNotifierSession</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以及相关的其他类则位于</span><span lang="EN-US">sf\os\kernelhwsrv\kernel\eka\ewsrv\ws_main.cpp</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中。这些类的声明则位于</span><span lang="EN-US">sf\os\kernelhwsrv\kernel\eka\include\twintnotifier.h</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">RConsole</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类，这个类的声明位于</span><span lang="EN-US">sf\os\kernelhwsrv\kernel\eka\include\e32twin.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">sf\os\kernelhwsrv\kernel\eka\ewsrv\co_cli.cpp</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/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">Client</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US">Server</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span lang="EN-US">CWsServer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其通道为</span><span lang="EN-US">CWsSession</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US">CWsSession</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">内最主要的类是</span><span lang="EN-US">CWsWindow</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这几个类的声明位于</span><span lang="EN-US">sf\os\kernelhwsrv\kernel\eka\include\ws_std.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">sf\os\kernelhwsrv\kernel\eka\ewsrv\ws_main.cp</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 class="MsoNormal" style="text-indent:21.0pt;mso-char-indent-count:2.0"><font  face="宋体"><p class="MsoNormal" style="text-indent:21.0pt;mso-char-indent-count:2.0"><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">欢迎对其有更深入挖掘的同学能够发布新的小结</span><span lang="EN-US">,</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">到时记得分享到我的邮箱</span><span lang="EN-US">frank.sunny@163.com</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">，当然假如我文中有什么错误也希望能够告知我一下</span><span lang="EN-US">,</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">谢谢。</span></p></font></p><p>&#160;</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/136802.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-12-17 21:26 <a href="http://www.cppblog.com/franksunny/archive/2010/12/17/136802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于监控摄像头拍照与摄像</title><link>http://www.cppblog.com/franksunny/archive/2010/12/10/136093.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 10 Dec 2010 11:58:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/12/10/136093.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/136093.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/12/10/136093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/136093.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/136093.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></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>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>wiki</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><a href="http://wiki.forum.nokia.com/index.php/%E6%A3%80%E6%B5%8B%E5%86%85%E7%BD%AE%E7%9B%B8%E6%9C%BA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%96%B0%E6%8B%8D%E6%91%84%E7%9A%84%E7%85%A7%E7%89%87%E5%92%8C%E8%A7%86%E9%A2%91%E7%89%87%E6%AE%B5"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><span lang=EN-US><u><font color=#800080>检测内置相机应用程序新拍摄的照片和视频片段</font></u></span></span></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></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>Publish&amp;Subscribe</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/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>RMsgQue</span><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>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>RProcess::SetParameter</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能在进程间实时的传输消息，只能是开启进程时传递一些信息（比如同步用的信号量等）。这次总算是接触了下</span><span lang=EN-US>PS</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>SDK</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>Publish &amp; Subscribe is a new API provided by the real-time kernel (EKA2). It allows publisher processes to define and update a set of properties; other processes, called subscribers, can listen for changes to a property, and get property values. The process that defines a property can specify access rights for both reading and writing. Rights can be defined in terms of either requiring a particular security capability, by a process SID, or by a process VID. Publish &amp; Subscribe replaces System Agent and the usage of temporary Shared Data keys.</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>
<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>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>UID3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，否则会报</span><span lang=EN-US>-46</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>RProperty::Define(KPSUidCameraCfg, KCameraCfgModify, RProperty::EInt);</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class=MsoNormal><span lang=EN-US>KPSUidCameraCfg</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">必须是你发布程序的</span><span lang=EN-US>UID3</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 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>KCameraCfgModify</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-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>Subscribe</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>iProperty.Attach(KPSUidCameraCfg, KCameraCfgModify);<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>iProperty.Subscribe(iStatus); <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>SetActive(); // Tell scheduler a request is active</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>
<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>RProperty</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>RProperty::Set(KPSUidCameraCfg, KCameraCfgModify, 1 );</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-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>RProperty</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>RProperty::Get(KPSUidCameraCfg, KCameraCfgModify, val);</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-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>RProperty</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>RProperty::Delete(KPSUidCameraCfg, KCameraCfgModify);</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>PS</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>
<img src ="http://www.cppblog.com/franksunny/aggbug/136093.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-12-10 19:58 <a href="http://www.cppblog.com/franksunny/archive/2010/12/10/136093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian 摄像头编程预研</title><link>http://www.cppblog.com/franksunny/archive/2010/11/03/132293.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 03 Nov 2010 06:55:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/11/03/132293.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/132293.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/11/03/132293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/132293.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/132293.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;文档中涉及到贴图，懒得搞，就附带一份word文档吧，需要的可以下下 http://www.cppblog.com/Files/franksunny/camera.rar摄像头编程预研目前使用摄像头编程，网上用的最多的都是直接调用手机自带的照相/摄像程序来完成，不过使用这种方式，可控性就显得弱一些，为此近期对直接使用ECAM API进行了下简单预研。照相流程因为本次预研主...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2010/11/03/132293.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/132293.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-11-03 14:55 <a href="http://www.cppblog.com/franksunny/archive/2010/11/03/132293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取手机短信和彩信号码的方法</title><link>http://www.cppblog.com/franksunny/archive/2010/09/25/127638.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Sat, 25 Sep 2010 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/franksunny/archive/2010/09/25/127638.html</guid><wfw:comment>http://www.cppblog.com/franksunny/comments/127638.html</wfw:comment><comments>http://www.cppblog.com/franksunny/archive/2010/09/25/127638.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/franksunny/comments/commentRss/127638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/franksunny/services/trackbacks/127638.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;获取手机短信和彩信号码的方法短信号码的提取之前写了一篇Symbian端彩信读取初探，将过多的期望放在了未知的CMmsHeaders上面，最近需要将系统收件箱、发件箱和草稿箱内部的数据统统备份出来，突然遇到瓶颈了。最后问题得以解决之后发现其实系统已经提供了丰富的API，以下就是罗列了一种获取系统收件箱、发件箱和草稿箱里面短信和彩信号码的方法。我们先看一段短信读取号码的代码...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2010/09/25/127638.html'>阅读全文</a><img src ="http://www.cppblog.com/franksunny/aggbug/127638.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-09-25 17:44 <a href="http://www.cppblog.com/franksunny/archive/2010/09/25/127638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本贴以后做为一些小问题的解决方案帖，遇到问题能够通过网络简单解决的问题会不定期的来这里更新下，给自己和有同样问题的人留个Mark&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2010/05/14/115393.html'>阅读全文</a><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>2</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[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;DLL（Dynamic Link Library）是一段特殊的代码，它能够被外部程序在程序运行的时候调用。在DLL里面的代码可以同时被许多外部程序共享，而且不会引起手机内存的重复分配。&nbsp;DLL根据接口的类型Symbian系统支持两种类型的DLL:静态接口DLL和多态接口DLL静态接口DLL在主调程序启动的时候被系统自动载入到手机内存里面（唯一的例外是如果该DL...&nbsp;&nbsp;<a href='http://www.cppblog.com/franksunny/archive/2008/05/16/50083.html'>阅读全文</a><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>15</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></channel></rss>