﻿<?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++博客-编程自动化-随笔分类-symbian开发</title><link>http://www.cppblog.com/AutomateProgram/category/13132.html</link><description>当音乐和传说在深夜中沉寂后，程序的每个字符还在跳动！</description><language>zh-cn</language><lastBuildDate>Thu, 10 Jun 2010 17:35:29 GMT</lastBuildDate><pubDate>Thu, 10 Jun 2010 17:35:29 GMT</pubDate><ttl>60</ttl><item><title>诺基亚的使用口令</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/06/09/117447.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 09 Jun 2010 00:55:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/06/09/117447.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/117447.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/06/09/117447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/117447.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/117447.html</trackback:ping><description><![CDATA[<p><font face=楷体_GB2312>在待机情况下按：</font><wbr><br><font face=楷体_GB2312>一、米井06井，是查手机的序列号！</font><wbr><br><font face=楷体_GB2312>二、米井0000井，查看手机的版本、出厂日期和手机型号！</font><wbr><br><font face=楷体_GB2312>三、米井92702689井，查看手机的总计时器，要买全新手机的就可以用这个，如果没有用过的就显示000000：00 ！</font><wbr><br><font face=楷体_GB2312>四、米井2820井，查看蓝牙蕊片地址！</font><wbr></p>
<p><font face=楷体_GB2312>五、米井7780井、也是恢复原厂设置，《此不同于软格式机，恢复后不会将C盘文件清空，手机经常死机、反应慢就可以用这个》.</font><wbr><br><font face=楷体_GB2312>六、硬格式化手机，先将手机关机，然后按：拨号键、米键、3号键，三个键同时按住不放，然后开机，直到屏幕显示选择地区再放！硬格式会将C盘内所有的东西清掉，使手机反应更快！</font></p>
<p><font face=楷体_GB2312>七、诺基亚的初始化密码为：12345.</font><wbr><br><font face=楷体_GB2312>八、如果你的手机被偷了，可以打诺基亚公司的电话，将你的手机序列号报给他，公司会帮你锁闭你的手机，这样小偷偷到你的手机也就一点用处也没有了，成了废品！这些功能只有诺基亚的手机才可以用！</font><wbr><br><font face=楷体_GB2312>九、米井7370925538井、可以使电子钱包密码初始化，这时重设密码就可以了！</font><wbr><br><font face=楷体_GB2312>十、米3370井、开启EFR ，增强型全速率编码功能，井3370井、则关闭！</font><wbr><br><font face=楷体_GB2312>十一、米4720井，开启HR增强型半速率编码功能、米4720井,则关闭！</font><wbr><br><font face=楷体_GB2312>十二、米米21米999999井，拨号，设置呼叫转移空号（即限制），井002井，解除！</font><wbr>&nbsp;&nbsp;</p>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/117447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-06-09 08:55 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/06/09/117447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian显示图片</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/04/01/111244.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Thu, 01 Apr 2010 01:21:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/04/01/111244.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/111244.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/04/01/111244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/111244.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/111244.html</trackback:ping><description><![CDATA[A.创建mbg文件<br><br>拷贝hellobm.bmp文件到group目录下，<br>.mmp中在sources中添加group下hellobm.bmp<br>重新生成工程就可以在group文件夹下看到include目录下可以看到Myhelloworldbasic.mbg文件，有枚举<br>enum TMbmMyhelloworldbasic<br>&nbsp;{<br>&nbsp;EMbmMyhelloworldbasicHellobm<br>&nbsp;};<br><br>&nbsp;//绘制图片<br>&nbsp;&nbsp;&nbsp; _LIT (KImagesFilename,"<a href="file://resource//Apps//Myhelloworldbasic.mbm">\\resource\\Apps\\Myhelloworldbasic.mbm</a>");<br>&nbsp;&nbsp;&nbsp; TFindFile bitFile(CCoeEnv::Static()-&gt;FsSession());<br>&nbsp;&nbsp;&nbsp; CFbsBitmap*&nbsp;&nbsp; iBitmap&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; (ELeave)CFbsBitmap;<br>&nbsp;if(KErrNone == bitFile.FindByDir(KImagesFilename, KNullDesC))<br>&nbsp;&nbsp;{<br>&nbsp;TInt err = iBitmap-&gt;Load(bitFile.File(),0);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; if(iBitmap)<br>&nbsp;&nbsp;&nbsp; &nbsp;if(iBitmap-&gt;Handle())<br>&nbsp;&nbsp;&nbsp; &nbsp;gc.BitBlt(TPoint(60,100),iBitmap);<br>&nbsp;&nbsp;&nbsp; delete iBitmap;<br><br>添加资源<br>在.pkg中添加<br>"..\..\..\..\epoc32\data\z\resource\apps\Myhelloworldbasic.mbm" -"!:\resource\apps\Myhelloworldbasic.mbm"<br>这样就绘制图片了。<br>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/111244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-04-01 09:21 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/04/01/111244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian显示中文</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/31/111166.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 31 Mar 2010 07:11:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/31/111166.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/111166.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/31/111166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/111166.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/111166.html</trackback:ping><description><![CDATA[参考：<span  style="color: rgb(68, 68, 51); font-family: Arial, Helvetica, sans-serif, 宋体; font-size: 12px; "><span style="word-wrap: break-word; font-size: 1.1em; "><a href="http://sw.nokia.com/id/ba05733d-bc27-4080-94fd-777ea27aadf8/S60_Platform_Chinese_Display_Example_v2_1_en.zip" style="color: rgb(69, 149, 71); text-decoration: none; ">S60_Platform_Chinese_Display_Example_v2_1_en.zip&nbsp;</a></span></span><div><span  style="color: rgb(68, 68, 51); font-family: Arial, Helvetica, sans-serif, 宋体; font-size: 12px; "><div>头文件：#include &lt;charconv.h&gt;</div><div>库：charconv.lib</div><div>CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();</div><div>&nbsp;&nbsp; &nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TBool chineseLanguageSupported = EFalse;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>if( converter-&gt;PrepareToConvertToOrFromL( KCharacterSetIdentifierGbk,</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>iEikonEnv-&gt;FsSession()) == CCnvCharacterSetConverter::EAvailable )</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>chineseLanguageSupported = ETrue;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>else if ( converter-&gt;PrepareToConvertToOrFromL( KCharacterSetIdentifierGb2312,</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>iEikonEnv-&gt;FsSession() ) == CCnvCharacterSetConverter::EAvailable )</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>chineseLanguageSupported = ETrue;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>HBufC* iInfoText;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>// The following string is "Nokia" in simplified Chinese</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TText8 &nbsp;*str = (TText8*)"这是一个最好的时代！";</div><div>&nbsp;&nbsp; &nbsp;TInt state=CCnvCharacterSetConverter::KStateDefault;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TPtrC8 source( str );</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>iInfoText = HBufC::NewL( source.Length() );</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TPtr16 ptr = iInfoText-&gt;Des();</div><div>&nbsp;&nbsp; &nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>if( chineseLanguageSupported )</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>TRAP_IGNORE( converter-&gt;ConvertToUnicode( ptr, source, state ) )</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><br></div><div>&nbsp;&nbsp; &nbsp;gc.UseFont(iFont);</div><div>&nbsp;&nbsp; &nbsp;gc.DrawText(iInfoText-&gt;Des(), rect, Rect().Height()/2, CGraphicsContext::ECenter );</div><div>&nbsp;&nbsp; &nbsp;gc.DiscardFont();</div><div>&nbsp;&nbsp; &nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>CleanupStack::PopAndDestroy(); &nbsp;// converter</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>delete iInfoText;</div></span></div><img src ="http://www.cppblog.com/AutomateProgram/aggbug/111166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-31 15:11 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/31/111166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian基本类总结</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/29/110840.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Mon, 29 Mar 2010 05:23:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/29/110840.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/110840.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/29/110840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/110840.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/110840.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: Verdana; FONT-SIZE: 10pt">原文地址：<a href="http://www.cnblogs.com/jason-jiang/archive/2006/11/03/549244.html">http://www.cnblogs.com/jason-jiang/archive/2006/11/03/549244.html</a><br>symbian基本类总结<br><br>类总结：<br>四大天王：CaknApplication，CeikDocument，CAknAppUi，CAknView<br><br>void CAknAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )<br><br>在显示menu pane之前调用，主要是用来初始化菜单显示的具体项目。<br><br>aResourceId 是资源的具体ID，如R_SMS_MENU。<br><br>aMenuPane 通过调用aMenuPane-&gt;SetItemDimmed（菜单项目资源ID，EFalse）；来显示或隐藏该菜单选项。注意：Etrue为隐藏。<br><br>1、话框类：CEikDialog&nbsp;&nbsp; （OK/CANCEL）<br>主要成员函数有：<br><br>void PreLayoutDynInitL();//处理在对话框出现之前的初始化动作<br><br>TBool OkToExitL( TInt aButtonId );//对OK按的处理<br><br>Void HandleControlStateChangL(Tint aControlId);//监听对话框上控件改动，有点类似与Appui类的void CAknAppUi::HandleCommandL(TInt aCommand)。<br><br>//构造方式：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;CMmssSendDialog* iSendDialog = new ( ELeave ) CMmssSendDialog;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iSendDialog-&gt;SetMopParent( this );<br><br>&nbsp;&nbsp;&nbsp;&nbsp;iSendDialog-&gt;ExecuteLD( R_MMSSEND_DIALOG );<br><br>//-------------------------------定义一个对话框资源---------------------------<br><br><br><br>RESOURCE DIALOG r_mmssend_dialog<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;flags =&nbsp;&nbsp; EEikDialogFlagNoDrag |&nbsp;&nbsp;&nbsp;&nbsp;// 无法拖曳<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EEikDialogFlagNoTitleBar |&nbsp;&nbsp;//无标题栏<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EEikDialogFlagFillAppClientRect | //将应用程序客户区填满<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EEikDialogFlagCbaButtons |&nbsp;&nbsp;//使用CBA按钮<br><br>EEikDialogFlagModeless;&nbsp;&nbsp; //不接受按钮事件<br><br>//以上可以参见SDK&nbsp;&nbsp;：Developer Library ? API Reference ? C++ API reference ? UIKLAFGT<br><br>&nbsp;&nbsp;&nbsp;&nbsp;buttons = R_AVKON_SOFTKEYS_OPTIONS_EXIT;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;form = r_mmssend_form;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br><br>// ---------------------------------------------------------<br><br>//默认的单行显示模式<br><br>&nbsp;&nbsp; <br>// ---------------------------------------------------------<br><br>//可以设置为double行显示<br><br><br>RESOURCE FORM r_mmssend_form<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;flags = EEikFormEditModeOnly | <br><br>EEikFormUseDoubleSpacedFormat;<br><br>//Specify a style of form optionally. The default setting is single line display.<br>//1、EEikFormUseDoubleSpacedFormat : Double line display.<br>//2、EEikFormHideEmptyFields : To make empty data fields Invisible.<br>//3、EEikFormShowBitmaps : To display a bitmap on a label.<br>//4、EEikFormEditModeOnly : To display the form in edit mode only.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;items =<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DLG_LINE<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>type = EEikCtEdwin;&nbsp;&nbsp;&nbsp;&nbsp;//是一个编辑文本框 Editor window<br><br>//实际上这个是枚举类型，可参看SDK：<br><br>//Developer Library ? API Reference ? C++ API reference ? UIKLAFGT ? UIKLAFGT Resource Constants ? TEikStockControls<br><br>&nbsp;&nbsp;&nbsp;&nbsp;prompt = qtn_mmssend_recipient_prompt;// 这个控件的label显示的字符串<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id = EMmsRecipientEditor;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;control = EDWIN<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width = qtn_mmssend_recipient_width;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlength = qtn_mmssend_recipient_maxlenght;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_input_mode = EAknEditorNumericInputMode;//数字输入模式<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>},<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DLG_LINE<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type = EEikCtEdwin;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prompt = qtn_mmssend_subject_prompt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id = EMmsSubjectEditor;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;control = EDWIN<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width = qtn_mmssend_subject_width;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlength = qtn_mmssend_subject_maxlenght;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_input_mode = EAknEditorTextInputMode;//文本输入模式<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>2、周期类：<br>1、Cperiodic<br>==================================================================<br><br>CPeriodic* iPeriodicTimer;<br><br>iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard );//这条语句一般在ConstructL()中<br><br>void CGraphicsAppView::StartTimer()//开始启动时钟<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;if ( !iPeriodicTimer-&gt;IsActive() )<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{iPeriodicTimer-&gt;Start( 1, 1, <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCallBack( CGraphicsAppView::Period, this ) );//TcallBack是一个方法回调函数，从使用来看，他只能回调类中的静态方法。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>TInt CGraphicsAppView::Period( TAny* aPtr )//周期启动函数，注意，这是个静态函数，但static只在头文件中才做了申明。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;( static_cast&lt;CGraphicsAppView*&gt;( aPtr ) )-&gt;DoPeriodTask();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;return ETrue;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>void CGraphicsAppView::DoPeriodTask()//周期真正在做的事情<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;// Update the screen<br><br>&nbsp;&nbsp;&nbsp;&nbsp;CWindowGc&amp; gc = SystemGc();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;gc.Activate( *DrawableWindow() );//如果要求清屏操作。增加gc.Clear();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;UpdateDisplay();///////////////////这个函数是周期需要实现的东西<br><br>&nbsp;&nbsp;&nbsp;&nbsp;gc.Deactivate();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>void CGraphicsAppView::StopTiem()//停止时钟<br><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;if ( iPeriodicTimer-&gt;IsActive() )<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iPeriodicTimer-&gt;Cancel();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>2、Rtimer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTimer timer;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRequestStatus timerStatus;&nbsp;&nbsp;// ... its associated request status<br><br>&nbsp;&nbsp; timer.CreateLocal();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Always created for this thread.<br><br>for (TInt i=0; i&lt;10; i++)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;// issue and wait for single request<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.After(timerStatus,1000000);&nbsp;&nbsp;// 设定时钟请求为1秒<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User::WaitForRequest(timerStatus); // 等待这个请求<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // display the tick count<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_LIT(KFormat3,"Tick %d\n");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console-&gt;Printf(KFormat3, i);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>3、Ttime<br>&nbsp;&nbsp;TTime time; // time in microseconds since 0AD nominal Gregorian<br><br>&nbsp;&nbsp; _LIT(KTxt2,"The time now is, ");<br><br>&nbsp;&nbsp; console-&gt;Printf(KTxt2);<br><br>&nbsp;&nbsp; time.HomeTime(); //设置时间为当前系统时间<br><br>&nbsp;&nbsp; showTime(time);//显示当前时间<br><br>//----------------以下代码是人为给时间加10秒--------------<br><br>TTimeIntervalSeconds timeIntervalSeconds(10);<br><br>&nbsp;&nbsp; time += timeIntervalSeconds;<br><br>&nbsp;&nbsp; showTime(time); // print the time the request should complete<br><br>//---------------------------------------------------------<br><br>timer.At(timerStatus,time); //设定时钟请求为10秒<br><br>User::WaitForRequest(timerStatus); //等待这个请求<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// say it's over, and set and print the time again<br><br>&nbsp;&nbsp; _LIT(KTxt4,"Your 10 seconds are up\nThe time now is, ");<br><br>&nbsp;&nbsp; console-&gt;Printf(KTxt4);<br><br>&nbsp;&nbsp; time.HomeTime(); // set time to now<br><br>&nbsp;&nbsp; showTime(time); // print the time<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// close timer<br><br>&nbsp;&nbsp; timer.Close(); // close timer<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>3、字符串类：<br>TDesC是所有字符类的祖先<br><br><br>标准C语言<br>Symbian OS<br><br>让一个字符串进入2进制代码<br>Static char hellorom[]=&#8221;hello&#8221;<br>_LIT(khellorom,&#8221;hello&#8221;)<br><br>在栈中获得字符串的指针<br>Const char* helloptr=hellorom<br>TPtrC helloptr=khellorom<br><br>获得在栈中字符串的指针<br>Char hellostack[sizeof(hellorom)];<br><br>Strcpy(hellostack,hellorom);<br>TBufC&lt;5&gt; hellostack=khellorom;<br><br>获得在堆中字符串的指针<br>Char* helloheap=<br><br>(char *)malloc(sizeof(hellorom));<br><br>strcpy(helloheap,hellorom);<br>HBufC* helloheap=<br><br>Khellorom.AllocLC();<br><br><br>a)TPtrC相当于不变的字符串常量.<br><br>b)TPtr相当与String类型。Tbuf相当于char[]。前者与后者的唯一区别是，后者需要指定分配的栈空间大小。<br><br>C)HBufC* 与char*类似。分配的是堆上的空间。<br><br>HBufC* textResource; <br><br>//两种字符串附值方法<br><br>textResource = StringLoader::LoadLC( R_HEWP_TIME_FORMAT_ERROR );<br><br>textResource =iEikonEnv-&gt;AllocReadResourceL(R_EXAMPLE_TEXT_HELLO);<br><br>TBuf&lt;32&gt; timeAsText;<br><br>timeAsText = *textResource;<br><br>/* 数据类型转换*/<br><br><br>TBuf&nbsp;&nbsp;转换为 TPtrC16<br>&nbsp;&nbsp;&nbsp;&nbsp;TBuf&lt;32&gt; tText(_L("2004/11/05 05:44:00"));<br>&nbsp;&nbsp;&nbsp;&nbsp;TPtrC16 tPtrSecond=tText.Mid(17,2);<br><br>TPtrC16 转换为 TBufC16<br>&nbsp;&nbsp;&nbsp;&nbsp;TPtrC16 tPtrSecond=tText.Mid(17,2);<br>&nbsp;&nbsp;&nbsp;&nbsp;TBufC16&lt;10&gt; bufcs(tPtrSecond);<br><br>TBufC16 转换为&nbsp;&nbsp;TPtr16<br>&nbsp;&nbsp;&nbsp;&nbsp;TBufC16&lt;10&gt; bufcs(tPtrSecond);<br>&nbsp;&nbsp;&nbsp;&nbsp;TPtr16 f=bufcs.Des();<br><br>TPtr16 转换为 TBuf<br>&nbsp;&nbsp;&nbsp;&nbsp;TBuf&lt;10&gt; bufSecond;<br>&nbsp;&nbsp;&nbsp;&nbsp;bufSecond.Copy(f);<br><br>TBuf 转换为 TPtr16 <br>&nbsp;&nbsp;&nbsp;&nbsp;TBuf&lt;10&gt; bufSecond(_L("abc"));<br>&nbsp;&nbsp;&nbsp;&nbsp;TPtr16 f;<br>&nbsp;&nbsp;&nbsp;&nbsp;f.Copy(bufSecond);<br><br>TBuf 转换为 TInt<br>&nbsp;&nbsp;&nbsp;&nbsp;TInt aSecond;<br>&nbsp;&nbsp;&nbsp;&nbsp;TLex iLexS(bufSecond);<br>&nbsp;&nbsp;&nbsp;&nbsp;iLexS.Val(aSecond); <br><br>TInt 转换为 TBuf<br>&nbsp;&nbsp;&nbsp;&nbsp;TBuf&lt;32&gt; tbuf;<br>&nbsp;&nbsp;&nbsp;&nbsp;TInt i=200;<br>&nbsp;&nbsp;&nbsp;&nbsp;tbuf.Num(i);<br><br>1.串转换成数字<br>&nbsp;&nbsp; TBuf16&lt;20&gt; buf(_L( "123" ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;TLex lex( buf );<br>&nbsp;&nbsp;&nbsp;&nbsp;TInt iNum;<br>&nbsp;&nbsp;&nbsp;&nbsp;lex.Val( iNum );<br>2.数字转换成串<br>&nbsp;&nbsp; TBuf16&lt;20&gt; buf;<br>&nbsp;&nbsp; TInt iNum = 20;<br>&nbsp;&nbsp; buf.Format( _L( "%d" ) , iNum&nbsp;&nbsp;);<br>3.将symbian串转换成char串<br>&nbsp;&nbsp;&nbsp;&nbsp;char* p = NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;TBuf8&lt;20&gt; buf( _L( "aaaaa" ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;p = (char *)buf.Ptr();<br><br>4.UTF-8转换成UNICODE<br>&nbsp;&nbsp;&nbsp;&nbsp;CnvUtfConverter::ConvertToUnicodeFromUtf8( iBuf16 , iBuf8 );<br>5.UNICODE转换成UTF-8<br>&nbsp;&nbsp;&nbsp;&nbsp;CnvUtfConverter::ConvertFromUnicodeToUtf8( iBuf8 , iBuf16 ); <br><br><br>6.将char串转换成symbian串<br>&nbsp;&nbsp;&nbsp;&nbsp;char* cc = "aaaa";<br>&nbsp;&nbsp;&nbsp;&nbsp;TPtrC8 a;<br>&nbsp;&nbsp;&nbsp;&nbsp;a.Set( (const TUint8*)cc , strlen(cc) );<br><br>7、将TPtrc8与TPtrc16之间转化<br><br>// Get a iBuf8 from a iBuf16 (data are not modified)<br>TPtrC8 ptr8(reinterpret_cast&lt;const TUint8*&gt;(iBuf16.Ptr()),(iBuf16.Size()*2));<br>iBuf8=ptr8;<br><br>// Get a iBuf16 from a iBuf8 (data are not modified)<br>TPtrC16 ptr16(reinterpret_cast&lt;const TUint16*&gt;(iBuf8.Ptr()),(iBuf8.Size()/2));<br>iBuf16=ptr16;<br><br><br>The second one takes each character and convert it to the other format. The 16-bit to 8-bit conversion may not always succeed in this case:<br><br>Code:<br><br>// Get a iBuf8 from a iBuf16 (data are modified)<br>CnvUtfConverter::ConvertFromUnicodeToUtf8(iBuf8,iBuf16); <br><br>// Get a iBuf16 from a iBuf8 (data are modified)<br>CnvUtfConverter::ConvertToUnicodeFromUtf8(iBuf16,iBuf8); <br><br><br>This second method requires to include the utf.h header and to link against charconv.lib.<br><br>/*memset&nbsp;&nbsp; memcpy&nbsp;&nbsp; strcpy */<br><br>memset主要应用是初始化某个内存空间。用来对一段内存空间全部设置为某个字符。<br>memcpy是用于COPY源空间的数据到目的空间中,用来做内存拷贝可以拿它拷贝任何数据类型的对象。<br>strcpy只能拷贝字符串了，它遇到'\0'就结束拷贝。<br><br><br><br>strcpy <br>原型：extern char *strcpy(char *dest,char *src); <br>用法：#include &lt;string.h&gt;<br>功能：把src所指由NULL结束的字符串复制到dest所指的数组中。<br>说明：src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回指向dest的指针。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>memcpy <br>原型：extern void *memcpy(void *dest, void *src, unsigned int count);<br>用法：#include &lt;string.h&gt;<br>功能：由src所指内存区域复制count个字节到dest所指内存区域。<br>说明：src和dest所指内存区域不能重叠，函数返回指向dest的指针。<br><br>memset<br>原型：extern void *memset(void *buffer, int c, int count);<br>用法：#include &lt;string.h&gt;<br>功能：把buffer所指内存区域的前count个字节设置成字符c。<br>说明：返回指向buffer的指针。<br><br><br><br><br><br><br><br><br>4、文件类和流操作<br>Location: s32file.h<br><br>文件模拟路径在C:\Symbian\8.0a\epoc32\wins下面。有C、D两个分区。<br><br>RFs fs;<br>User::LeaveIfError(fs.Connect());<br>RFile file<br>User::LeaveIfError(file.Open(fs, _L("C:\\file.foo"), EFileWrite));<br>TBuf8&lt;256&gt; buf;<br>file.Read(buf, 256);<br>file.Seek(ESeekStart, 911);<br>file.Write(_L8("Some thing you wanna write..."));<br>file.Close();<br>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与文件服务器建立通信：<br><br>RFs fsSession;<br><br>TInt fsret = fsSession.Connect(); // start a file session<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fsret != KErrNone)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{console-&gt;Printf(KTxtConnectFailed,fsret);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User::Leave(fsret);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;2）确定文件路径存在<br><br>fsSession.MkDirAll(KFullNameOfFileStore); // make sure directory exists<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br><br>&nbsp;&nbsp;3）建立文件存储<br><br>TParse&nbsp;&nbsp;&nbsp;&nbsp;filestorename;// The class uses the full filename structure supported by Symbian <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fsSession.Parse(aName,filestorename);<br><br>/*------------------------------------------------------------------------------------------------<br><br>TDesC&amp; aName。可以通过以下方式给aNAME赋值：<br>&nbsp;&nbsp;&nbsp;&nbsp;_LIT(aName,"C:\\epoc32ex\\data\\SimpleClassToSimpleStream.dat");<br><br>----------------------------------------------------------------------------------------------*/<br><br>&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;// construct file store object - the file to contain the<br><br>&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;// the store replaces any existing file of the same name.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CFileStore*&nbsp;&nbsp;&nbsp;&nbsp; //如果EFileRead为读出流<br><br>store = CDirectFileStore::ReplaceLC(fsSession,filestorename.FullName(),EFileWrite);<br><br>store-&gt;SetTypeL(KDirectFileStoreLayoutUid); // 设定存储种类<br><br><br><br>4）将外部数据写入流：：（记忆方式：&gt;&gt;指向就是数据流向）//假设：TSimple anXxx;<br><br>RStoreWriteStream outstream;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TStreamId id = outstream.CreateLC(*store); <br><br>//----------------------------将标量写入数据流------------------<br><br>outstream&lt;&lt; anXxx;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;或者 aStream.WriteInt8L(anXxx);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;实际上这里使用了流的扩展化：（当输出不是普通的元数据时，使用这个扩展化）这是一个虚函数的重载<br><br>void TSimple::ExternalizeL(RWriteStream&amp; aStream) const<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream &lt;&lt; iTheEnum;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream &lt;&lt; iBuffer;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream.WriteInt32L(iIntValue);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream.WriteUint32L(iUintValue);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream.WriteReal64L(iRealValue);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br><br>//------------------------------------------------------------------------------------------------<br><br>&nbsp;&nbsp;&nbsp;&nbsp; // 以下是将流改动提交到文件服务器。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outstream.CommitL();<br><br>5）将流读到外部数据： <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RStoreReadStream instream;<br><br>store-&gt;SetRootL(id);//可以将上面的已经存在的流作为流的根。好处是不必再创建流ID。实际上也就节省了内存。<br><br>// Commit changes to the store<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store-&gt;CommitL();<br><br>// Construct and open the input stream object. We want to access the root stream from the store in this example.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instream.OpenLC(*store,store-&gt;Root());<br><br>TSimple thesimple;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instream &gt;&gt; thesimple;//写入类对象数据。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//---------------------------------------------------------------------<br><br>void TSimple::InternalizeL(RReadStream&amp; aStream)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream &gt;&gt; iTheEnum;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream &gt;&gt; iBuffer;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iIntValue&nbsp;&nbsp;= aStream.ReadInt32L();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iUintValue = aStream.ReadUint32L();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iRealValue = aStream.ReadReal64L();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//------------------------------输出流到其他数据元或类对象中----------------------------<br><br>&nbsp;&nbsp;&nbsp;&nbsp; anXxx = TXxx(aStream.ReadInt8L());<br><br>&nbsp;&nbsp; <br><br>6）关闭文件服务通信<br><br>fsSession.Close() <br><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><br>5. 活动调度表 <br>由于使用多线程来处理异步请求比较消耗系统资源，所以Symbian 使用了活动对象（Active Object）来解决异步请求的问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 活动规划器（active scheduler）用于处理由活动对象提出的异步请求。它检测活动对象提出的异步请求，并安排活动对象的请求完成事件的执行顺序。活动规划器仅用一个事件处理线程来规划各个活动对象提出的事件请求，所以它要比多线程实现异步请求占用更少的资源。<br><br>1、&nbsp;&nbsp; 首先应该创建一个活动规划器对象，并把它安装到当前线程<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CActiveScheduler* scheduler = new(ELeave) CActiveScheduler();//创建一个活动规划器<br>&nbsp;&nbsp; CleanupStack::PushL(scheduler);<br>&nbsp;&nbsp; CActiveScheduler::Install(scheduler);// 安装活动规划器。<br>&nbsp;&nbsp; TRAPD(error,doInstanceL());&nbsp;&nbsp; //具体安排的函数处理。<br><br>在具体的安排函数中一定要启动这个规划器<br><br>CActiveScheduler::Start();//这句话告诉活动规划器该等待对象的状态的改变<br><br>2、 把自己加入活动规划器：一般这是一个类。可以在类的构造函数中申明下面代码。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CActiveScheduler::Add(this);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; //该类必须有一个继承来自public CActive, public MmsvSessionObserver<br><br>//在构造函数时，也可以宣布优先级别：TclassA::classA()&nbsp;&nbsp;: CActive(0)&nbsp;&nbsp;&nbsp;&nbsp;<br><br>3、返回改变事实：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>SetActive();&nbsp;&nbsp;/ / CActive类对象提交异步请求。<br><br>//这个请求说明对象的改变完成。就会触发CActive::RunL()<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、这里的CActiveScheduler只管理了一个CActive对象,就是timeCount,可以用类似的方法实现多个CActive,并且都加入CActiveScheduler,CActiveScheduler将会等待所有加入它的CActive的状态的改变,其中有一个的状态改变就会去执行对应的活动对象的处理函数,当状态同时发生的时候,会通过对象的优先级来决定先调用谁的RunL函数.CActiveScheduler也是非抢占式的,当一个RunL函数还没有执行完的时候,如果另一个CActive的状态改变,会等待RunL执行完以后再执行另一个CActive的处理函数.<br><br><br><br>6、线程：<br>1、&nbsp;&nbsp;创建一个等待的线程：<br><br>&nbsp;&nbsp;&nbsp;&nbsp; TInt res=KErrNone;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; // create server - if one of this name does not already exist<br><br>&nbsp;&nbsp;&nbsp;&nbsp; TFindServer findCountServer(KCountServerName);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; TFullName name;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if (findCountServer.Next(name)!=KErrNone) // we don't exist already<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>RThread thread;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RSemaphore semaphore;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semaphore.CreateLocal(0); //创建一个信号量，等待线程的正常结束<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res=thread.Create(KCountServerName,&nbsp;&nbsp; // create new server thread<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCountServServer::ThreadFunction, // 线程启动的主函数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KDefaultStackSize,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KDefaultHeapSize,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KDefaultHeapSize,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;semaphore // 最后是主函数的需要的参数passed as TAny* argument to thread function<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res==KErrNone) // thread created ok - now start it going<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.SetPriority(EPriorityNormal);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.Resume(); // start it going<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;semaphore.Wait(); // wait until it's initialized<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.Close(); // we're no longer interested in the other thread<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else // thread not created ok<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.Close(); // therefore we've no further interest in it<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semaphore.Close();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/110840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-29 13:23 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/29/110840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian中活动对象的一些简单的使用 和 Symbian平台移植之——活动规划器CActiveScheduler的灵活应用 </title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110460.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 24 Mar 2010 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110460.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/110460.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/110460.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/110460.html</trackback:ping><description><![CDATA[<div>原文地址：http://blog.csdn.net/suyouxin/archive/2005/01/06/242759.aspx</div><div><div>&nbsp;symbian中活动服务对象的一些简单的使用</div><div><br></div><div>对symbain的学习已经又几个月了,今天来写写自己的一些活动服务对象使用方法.</div><div><br></div><div>symbian官方推荐使用活动服务对象(CActive)来代替多线程的使用,我想这个道理是很明了的,在手机这样的小内存设备里,运行多线程的程序是非常耗资源的,为了节约资源,symbian提供了一个活动服务对象的框架,允许把程序里并发执行对象(其实不是并发,不过宏观上看来是)放在一个线程里面执行,这些并发工作的对象就通过活动规划器(ActiveScheduler)来进行管理.</div><div><br></div><div>关于这两个东西的介绍,网上有一大堆的文档,我就不在这里废话了,如何使用呢?这里我先举一个简单的计数器的例子.我选择写一个exe的程序,也就是说程序是以E32Main为入口的.</div><div>&nbsp;&nbsp; &nbsp;</div><div>GLDEF_C TInt E32Main()&nbsp;</div><div>{</div><div>&nbsp;&nbsp; &nbsp; CTrapCleanup* cleanup=CTrapCleanup::New();</div><div>&nbsp;&nbsp; &nbsp; TRAPD(error,callInstanceL());&nbsp;</div><div>&nbsp;&nbsp; &nbsp; if (error != KErrNone){</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; printf("get error %d\r\n", error);</div><div>&nbsp;&nbsp; &nbsp; }</div><div>&nbsp;&nbsp; &nbsp; delete cleanup;&nbsp;</div><div>&nbsp;&nbsp; &nbsp; return 0;&nbsp;</div><div>}</div><div><br></div><div>以上的内容是每一个exe文件都应该做的,CTrapCleanup* cleanup=CTrapCleanup::New()建立一个清除堆栈,以便程序在异常退出的时候把清除堆栈里面的资源都释放掉.当然你也可以加上堆检测宏,这里我就不多说了.TRAPD是symbian里面经常使用的宏,功能类似于try,第一个参数是让定义一个错误返回值变量的名字, 后面就是可能有异常的你写的函数.当这个函数异常时,程序不会crash, 你可以得到异常的原因.可以参考nokia论坛上的一些关于这些使用的文档.</div><div><br></div><div>接下来是vcallInstanceL函数,在这个函数里面我来建立ActiveScheduler.</div><div><br></div><div>LOCAL_C void callInstanceL()&nbsp;</div><div>{</div><div>&nbsp;&nbsp; &nbsp; CActiveScheduler* scheduler = new(ELeave) CActiveScheduler();</div><div>&nbsp;&nbsp; &nbsp; CleanupStack::PushL(scheduler);</div><div>&nbsp;&nbsp; &nbsp; CActiveScheduler::Install(scheduler);</div><div>&nbsp;&nbsp; &nbsp; TRAPD(error,doInstanceL());</div><div>&nbsp;&nbsp; &nbsp; if(error) {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf("error code=%d\r\n",error);</div><div>&nbsp;&nbsp; &nbsp; }</div><div>&nbsp;&nbsp; &nbsp; else {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf("OK!\r\n[press any key]");</div><div>&nbsp;&nbsp; &nbsp; }</div><div>&nbsp;&nbsp; &nbsp; CleanupStack::PopAndDestroy(scheduler);</div><div>}</div><div><br></div><div>这段程序很简单就是创建一个活动规划器,并压入清除栈,然后安装活动规划器,这样就可以用了.再执行真正的实例函数,最后出栈销毁.doinstanceL我们放到最后来写,现在来构造我们的活动计数器对象.</div><div><br></div><div>class TimeCount : public CActive</div><div>&nbsp;&nbsp; &nbsp;{</div><div>public :</div><div>&nbsp;&nbsp; &nbsp; static TimeCount* NewLC(); // 构造函数</div><div>&nbsp;&nbsp; &nbsp; ~TimeCount();</div><div>&nbsp;&nbsp; &nbsp; void StartL(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 计数开始</div><div>&nbsp;&nbsp; &nbsp; void ConstructL();&nbsp;</div><div>&nbsp;&nbsp; &nbsp; void RunL(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 延时事件到达以后的处理函数</div><div>&nbsp;&nbsp; &nbsp; void DoCancel(); &nbsp; &nbsp; &nbsp; &nbsp;// 取消请求提交</div><div>&nbsp;&nbsp; &nbsp; void setDelayTime(int delayTime);</div><div>private:</div><div>&nbsp;&nbsp; &nbsp; TimeCount();</div><div>&nbsp;&nbsp; &nbsp; RTimer iTimer; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 定时器</div><div>&nbsp;&nbsp; &nbsp; int iTimeCount; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 计数器</div><div>&nbsp;&nbsp; &nbsp; int mTime; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 计数间隔时间 单位秒</div><div>};</div><div><br></div><div>TimeCount::TimeCount()&nbsp;</div><div>&nbsp;: CActive(0) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 这里可以设置活动对象的优先级</div><div>{</div><div>&nbsp;&nbsp; &nbsp; // 把自己加入活动规划器</div><div>&nbsp;&nbsp; &nbsp; CActiveScheduler::Add(this);</div><div>}</div><div><br></div><div>TimeCount* TimeCount::NewLC()</div><div>{</div><div>&nbsp;&nbsp; &nbsp; TimeCount* result = new (ELeave) TimeCount();</div><div>&nbsp;&nbsp; &nbsp; CleanupStack::PushL( result );</div><div>&nbsp;&nbsp; &nbsp; result-&gt;ConstructL();</div><div>&nbsp;&nbsp; &nbsp; return result;</div><div>}</div><div><br></div><div>void TimeCount::DoCancel(void)</div><div>{</div><div>&nbsp;&nbsp; &nbsp; iTimer.Cancel();</div><div>}</div><div><br></div><div>void TimeCount::setDelayTime(int mTime)</div><div>{</div><div>&nbsp;&nbsp; &nbsp; DelayTime = mTime;</div><div>}</div><div><br></div><div>TimeCount::~TimeCount()</div><div>{</div><div>&nbsp;&nbsp; &nbsp; Cancel();</div><div>&nbsp;&nbsp; &nbsp; iTimer.Close();</div><div>}</div><div><br></div><div>void TimeCount::StartL()</div><div>{</div><div>&nbsp;&nbsp; &nbsp; // 设定定时器状态为每隔mTime秒钟状态完成一次</div><div>&nbsp;&nbsp; &nbsp; iTimer.After(iStatus, 10000 * 100 * mTime);</div><div>&nbsp;&nbsp; &nbsp; // 提交异步请求</div><div>&nbsp;&nbsp; &nbsp; SetActive();</div><div>}</div><div><br></div><div>void TimeCount::ConstructL()</div><div>{</div><div>&nbsp;&nbsp; &nbsp; // 初始化计数器和定时器</div><div>&nbsp;&nbsp; &nbsp; iTimeCount = 0;</div><div>&nbsp;&nbsp; &nbsp; User::LeaveIfError(iTimer.CreateLocal());</div><div>}</div><div><br></div><div>void TimeCount::RunL()</div><div>{</div><div>&nbsp;&nbsp; &nbsp; // 计数器+1以后继续提交延时请求事件</div><div>&nbsp;&nbsp; &nbsp; printf("The Count is -&gt;&gt;%d", iTimeCount++);</div><div>&nbsp;&nbsp; &nbsp; StartL();</div><div>}</div><div><br></div><div>每一个活动服务对象都有一个iStatus来标识当前对象的状态.在这里我们把iStatus设定为iTimer.After(iStatus, 10000 * 100 * mTime);也就是定时器定时mTime秒钟以后iStatus发生改变,这个时候活动规划器会收到这个状态的改变,从而调用相应活动对象的处理函数,也就是RunL函数.在RunL函数里面进行计数和输出,然后调用startL重新设置定时器和对象状态,再提交给活动规划器.这样mTime秒钟以后活动规划器会再次调用RunL函数.一直这样重复,这样就达到了计数器的效果.</div><div><br></div><div>最后我们来写doinstanceL函数</div><div>LOCAL_C void doInstanceL()</div><div>{ &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp;&nbsp; &nbsp; TimeCount* timeCount = TimeCount::NewLC();</div><div>&nbsp;&nbsp; &nbsp; // 每隔一秒钟打印一次</div><div>&nbsp;&nbsp; &nbsp; TimeCount-&gt;setDelayTime(1);</div><div>&nbsp;&nbsp; &nbsp; TimeCount-&gt;StartL();</div><div>&nbsp;</div><div>&nbsp;&nbsp; &nbsp; CActiveScheduler::Start();</div><div>&nbsp;</div><div>&nbsp;&nbsp; &nbsp; CleanupStack::PopAndDestroy(1);&nbsp;</div><div>}</div><div><br></div><div>创建好对象以后,加上CActiveScheduler::Start()程序就开始运行了,这句话告诉活动规划器该等待对象的状态的改变了,在这里就是timeCount的iStatus的改变.等iStatus改变并调用了RunL以后,继续等待iStstus的改变,这样我们使用活动对象的计数器就能够通过消息驱动运行起来了.</div><div><br></div><div>这里的CActiveScheduler只管理了一个CActive对象,就是timeCount,可以用类似的方法实现多个CActive,并且都加入CActiveScheduler,CActiveScheduler将会等待所有加入它的CActive的状态的改变,其中有一个的状态改变就会去执行对应的活动对象的处理函数,当状态同时发生的时候,会通过对象的优先级来决定先调用谁的RunL函数.CActiveScheduler也是非抢占式的,当一个RunL函数还没有执行完的时候,如果另一个CActive的状态改变,会等待RunL执行完以后再执行另一个CActive的处理函数.</div><div><br></div><div>用起来还算简单吧?.</div><div><br></div><div><br></div><div><br></div><div>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/suyouxin/archive/2005/01/06/242759.aspx</div></div><div><br></div>
原文地址：http://blog.csdn.net/alex_hua/archive/2008/07/10/2633137.aspx<div><div>由于做工程的移植工作，需要移植代码到Symbian平台上，但之前代码的架构与Symbian平台看起来是有冲突，体现在之前代码中有一个独立线程用来做事件驱动、分发，然后在事件回调中完成自己的逻辑（包括异步请求），该线程是用</div><div><br></div><div>&nbsp;&nbsp; &nbsp;while(1)</div><div><br></div><div>&nbsp;&nbsp; &nbsp;{</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;getevent();</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dispatchevent()</div><div><br></div><div>&nbsp;&nbsp; &nbsp;}</div><div><br></div><div>来实现。但在Symbian平台上，所有的异步方法的侦测是通过CActiveScheduler.Start()完成，且该方法实际上就是一个死循环。这样看起来，在同一个线程中，是不可能有两个死循环存在的，这个移植是不能完成的，除非修改代码架构。</div><div><br></div><div>&nbsp;&nbsp; &nbsp;这个问题确实困扰了很久，呵呵，因为是一个人开发，确实没有人可以帮忙出点主义，脑子也死了，想不开了。现在终于有眉目了，基本可以解决该问题，途径就是理解活动对象和活动规划器的原理，灵活应用这对活宝！</div><div><br></div><div>&nbsp;&nbsp; &nbsp;之前一直想着，为了能侦测到异步请求是否完成，CActiveScheduler.Start()这个方法必须在线程的初始就调用，其实可以不这样，CActiveScheduler.Start()在线程的任何地方随时可以调用，且CActiveScheduler起来后，还是可以侦测到&#8220;很久&#8221;以前就完成的异步请求。例子如下：</div><div><br></div><div>&nbsp;</div><div><br></div><div>/* &nbsp;============================================================================&nbsp;</div><div><br></div><div>&nbsp;Name &nbsp;: NewClassTest.h &nbsp;Author &nbsp; : Alex &nbsp;Version &nbsp;: 1.0 &nbsp;Copyright &nbsp; : su-fun &nbsp;Description : CNewClassTest declaration &nbsp;============================================================================ &nbsp;*/</div><div><br></div><div>&nbsp;</div><div><br></div><div>#ifndef NEWCLASSTEST_H&nbsp;</div><div><br></div><div>#define NEWCLASSTEST_H</div><div><br></div><div>#include &lt;e32base.h&gt;&nbsp;</div><div><br></div><div>// For CActive, link against: euser.lib&nbsp;</div><div><br></div><div>#include &lt;e32std.h&gt; &nbsp;</div><div><br></div><div>//For RTimer, link against: euser.lib&nbsp;</div><div><br></div><div>&nbsp;</div><div><br></div><div>class CNewClassTest : public CActive&nbsp;</div><div><br></div><div>{&nbsp;</div><div><br></div><div>public: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Cancel and destroy &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;~CNewClassTest();</div><div><br></div><div>&nbsp;&nbsp; &nbsp; // Two-phased constructor. &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;static CNewClassTest* NewL();</div><div><br></div><div>&nbsp;&nbsp; &nbsp; // Two-phased constructor. &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;static CNewClassTest* NewLC();</div><div><br></div><div>&nbsp;</div><div><br></div><div>public: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// New functions &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Function for making the initial request &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;void StartL(TInt aState, TTimeIntervalMicroSeconds32 aDelay);</div><div><br></div><div>&nbsp;</div><div><br></div><div>private: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// C++ constructor&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CNewClassTest();</div><div><br></div><div>&nbsp;&nbsp; &nbsp; // Second-phase constructor &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;void ConstructL();</div><div><br></div><div>&nbsp;</div><div><br></div><div>private: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// From CActive &nbsp;// Handle completion &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;void RunL();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// How to cancel me &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;void DoCancel();</div><div><br></div><div>&nbsp;&nbsp; &nbsp; // Override to handle leaves from RunL(). Default implementation causes &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// the active scheduler to panic. &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;TInt RunError(TInt aError);</div><div><br></div><div>&nbsp;</div><div><br></div><div>public: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;enum TNewClassTestState &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;{ &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;EUninitialized=12, // Uninitialized &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;EInitialized=22, // Initalized &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;EError=32 // Error condition &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;};</div><div><br></div><div>&nbsp;</div><div><br></div><div>private: &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;TInt iState; // State of the active object &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;RTimer iTimer; // Provides async timing service</div><div><br></div><div>};</div><div><br></div><div>&nbsp;</div><div><br></div><div>#endif // NEWCLASSTEST_H</div><div><br></div><div>&nbsp;</div><div><br></div><div>/* &nbsp;============================================================================ &nbsp;</div><div><br></div><div>Name &nbsp;: NewClassTest.cpp &nbsp;Author &nbsp; : Alex &nbsp;Version &nbsp;: 1.0 &nbsp;Copyright &nbsp; : su-fun &nbsp;Description : CNewClassTest implementation &nbsp;============================================================================ &nbsp;*/</div><div><br></div><div>#include "NewClassTest.h"</div><div><br></div><div>&nbsp;</div><div><br></div><div>CNewClassTest::CNewClassTest() : &nbsp;CActive(EPriorityStandard) // Standard priority&nbsp;</div><div><br></div><div>{&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>CNewClassTest* CNewClassTest::NewLC()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CNewClassTest* self = new ( ELeave ) CNewClassTest(); &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CleanupStack::PushL(self); &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;self-&gt;ConstructL(); &nbsp;return self;&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>CNewClassTest* CNewClassTest::NewL()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CNewClassTest* self = CNewClassTest::NewLC(); &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CleanupStack::Pop(); // self; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;return self;&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>void CNewClassTest::ConstructL()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;User::LeaveIfError(iTimer.CreateLocal() ); // Initialize timer &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CActiveScheduler::Add( this); // Add to scheduler&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>CNewClassTest::~CNewClassTest()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;Cancel(); // Cancel any request, if outstanding &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;iTimer.Close(); // Destroy the RTimer object &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Delete instance variables if any&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>void CNewClassTest::DoCancel()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;iTimer.Cancel();&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>void CNewClassTest::StartL(TInt aState, TTimeIntervalMicroSeconds32 aDelay)&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;Cancel(); // Cancel any request, just to be sure &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;iState = aState; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;iTimer.After(iStatus, aDelay); // Set for later &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;SetActive(); // Tell scheduler a request is active&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>void CNewClassTest::RunL()&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;if (iState == EUninitialized) &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;{ &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// older timer event, 当CActiveScheduler::Start()后，程序先到达这里 &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;iState = 10; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;} &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;else if(iState == EInitialized) &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;{ &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//// new timer event &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;iState = 201; &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CActiveScheduler::Stop(); &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;}&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>TInt CNewClassTest::RunError(TInt aError)&nbsp;</div><div><br></div><div>{ &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;return aError;&nbsp;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>// 测试代码</div><div><br></div><div>// TInt ThreadEntry(TAny *arg), 用户线程的入口函数,省略了一些必要的初始化</div><div><br></div><div>&nbsp;</div><div><br></div><div>TInt ThreadEntry(TAny *arg)</div><div><br></div><div>{</div><div><br></div><div>&nbsp;&nbsp; &nbsp; CNewClassTest *obj1 = CNewClassTest::NewL(); &nbsp; &nbsp; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CNewClassTest *obj2 = CNewClassTest::NewL(); &nbsp; &nbsp; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;obj-1&gt;StartL(CNewClassTest::EUninitialized,TTimeIntervalMicroSeconds32(1000000)); &nbsp;//1(s) &nbsp; &nbsp; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;User::After(5000000); &nbsp;// sleep 5(s) &nbsp; &nbsp; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;obj2-&gt;StartL(CNewClassTest::EInitialized,TTimeIntervalMicroSeconds32(20000)); &nbsp;//20(ms) &nbsp; &nbsp; &nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;CActiveScheduler::Start(); &nbsp; &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;delete obj1; &nbsp; &nbsp;&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp;delete obj2;</div><div><br></div><div>}</div><div><br></div><div>&nbsp;</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;以上代码演示了如何灵活使用CActiveScheduler::Start()，至于具体的实现上，还需要调整一下，CActiveScheduler::Start()的必须还要同时启动一个超时定时器，当在设定的超时时间内没有任何异步时间完成，则在超时AO内停止活动规划器CActiveScheduler::Stop()，这样等待下一个循环到来再启动活动规划器。此时可继续执行被CActiveScheduler::Start()方法挂起的语句和方法。</div><div><br></div><div>&nbsp;</div><div><br></div><div>总结：</div><div><br></div><div>1. 可以解决移植代码中出现的上述情况</div><div><br></div><div>2. 异步事件的完成检测有时延</div><div><br></div><div>3. 因为是异步事件，对于一定的时延，还是可以接受的&nbsp;</div><div><br></div><div><br></div><div><br></div><div>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/alex_hua/archive/2008/07/10/2633137.aspx</div><div><br></div></div><img src ="http://www.cppblog.com/AutomateProgram/aggbug/110460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-24 17:02 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian 源代码web浏览</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110458.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 24 Mar 2010 09:00:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110458.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/110458.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/110458.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/110458.html</trackback:ping><description><![CDATA[地址：<a href="http://developer.symbian.org/xref/epl/xref/">http://developer.symbian.org/xref/epl/xref/</a>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/110458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-24 17:00 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian 目录结构</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110444.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 24 Mar 2010 06:37:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110444.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/110444.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/110444.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/110444.html</trackback:ping><description><![CDATA[<p align=left>原文地址：<a href="http://blog.chinaunix.net/u/9577/showart_458197.html">http://blog.chinaunix.net/u/9577/showart_458197.html</a><span><br>手机有四个盘符，你利用文件管理程序打开就可以看到，它们是<span>C,D,E,Z</span>四个</span><span>。<span><br>&nbsp; &nbsp;&nbsp; &nbsp;<br><span>C</span></span><span>盘，</span><span><br></span><span>如同<span>Windows</span>的<span>C</span>盘，是用来放置<span>Symbian OS</span>的地方，所以我们需要给操作系统预留足够的空间（比如用来存放软件运行时生成的临时文件）。对于已扩充了<span>MMC</span>卡的机器，建议把应用软件和游戏都尽量安装到<span>MMC</span>卡上。<span><br>&nbsp; &nbsp;</span>说明：<span>C</span>盘剩余空间的多少和手机内存没有直接关系，极端的例子就是在<span>C</span>盘装满的情况下手机照样能运行。手机内存和常驻内存的软件有关，如输入法、主题背 景开机后就会常驻内存，正在运行的软件和游戏也会占用内存，增加动态内存的办法就是减少常驻内存的程序，用任务管理软件<span>AppMan</span>可以方便的察看内存状 况和关闭进程释放内存。<span><br></span></span><span>&nbsp; &nbsp;<br><span>D</span></span><span>盘</span>，</span></p>
<p align=left><span>高速的虚拟驱动器，主要用来保存剪贴板、<span>wap</span>缓存、和一些临时交换文件。一般情况下，由系统自动调用，与用户联系不多。除了系统自生成的三个目录，用户自建的文件和目录在手机重启动后都会消失。</span><span><br>&nbsp; &nbsp; <br><span>E</span></span><span>盘，</span><span><br></span><span>就是<span>MINI</span>闪存卡，可以用来装软件、游戏、<span>mp3</span>、视频文件等。新<span>MINI</span>卡在用手机格式化后会自动生成几个默认的系统目录，有些是隐含属性的，可以用读卡器在电脑上看（查年隐藏文件夹，要在电脑中打开文件管理器的<span>&#8220;</span>显示所有文件和文件夹<span>&#8221;</span>选项）。</span><span><br>&nbsp; &nbsp; <br><span>Z</span></span><span>盘，</span><span><br></span><span>是手机固化的系统盘，也是用户不能掌控的。格式化手机时，就是系统还原，也就是从<span>Z</span>盘上自动恢复的，刷机升级说的就是通过刷机升级该盘的系统地文件。相当于电脑上的系统备份恢复盘。</span><span>&nbsp; &nbsp;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>4</span><span>个盘之中，<span>C E Z</span>盘的文件结构大同小异</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>C:\Nokia</span><span>是个无关紧要的目录，你完全可以删掉它而没有影响，但是这个目录会经常自动生成。原因是，<span>C</span>盘的<span>Nokia</span>目录中有特别的目录如<span>INSTALL</span>，这个是为了安装软件而设置的。众所周知，<span>Symbian</span>系统的软件是打成<span>SIS</span>压缩包传入手机的某个存储器中（<span>C</span>、<span>E</span>）然后解包安 装的，系统往往在<span>C:\NOKIA\INSTALL</span>目录下保存一个安装副本，以备安装时遇到不可预见的错误（如突然没电）或者用户中断时能够恢复系统安全，这也就是很多情况下，在空余很大空间的<span>E</span>盘安装软件时，仍然出现<span>&#8220;</span>存储空间已满<span>&#8221;</span>的原因，保持<span>C</span>盘有<st1:chmetcnv unitname="m" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"><span>1M</span></st1:chmetcnv>以上的空余空间是个很好的习惯。另外不使用系统的<span>manager</span>转而使用<span>SeleQ</span>进行<span>SIS</span>安装也可以避免产生这个副本。</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><br></span><span>1</span><span>、<span>C</span>盘上的文件结构</span><span><br>&lt;!--[if !supportLineBreakNewLine]--&gt;<br>&lt;!--[endif]--&gt;</span></p>
<p align=left><span>c:\Images&nbsp;</span><span>照片图片存放位置<span><br>c:\Installs&nbsp;</span>存放安装文件<span><br>c:\Music Downloads&nbsp;</span>机子自带浏览器下载音乐后，都存在这里<span><br>c:\MyMusic&nbsp;</span>音乐模式下歌存在这里</span></p>
<p align=left><span><br>c:\Sounds&nbsp; </span><span>铃声存放文件夹<span>, midi</span>文件或者<span>wav</span>文件拷贝在<span>c:\sounds\digital\(</span>或者<span>C:\nokia\sounds\digital\)</span>，就可以像<span>z:\Nokia\Sounds\digital\</span>中固化的音乐文件一样，出现在情景模式铃声的选择项目中</span></p>
<p align=left><span><br>c:\Videos&nbsp; &nbsp;</span><span>动画存放文件夹</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\Data\mbook&nbsp;</span><span>掌上书院安装后配置文件存放文件夹，如果遇到书打不开可以把其中的<span>umdrcnt.lst</span>，<span>mdstng</span>删掉，再打开<span><br>&lt;!--[if !supportLineBreakNewLine]--&gt;<br>&lt;!--[endif]--&gt;</span></span></p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\sys\bin </span><span>可执行文件<span>EXE</span>目录</span></p>
<p align=left><span>c:\sys\install\sisregistry\</span><span>下产生的文件及文件夹<span>(</span>如<span>a00000eb\00000002_0000.ctl</span>之类<span>)</span>多是将程序和主题<span>COPY</span>到卡上后，再用文件管理进行安装后产生的文件。<span><br>&lt;!--[if !supportLineBreakNewLine]--&gt;<br>&lt;!--[endif]--&gt;<br><br>每一程序都有一个ID号<br>放在安装盘的 Private\+ID号下面，有一个_reg.rsc的文件，该文文件可能记录了可执行文件的名称和资源的位置。<br></span></span></p>
<p align=left><span>c:\resource\apps&nbsp;</span><span>资源文件目录，此目录是只读的</span></p>
<p align=left><span>c:\resource\apps&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span>程序文字资源存在这里，大多是<span>rsc</span>文件<span><br>c:\resource\help&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</span>程序自带帮助文件存放在这里<span><br>c:\resource\plugins&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span>好像是放插件的地方，但是目前只有<span>rsc</span>文件<span><br>&lt;!--[if !supportLineBreakNewLine]--&gt;<br>&lt;!--[endif]--&gt;</span></span></p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\system\apps </span><span>该目录下的子目录保存了软件的主体：用户交互可执行文件<span>.app</span>、无界面可执行程序<span>.exe</span>、资源文件<span>.rsc</span>、图标文件<span>.aif</span>以及运行所需的其他文件。（说明：安装在<span>E</span>盘的软件除了在<span>E:\System\Apps\</span>目录下保存软件主体之外，往往会在<span>C:\System\Apps\</span>同名目录下创建一些配置文件）</span></p>
<p align=left><span>c:\System\apps\phone\oplogo </span><span>保存了营运商的标志，如果该目录保存了<span>97*25</span>的<span>bmp</span>图像，则在待机状态下将以该图片代替<span>&#8220;</span>中国移动<span>&#8221;</span>之类的营运商标志（需要重新启动手机）；</span></p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\BootData</span><span>目录：系统的启动参数和日志</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\system\favourites\ </span><span>收藏夹（可以将这些文件移动到<span>c:\system\favourites</span>中）</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\system\install</span><span>目录：保存了全部的软件安装信息，每安装一个软件，就在该目录下保存一个同名<span>sis</span>文件索引，大小在几百<span>b</span>到几<span>K</span>不等，假如删除这个<span>sis</span>文件，在程序管理中就不会出现这个软件的安装信息，也就无法通过程序管理删除，但是仍然可以在<span>apps</span>目录中直接删除软件主体和配置文件，有必要的话在<span>libs</span>目录中删除相应运行库，在<span>programs</span>目录中删除相应辅助运行文件，从而彻底卸载软件；</span></p>
<p align=left><span>c:\system\Install\Registry&nbsp;Java</span><span>程序安装记录文件</span></p>
<p align=left><span>c:\System\libs</span><span>保存某些软件运行时需要的连接库文件，一般由软件安装</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\mail</span><span>信息目录，结构复杂费解，除了一些短信、彩信、<span>EMail</span>设置文件之外，收件箱、发件箱、草稿箱、发送报 告、附件等等分布在丛深复杂的目录之中。值得一提的是，<span>S60</span>的信息概念比较广，短信彩信<span>Email</span>甚至红外蓝牙传输的文件都属于<span>&#8220;</span>信息<span>&#8221;</span>，因此接受到的 红外蓝牙的文件，保存在<span>mail</span>目录下，而且可以由查看该信息触发相应的<span>&#8220;</span>安装<span>&#8221;</span>、<span>&#8220;</span>观看<span>&#8221;</span>、<span>&#8220;</span>编辑<span>&#8221;</span>等动作；</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\MIDIets &nbsp;java</span><span>配置文件</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\midp</span><span>目录：<span>java</span>程序主体安装在这里，如果全部<span>java</span>安装在<span>E</span>盘，<span>c:\system\</span>将不会出现这个目录</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\programs</span><span>保存辅助运行文件，和一些无界面程序<span>exe</span>、动态连接库<span>dll</span>；</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\Recogs</span><span>关联目录，里面的<span>mdl</span>文件标识了文件关联。如<span>QuickWord.mdl</span>标识了系统中的<span>doc</span>文件默 认由<span>quickword</span>打开，另外有些<span>mdl</span>文件会驱动程序运行，如<span>eLoader.mdl</span>驱动了<span>miniGPS</span>、<span>ExtendProfile</span>等<span> ePsint</span>公司开发的软件，没有这个<span>mdl</span>文件，以上两个软件不能自动加载；</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\Schedules</span><span>目录：顾名思义，保存了日程安排；</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\SharedData</span><span>目录：全部是软件的配置文件<span>.ini</span>，对用户作用不大，但是可以通过修改其中的某些数值和路径从而使必须安装在<span>C</span>盘的软件（多半是<span>7650</span>的软件，它没有<span>mmc</span>）安装到<span>mmc</span>；</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\temp</span><span>：临时文件。</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><br>c:\system\Apps\Opera&nbsp;Opera</span><span>安装后建立<span><br>c:\system\Data\Opera&nbsp;</span>文件夹下<span>opera.ini</span>可调节缓存大小，<span>cache4</span>目录为缓存目录</span><span> </span></p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left><span>c:\System\data</span><span>目录：极其繁杂的目录，保存了各种各样的数据，简单介绍几个，<span>backgroundimage.mbm</span>壁纸，<span> btstate.dat</span>蓝牙配对信息，<span>Calender</span>日历，<span>clockapp.dat</span>时间参数，<span>Contacts.cdb</span>联系人，以及很多软件的配置文 件和<span>wap</span>信息；</span></p>
<p align=left><span><br><span>c:\system\data\applications.dat</span></span><span>功能表、文件夹、软件图标排列顺序的备份文件。<span>&nbsp; &nbsp;&nbsp;&nbsp;</span></span><span><br><span>c:\system\data\alarmserver.ini</span></span><span>闹钟设置文件；<span><br>c:\system\data\gsm_identity.qxc</span>智能影院<span>SmartMoviev</span>安装、运行和设置的文件<span><br>c:\system\data\ip_config_x2.sys</span>智能影院<span>SmartMoviev</span>安装、运行和设置的文件<span><br>c: \system\data\StackSrv05.db</span>智能影院<span>SmartMoviev</span>安装、运行和设置的文件<span><br>c:\system\data\utility_dump.dat</span>智能影院<span>SmartMoviev</span>安装、运行和设置的文件<span><br>c:\system\apps\VisualRadio</span>收音机储存电台文件备份<span>,</span>共<span>2</span>个<span><br>c:/data/installs/</span>是软件的安装目录，可以清空。<span><br>c:\system\data\contacts.Cdb</span>同<span>C:\system\data\cntmodel.ini\</span>通讯录<span><br>c:\system\data\scshortcutengine.ini\</span>待机状态模式<span><br>c:\system\data\mms_setting.Dat\</span>彩信设置<span><br>c:\system\data\smsreast.Dat,smssegst.Dat,sms_settings.Dat\</span>短信设置<span><br>c:\system\data\cdbv3.Dat\</span>连接设置<span><br>c:\system\data\notepad.Dat wap\</span>记事本<span><br>c:\system\data\bookmarks1.db\</span>书签<span><br>c:\system\data\profiles\</span>情景模式<span><br>c:\system\data\calendar\</span>日程表<span><br>c/system/install\</span>反安装文件<span>,</span>这个目录下的<span> (</span>前提<span>:</span>软件装在<span>C</span>盘<span>)</span>文件都可以删除，但是如果删除了，在程序管理列表中就没有了，只能直接删除<span>e\system\apps\</span>下对应目录。<span><br>c/system/install\install.log\</span>安装记录文件<span>),</span>要删除安装记录文件，就将些文件删除即可。</span></p>
<p align=left><span>c:/system/dmgr</span><span>，里面有两个文件夹了，各有一个<span>contents</span>的文件夹，这就是平时上网下载的一些文件<span>(</span>可能是视频、音乐、文本等文件<span>)</span>，可以清空。<span><br>c:\system\data\cbs\cbtopicsmsgs.dat\</span>是信息中为运营商设置的一些信息文件，如广播信息、小区信息等，可以清空。<span><br>c:\preinstallAppscache.dat\</span>多是主题、程序的安装记录文件。</span></p>
<p>&nbsp;</p>
<p><span>e:\system</span><span>目录结构与<span>c:\system</span>基本一致，不同的是，少了<span>intsall</span>目录。<span> <br><br>z:\system</span>比之<span>c:\system</span>更加庞大复杂，它保存了系统的全部自带程序、资源文件、硬件驱动、字体字库、国际化设置和初始参数设置。在待机状态下输入<span>*</span>＃<span>7370</span>＃，将初始化手机，基本过程就是清空<span>c</span>盘，复制<span>z</span>盘某些内容至<span>c</span>。某种程度上说<span>z</span>是系统的初始备份。（新手机的第一幅待机图就保存 在<span>z:\system\data\apac.mbm</span>）</span><span><br>&nbsp; <br>原文地址：<a href="http://hi.baidu.com/%CB%BC%D3%DA%C7%B0%CF%EB%D3%DA%BA%F3/blog/item/3d4a96371db9781b90ef39fe.html">http://hi.baidu.com/%CB%BC%D3%DA%C7%B0%CF%EB%D3%DA%BA%F3/blog/item/3d4a96371db9781b90ef39fe.html</a><br><br></p>
<div style="LAYOUT-GRID:  15.6pt none" class=Section0>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">SYMBIAN SDK 安装好后有6个主要的文件夹：以S60_3rd_fp1为例</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">1) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Examples 目录下存储的是基于Symbian OS的例子是与OS之上的UI无关的。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">2) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Nokia_plugin 为安装扩展插件添加的目录</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">3) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">S60Doc 主要是OS的帮助开发文档和UI的帮助开发文档</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">4) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">S60Ex储存的是S60 UI上开发的例子</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">5) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">S60Tools 是SDK提供的一些辅助的开发例子</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 21pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">6) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Epoc32 存储着Symbian手机的模拟器</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">在Epoc32 下有一些比较重要的目录</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">①　</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">BUILD目录存储编译时生成的历史文件</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">②　</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Data目录下存储的是模拟器的Z盘数据，类似手机的Z数据，编译一个工程后，会在这个目录下的Z目录下的相应目录下生成，MIF（多矢量图文件，SVG打包后得到的文件），MBM（多位图文件，BMP打包后得到），RSC（资源文件和注册表资源文件）文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">③　</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Include目录下存储的是SDK给开发者提供的头文件，包括OS和UI的头文件，用户可以直接使用，在编译一个工程后会在这个目录下生成RSG文件，MBG文件等</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">④　</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Winscw下有2个子目录C和D，分别表示模拟器的C盘和D盘，开发者可以在C盘写数据，D盘是手机的内存，一般在手机系统的内部使用，开发者不可以使用。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">⑤　</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Release目录下有4个子目录armv5，GCCE，winscw，winc</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">常用的有前3个，分别存储不同平台编译器的链接库，winscw还存储了模拟器程序，以winscw（pc上的模拟器）为例，编译一个工程后会在udeb/Z目录下生成与Data/Z目录下生成的一样的文件，并且会在udeb目录下生成二进制可执行文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">SYMBIAN手机程序的工程目录：</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">1) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Group目录：主要存储组织文件bld.inf和*.mmp文件以及程序图标及图片使用文件*.mk文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">2) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Inc目录：主要存储程序代码所用的头文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">3) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Src目录：主要存储程序代码的源文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">4) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Data目录：主要存储的是程序的资源文件，*.rss，*_reg.rss，*.rls等文件。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">5) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Gfx目录：主要存储程序的图标文件（SVG格式矢量图）以及图片文件(BMP格式位图)。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">6) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Help目录：帮助文件目录</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="MARGIN-TOP: 0pt; TEXT-INDENT: -21.25pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">7) </span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">Sis目录：存储安装程序时使用的*.pkg文件，以及生成的安装文件*.sis。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">编译流程：首先从bld.inf进入调用*.mmp文件和*.mk文件</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">1．</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">*.mmp文件会对*.rss（程序资源文件）和*_reg.rss（注册表资源文件）进行编译，并生成*.rsc和*_reg.rsc（二进制资源文件）用来使程序加载使用资源和使手机加载程序。同时生成*.rsg(资源头文件，对应生成每个资源的ID)在程序加载资源时使用。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">2．</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">当使用位图时，*.mmp文件会把多个位图打包到*.mbm（多图片文件，包含程序要使用的图片以备程序加载）中，并生成位图资源ID文件*.mbg。</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; TEXT-INDENT: 24pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">3．</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">*.mk文件会对SVG格式的矢量图进行打包生成*.mif（多矢量图文件）</span><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes">通过*,mmp对程序进行编译生成可执行程序。</span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; FONT-WEIGHT: bold; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; mso-spacerun: yes"></span></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; mso-spacerun: yes"></span></p>
</div>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0></p>
<p style="TEXT-ALIGN: justify; MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt" class=p0><span style="FONT-SIZE: 12pt; mso-spacerun: yes">本人文章是在学习清华远见《SYMBIAN手机应用开发标准教程》经过自己的一些实践总结而成特此声明</span></p>
</span>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/110444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-24 14:37 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>S60模拟器下删除已经调试过的应用程序的方法</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110435.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Wed, 24 Mar 2010 06:09:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110435.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/110435.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/110435.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/110435.html</trackback:ping><description><![CDATA[第三版，第五版下，删除下列文件：
<p>　　epoc32releasewinscwudebmyapp.exe</p>
<p>　　epoc32datazresourceappsmyapp.rsc</p>
<p>　　epoc32releasewinscwudebzprivate10003a3fappsmyapp_reg.rsc</p>
<p>　　Epoc32releasewinscwudebzresourceappsmyapp_aif.mif</p>
<p>　　第二版下删除下面文件夹</p>
<p>　　epoc32releasewinsudebzsystemAPPSmyapp<br><br>从新启动模拟器。<br><br>关于模拟器的工作目录都存放在</p>
E:\S60\devices\S60_5th_Edition_SDK_v0.9\epoc32\winscw<br><br>可以自己看看相应对应的目录。
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/110435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-03-24 14:09 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/03/24/110435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKG语法详细说明 常用高级选项</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108394.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Thu, 25 Feb 2010 01:43:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108394.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/108394.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/108394.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/108394.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: PKG语法详细说明&nbsp;常用高级选项连接：http://www.yuelongr.cn/post/880.html另一篇PKG文章链接：[symbian编程中pkg文件详细解密](http://www.yuelongr.cn/post/39.html)Contents1&nbsp;文本警告2&nbsp;多语言文本提示3&nbsp;删除运行时生成的文件4&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108394.html'>阅读全文</a><img src ="http://www.cppblog.com/AutomateProgram/aggbug/108394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-02-25 09:43 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian 开发</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108393.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Thu, 25 Feb 2010 01:42:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108393.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/108393.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/108393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/108393.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址：http://www.cppblog.com/kesalin/archive/2009/07/09/89615.html一.开发环境的搭建1.开发工具下载开发环境选用Jdk1.5&nbsp;+&nbsp;ActivePerl-5.6&nbsp;+&nbsp;S60_3rd&nbsp;+&nbsp;Carbide.C++.V2.0，请依次文件下载一下文件放到D:\SymbianTo...&nbsp;&nbsp;<a href='http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108393.html'>阅读全文</a><img src ="http://www.cppblog.com/AutomateProgram/aggbug/108393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-02-25 09:42 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过S60 3rd Edition SDK 看清S60 3.0系统</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108392.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Thu, 25 Feb 2010 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108392.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/108392.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/108392.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/108392.html</trackback:ping><description><![CDATA[原文地址
<p style="BORDER-BOTTOM: rgb(220,220,220) 1.5pt dotted; TEXT-ALIGN: left; BORDER-LEFT: medium none; PADDING-BOTTOM: 5pt; MARGIN-TOP: 0pt; PADDING-LEFT: 15pt; PADDING-RIGHT: 0pt; MARGIN-BOTTOM: 0pt; BACKGROUND: rgb(255,255,255); PADDING-TOP: 0pt" class=p0><span style="FONT-FAMILY: '微软雅黑'; BACKGROUND: rgb(255,255,255); COLOR: rgb(0,0,0); FONT-SIZE: 11pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">(http://blog.csdn.net/ydfok/archive/2007/07/11/1685256.aspx)</span><span style="FONT-FAMILY: '微软雅黑'; BACKGROUND: rgb(255,255,255); COLOR: rgb(0,0,0); FONT-SIZE: 11pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">今天下午下载了<font face="Times New Roman">S60&nbsp;3rd&nbsp;Edition&nbsp;SDK&nbsp;</font><font face=宋体>仔细看了下</font><font face="Times New Roman">sdk.</font><font face=宋体>把自己的一点认识跟大家分享一下</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">首先看看<font face="Times New Roman">S60&nbsp;3.0</font><font face=宋体>改变了什么</font><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;1.&nbsp;S60&nbsp;3.0<font face=宋体>的权限分为两大类：系统权限和用户权限。权限是针对资源访问的，其实大多数系统和用户资源的位置是公开的，只是并非所有资源都能访问或者说并非所有资源都想让用户通过应用去访问</font><font face="Times New Roman">.&nbsp;</font><font face=宋体>通过提供基本的安全通信协议</font><font face="Times New Roman">.</font><font face=宋体>平台安全性也可以支持提供数据保密性</font><font face="Times New Roman">.</font><font face=宋体>完整性和鉴权</font><font face="Times New Roman">.</font><font face=宋体>它还支持通过使用数字签名对可安装软件进行鉴权</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;2.<font face=宋体>新版</font><font face="Times New Roman">S60&nbsp;3rd&nbsp;Edition</font><font face=宋体>增强了多媒体及企业应用功能</font><font face="Times New Roman">.</font><font face=宋体>大彩色屏幕</font><font face="Times New Roman">(176x208</font><font face=宋体>标准、</font><font face="Times New Roman">240x320&nbsp;QVGA</font><font face=宋体>、</font><font face="Times New Roman">352x416</font><font face=宋体>双分辨率</font><font face="Times New Roman">)</font><font face=宋体>和各种输入键</font><font face="Times New Roman">(</font><font face=宋体>两个软键、五向导航键以及一些专用键</font><font face="Times New Roman">).</font><font face=宋体>单手使用和大彩色屏幕的原则也使得应用开发人员能够展现具有吸引力的内容并提供简便的导航。除了传统的</font><font face="Times New Roman">176x208</font><font face=宋体>纵向布局外，横向布局也支持双分辨率</font><font face="Times New Roman">(352x416)</font><font face=宋体>和</font><font face="Times New Roman">QVGA&nbsp;(240x320)</font><font face=宋体>模式</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3.S60&nbsp;3rd&nbsp;Edition&nbsp;SVG<font face=宋体>光栅化（</font><font face="Times New Roman">rasterizing</font><font face=宋体>）引擎支持</font><font face="Times New Roman">SVG&nbsp;Tiny&nbsp;1.1</font><font face=宋体>标准，还支持直线和填充不透明度及渐变色</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">关于第一个权限问题<font face="Times New Roman">.NOKIA</font><font face=宋体>论坛说程序和用户将被禁止访问文件系统</font><font face="Times New Roman">.</font><font face=宋体>在真机平台上下列文件夹没有权限是不能访问的</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">/sys/bin/<font face=宋体>文件夹－包括程序的可执行文件</font><font face="Times New Roman">(</font><font face=宋体>不能访问</font><font face="Times New Roman">)</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">/private/<font face=宋体>文件夹－包括程序的一些数据</font><font face="Times New Roman">(</font><font face=宋体>不能访问</font><font face="Times New Roman">)</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">/private/&lt;SID&gt;<font face=宋体>－这里</font><font face="Times New Roman">SID</font><font face=宋体>是一个程序</font><font face="Times New Roman">ID</font><font face=宋体>号</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">/resource/<font face=宋体>文件夹－包含的是共享文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">让我们一起看看<font face="Times New Roman">SDK</font><font face=宋体>里有什么内容</font><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Z<font face=宋体>盘</font><font face="Times New Roman">:</font><font face=宋体>分为</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1.&nbsp;ipdatatest&nbsp;<font face=宋体>包含一些配置文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2.&nbsp;private&nbsp;&nbsp;<font face=宋体>文件夹里面很多类似&nbsp;</font><font face="Times New Roman">101f4cd5&nbsp;&nbsp;&nbsp;101f6cfe</font><font face=宋体>这样的文件夹</font><font face="Times New Roman">.</font><font face=宋体>里面包含&nbsp;</font><font face="Times New Roman">backup_registration.xml.commondsy.ini</font><font face=宋体>之类的配置文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3.resource&nbsp;<font face=宋体>里面是共享的文件</font><font face="Times New Roman">.resource&nbsp;</font><font face=宋体>根目录有很多</font><font face="Times New Roman">aknnotpi.rsc</font><font face=宋体>这样的资源文件</font><font face="Times New Roman">.</font><font face=宋体>也有很多</font><font face="Times New Roman">apps.bootdata.fep.fonts.messaging.xml</font><font face=宋体>这些大家熟悉的文件夹</font><font face="Times New Roman">.</font><font face=宋体>安装程序后一些公共的文件就放在这里</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">4.smoketest&nbsp;<font face=宋体>里面是一些配置文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">5.sys<font face=宋体>包含</font><font face="Times New Roman">bin</font><font face=宋体>和</font><font face="Times New Roman">data</font><font face=宋体>文件夹</font><font face="Times New Roman">.bin/</font><font face=宋体>文件夹有程序的可执行文件和资源文件</font><font face="Times New Roman">RSC</font><font face=宋体>或链接库等</font><font face="Times New Roman">(</font><font face=宋体>不能访问</font><font face="Times New Roman">).&nbsp;data</font><font face=宋体>文件夹里有一些数据文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">6.system<font face=宋体>文件夹又包含</font><font face="Times New Roman">.apps.data.install.programs.sounds</font><font face=宋体>等文件夹</font><font face="Times New Roman">.</font><font face=宋体>这些文件夹跟现在的文件夹的内容差不多</font><font face="Times New Roman">.</font><font face=宋体>没有什么改变</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">有兄弟可能会问<font face="Times New Roman">.</font><font face=宋体>为什么</font><font face="Times New Roman">resource&nbsp;</font><font face=宋体>和</font><font face="Times New Roman">system</font><font face=宋体>都有</font><font face="Times New Roman">apps.data</font><font face=宋体>等文件夹</font><font face="Times New Roman">.</font><font face=宋体>这里就体现了</font><font face="Times New Roman">S60&nbsp;3.0</font><font face=宋体>的权限问题</font><font face="Times New Roman">.</font><font face=宋体>一个程序只能访问自己的文件夹而不能访问其他应用程序文件夹</font><font face="Times New Roman">.resource&nbsp;</font><font face=宋体>文件夹做为共享文件夹</font><font face="Times New Roman">.</font><font face=宋体>存放已安装程序的一些链接库等</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;S60&nbsp;3.0<font face=宋体>应用程序最大的改变是加入了数字签名对应用程序进行授权</font><font face="Times New Roman">.</font><font face=宋体>为什么要这样做</font><font face="Times New Roman">.NOKIA</font><font face=宋体>考虑到安全性的问题</font><font face="Times New Roman">.</font><font face=宋体>必须经过数字签名</font><font face="Times New Roman">.</font><font face=宋体>这点跟</font><font face="Times New Roman">SP</font><font face=宋体>系统上加入数字签名差不多</font><font face="Times New Roman">.</font><font face=宋体>从概念上来说</font><font face="Times New Roman">.</font><font face=宋体>是在这程序当中加了一道锁</font><font face="Times New Roman">.</font><font face=宋体>只有经过签名验证的应用程序</font><font face="Times New Roman">.</font><font face=宋体>才能打开这道锁</font><font face="Times New Roman">.</font><font face=宋体>才能运行手机上</font><font face="Times New Roman">.</font><font face=宋体>如果应用程序被修改过</font><font face="Times New Roman">.</font><font face=宋体>例如汉化或者破解</font><font face="Times New Roman">.</font><font face=宋体>或者使用了一些未经签名许可的敏感的</font><font face="Times New Roman">API.</font><font face=宋体>应用程序就不能在手机上执行</font><font face="Times New Roman">.</font><font face=宋体>在使用安装应用包上</font><font face="Times New Roman">.</font><font face=宋体>可以多次使用数字签名</font><font face="Times New Roman">.</font><font face=宋体>如果不修改这个内容又想通过数字认证鉴权</font><font face="Times New Roman">.</font><font face=宋体>达到破解目的</font><font face="Times New Roman">.</font><font face=宋体>这点在现在来说具有一定困难</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">S60&nbsp;3.0<font face=宋体>的应用程序变成了</font><font face="Times New Roman">EXE.</font><font face=宋体>打包后的文件也变成了</font><font face="Times New Roman">SISX.</font><font face=宋体>即是从以前的</font><font face="Times New Roman">SIS</font><font face=宋体>转变到</font><font face="Times New Roman">SISX.APP</font><font face=宋体>转变到</font><font face="Times New Roman">EXE.</font><font face=宋体>那么在编写程序和打包方面又有什么不同呢</font><font face="Times New Roman">.</font><font face=宋体>具体的改变又有那些呢</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1.<font face=宋体>首先应用程序入口点改变了</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2.S60&nbsp;BLD.INF&nbsp;<font face=宋体>工程文件的改变</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3.MMP<font face=宋体>文件的改变</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">4.<font face=宋体>应用程序&nbsp;</font><font face="Times New Roman">RSS&nbsp;</font><font face=宋体>资源文件的改变</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">5.<font face=宋体>添加了应用程序注册文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">6.<font face=宋体>增强了</font><font face="Times New Roman">ICON</font><font face=宋体>的编译</font><font face="Times New Roman">.</font><font face=宋体>加入了第三版的</font><font face="Times New Roman">MIF</font><font face=宋体>文件</font><font face="Times New Roman">.</font><font face=宋体>同时也支持旧版的</font><font face="Times New Roman">MBM</font><font face=宋体>文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">7.<font face=宋体>打包时增加了数字认证</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">有了这些改变后<font face="Times New Roman">.S60&nbsp;3.0</font><font face=宋体>系统的应用程序还支不支持</font><font face="Times New Roman">SIS</font><font face=宋体>文件格式呢？从论坛现有的</font><font face="Times New Roman">S6&nbsp;3.0</font><font face=宋体>平台的文件来看</font><font face="Times New Roman">.S60&nbsp;3.0</font><font face=宋体>平台是支持</font><font face="Times New Roman">SIS</font><font face=宋体>格式的</font><font face="Times New Roman">.</font><font face=宋体>其打包依旧通过</font><font face="Times New Roman">PKG</font><font face=宋体>文件</font><font face="Times New Roman">.</font><font face=宋体>下面来分析下</font><font face="Times New Roman">S60&nbsp;3.0&nbsp;</font><font face=宋体>自带</font><font face="Times New Roman">helloworld</font><font face=宋体>的</font><font face="Times New Roman">PKG</font><font face=宋体>文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;&nbsp;HelloWorldBasic_armv5.pkgPKG<font face=宋体>文件名</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;Language&nbsp;-&nbsp;standard&nbsp;language&nbsp;definitions</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&amp;EN<font face=宋体>定义语言文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;&nbsp;standard&nbsp;SIS&nbsp;file&nbsp;header</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">#{"HelloWorldBasic"},(0xA000017F),1,0,0<font face=宋体>软件名</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;Localised&nbsp;Vendor&nbsp;name</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">%{"Vendor-EN"}</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;Unique&nbsp;Vendor&nbsp;name</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">:"Vendor"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;Supports&nbsp;Series&nbsp;60&nbsp;v&nbsp;3.0</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">[0x101F7961],&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;{"Series60ProductID"}<font face=宋体>产品</font><font face="Times New Roman">ID</font><font face=宋体>和支持机型</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;Files&nbsp;to&nbsp;install<font face=宋体>程序安装文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"..\..\..\epoc32\release\armv5\urel\HelloWorldBasic.exe"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-"!:\sys\bin\HelloWorldBasic.exe"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"..\..\..\epoc32\data\z\resource\apps\HelloWorldBasic.rsc"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-"!:\resource\apps\HelloWorldBasic.rsc"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"..\..\..\epoc32\data\z\private\10003a3f\import\apps\HelloWorldBasic_reg.rsc"&nbsp;&nbsp;-"!:\private\10003a3f\import\apps\HelloWorldBasic_reg.rsc"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"..\..\..\epoc32\data\z\resource\apps\helloworldbasic_aif.mif"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-"!:\resource\apps\helloworldbasic_aif.mif"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"..\..\..\epoc32\winscw\c\private\A000017F\hello.txt"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-"!:\private\A000017F\hello.txt"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">;required&nbsp;for&nbsp;application&nbsp;to&nbsp;be&nbsp;covered&nbsp;by&nbsp;backup/restore&nbsp;facility&nbsp;S60&nbsp;3.0l<font face=宋体>多了这个备份和注册文件</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">"backup_registration.xml"&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-"!:\private\A000017F\backup_registration.xml"</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">通过分析上面的<font face="Times New Roman">PKG</font><font face=宋体>文件我们不难发现</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1.<font face=宋体>程序安装后的主目录从现在的</font><font face="Times New Roman">system\app\*.</font><font face=宋体>程序名变成了</font><font face="Times New Roman">\sys\bin</font><font face=宋体>文件夹</font><font face="Times New Roman">.</font><font face=宋体>二进制文件位于</font><font face="Times New Roman">\sys\bin</font><font face=宋体>目录中</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2.S60&nbsp;3.0<font face=宋体>依旧支持</font><font face="Times New Roman">RSC</font><font face=宋体>资源文件</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3.A000017F\hello.txt<font face=宋体>为程序</font><font face="Times New Roman">ID</font><font face=宋体>号</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">4.<font face=宋体>图标名称也由现在的</font><font face="Times New Roman">*.AIF</font><font face=宋体>变成了</font><font face="Times New Roman">&#215;_aif.mif</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">5.<font face=宋体>并且多了一个应用程序注册文件</font><font face="Times New Roman">backup_registration.xml</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">在创建<font face="Times New Roman">SISX</font><font face=宋体>文件前我们需要获取</font><font face="Times New Roman">R&amp;D</font><font face=宋体>证书以便为您的应用签名</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">第一个方法是购买一个<font face="Times New Roman">VeriSign&nbsp;ACS&nbsp;Publisher&nbsp;ID..</font><font face=宋体>获得</font><font face="Times New Roman">Developer&nbsp;Access&nbsp;Certificate</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">第二个方法是创建一个私钥和自签名证书&nbsp;<font face="Times New Roman">Makekeys&nbsp;</font><font face=宋体>工具可用于创建私钥和自签名证书</font><font face="Times New Roman">.</font><font face=宋体>工具我会在下面提供</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;那么我们来看一下<font face="Times New Roman">.SIS</font><font face=宋体>文件怎么加入数字签证变成</font><font face="Times New Roman">.</font><font face=宋体>先把上面的</font><font face="Times New Roman">PKG</font><font face=宋体>文件打包成</font><font face="Times New Roman">SIS</font><font face=宋体>文件后再运行</font><font face="Times New Roman">signsis</font><font face=宋体>命令并将</font><font face="Times New Roman">R&amp;D</font><font face=宋体>密钥和证书信息作为参数输入</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">MAKEKEYS<font face=宋体>创建私钥和自签名证书命令</font><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">makekeys&nbsp;-cert&nbsp;-dname&nbsp;"CN=Michael&nbsp;OR=Ltd&nbsp;CO=CN"&nbsp;MyApp.key&nbsp;MyApp.cer</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">用<font face="Times New Roman">signsis</font><font face=宋体>签署命令</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">SignSIS&nbsp;InternetEmail_v30_gcce.sis&nbsp;InternetEmail_v30_gcce.sis&nbsp;DevCert.cer&nbsp;Access.key&nbsp;3G365KEN</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">DevCert<font face=宋体>代表目标设备</font><font face="Times New Roman">.Access&nbsp;Key</font><font face=宋体>代表认证的私钥</font><font face="Times New Roman">.3G365KEN</font><font face=宋体>则是认证私钥文件的密码</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;那么<font face="Times New Roman">S60&nbsp;3.0&nbsp;</font><font face=宋体>平台除了这些变化外还有什么变化</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">最明显的变化就是分辨率的变化<font face="Times New Roman">.S60&nbsp;3.0</font><font face=宋体>有</font><font face="Times New Roman">176&nbsp;x&nbsp;208</font><font face=宋体>像素</font><font face="Times New Roman">.208&nbsp;x&nbsp;176</font><font face=宋体>像素</font><font face="Times New Roman">.240&nbsp;x&nbsp;320</font><font face=宋体>像素</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">.320&nbsp;x&nbsp;240<font face=宋体>像素</font><font face="Times New Roman">.352&nbsp;x&nbsp;416</font><font face=宋体>像素</font><font face="Times New Roman">.416&nbsp;x&nbsp;352</font><font face=宋体>像素</font><font face="Times New Roman">.</font><font face=宋体>在模拟器下大家可看到</font><font face="Times New Roman">SDK</font><font face=宋体>对各种分辨率的支持</font><font face="Times New Roman">.</font><font face=宋体>据大平洋某篇评测说以后的软件将根据分辨率自动调整</font><font face="Times New Roman">.</font><font face=宋体>相信以后的软件会拥有越来越好的兼容性</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">补充一下<font face="Times New Roman">.</font><font face=宋体>以后的汉化</font><font face="Times New Roman">.</font><font face=宋体>破解会不会更困难</font><font face="Times New Roman">.</font><font face=宋体>我不会破解只说下今天下午对</font><font face="Times New Roman">SDK</font><font face=宋体>内自带的</font><font face="Times New Roman">RSC</font><font face=宋体>的看法</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QUOTE:</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;通过图片可以看到现在的汉化软件完全兼容第三版的资源<font face="Times New Roman">.</font><font face=宋体>可进行修改等</font><font face="Times New Roman">.</font></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<!--endfragment--><!--endfragment-->
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/108392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-02-25 09:40 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/02/25/108392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>