﻿<?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>IT博客-Learn 3G</title><link>http://www.cnitblog.com/maolxu/</link><description>人生有很多条路可以选择，但有一条却永远不能，那就是放弃！！</description><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 03:14:41 GMT</lastBuildDate><pubDate>Tue, 05 May 2026 03:14:41 GMT</pubDate><ttl>60</ttl><item><title>Symbian C++游戏编程 （上）</title><link>http://www.cnitblog.com/maolxu/archive/2010/06/08/66527.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 08 Jun 2010 08:54:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/06/08/66527.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<p><font color=#38761d size=4><strong>2.5 其他<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>限制</strong></font><br>- 处理器的能力不是很强，图形处理器很少<br>- 算术处理器也少，最好不要用浮点运算，用整型代替。相似的，避免使用64位的整数。因为他们都要影响run-time的性能和内存消耗的开销<br>- 一些设备上只有有限的屏幕解析度，大小和色深<br>- 只能手机上的键盘的数目也是有限的<br><br><font color=#38761d><strong>2.6 应用程序开发：开发工具和过程</strong></font><br>N/A<br><br><font color=#38761d size=4><strong>3. S60 应用程序框架</strong></font><br>S60的UI框架（"Avkon"）扩展了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS的应用程序框架（&#8220;Uikon"）。典型的有如下几个部分组成：Application，Application Document， Application UI， Application View。<br><br>通常游戏程序还会有个game engine。通常的建议是要把game的逻辑和UI显示相分离，以便于从用，但是他们之间还是存在一定的耦合，因为UI要接受和相应用户的输入。<br><br>对于有多个screen的游戏有两种方法来做，第一就是用多个view来显示，第二是用一个view。后者如果game有很多的screen的话就会要设计一个复杂的状态机。通常我们会把游戏划分成多个逻辑上的view。<br><br><font color=#38761d size=4><strong>4. The Game Loop and Use of Timers</strong></font><br><font color=#0000ff><font color=#38761d size=4><strong>4.1 The Game Loop</strong></font><br><font color=#000000>几乎每个游戏都有个game loop，因为这是游戏代码最重要的一个部分。<br><br>典型的一个游戏循环就是一个事件处理方法，其周期性的被应用程序主view的定时器调用。事件处理句柄调用游戏engine更新游戏的状态和显示。<br></font><br></font><font size=3><font color=#0000ff><font color=#38761d size=4><strong>4.2 Timers</strong></font></font></font><br><font size=3><strong><font color=#0000ff>在</font><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a><font color=#0000ff>OS中，最缺乏的几项服务之一就是timing services，这里OS并不支持底层的timer interrupts，它只提供一个核心端的时间发生器，其最大的发生频率是64Hz，</font></strong>模拟器上，最大的tick rate是10Hz，这使得程序的测试更加烦琐。系统中的最大tick rate可以通过访问<em>UserHal::TickPeriod</em>来获得。<br><br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS v9.1之后的版本是real-time的，所以能提供一个更好的定时器。虽然标准的定时器还是1/64秒，但是你可以通过 User::AfterHighRes和RTimer::HighRes来获得更好的定时，其提供了1ms的定时。<br><br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS提供了三个定时器概念，定义在e32hal.h中，可以参见下面的图表：<br><img class=blogimg src="http://www.chinaeda.cn/upload/2010_01/100101000252254.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 small="0"><br><br>核心端的timer可以通过访问RTimer来获得，它是一个指向系统端服务的句柄。它提供了一个简单的API来发送三个不同的时间事件：<font color=#ff0000><strong>在一段给定时间后的事件，在一个给定时间上的事件以及an event which completes at a given fraction of a second.</strong></font>为了更方便的使用RTimer，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS提供了一个抽象的活动对象：CTimer，它封装了RTimer的使用，在上图中也能看出，CTimer中必定有RTimer的存在。<br><br>用户只需要从CTimer派生类即可，另外还需要重载RunL函数，它在一个请求被完成时进行调用。因为是非强占性的，所以在时间片上可能有延时，造成不准确，我们应该尽量减少RunL中代码运行的时间。此外我们还应该把处理时间片的活动对象的优先级提到最高，以防止其他对象切入。<br><br>在 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>OS中，提供了两个CTimer的派生类：CPeriodic和CHeartbeat，CPeriodic中，事件的间隔在 <strong>microseconds</strong>中，而CHeartbeat中，间隔在一秒的片段中，这定义在<strong><em>TTimerLockSpec</em></strong>枚举中。<strong>最小的时间片段是1/12 秒</strong>，CHeartbeat提供了一个方法来与系统时间同步，当有timer event遗漏时，它的回调函数Synchronize就会被调用，从而给应用程序一个途径采取修正措施。<br><strong><br><font color=#0000ff>定时器的优先级和AS的负荷影响定时器的准确性。不要在定时器事件之间把AS拖入到一个长期运行的计算中去；定时器中活动对象的优先级应该低点并且间隔要切合实际一点（比如：不要是1ms）。所有的这些都必须要考虑到，否则会产生ViewSrv11错误，当一个活动对象事件处理句柄霸占了线程AS循环和应用程序的ViewSrv致使AO不能及时的相应。</font></strong><br><br></font></p>
<p><font size=3></font>&nbsp;</p>
<font size=3>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</font></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-06-08 16:54 <a href="http://www.cnitblog.com/maolxu/archive/2010/06/08/66527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian C++游戏编程 （一）</title><link>http://www.cnitblog.com/maolxu/archive/2010/06/07/66513.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 07 Jun 2010 07:28:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/06/07/66513.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<p><strong><font color=#38761d size=4>1. 介绍<br>1.1 S60平台的游戏编程<br></font></strong>随着S60设备<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>的提高，在其上运行高质量的有些成为了可能。当然也同时存在一些挑战的地方就是游戏需要适应许多不同屏幕的能力。另外还有一些其他的限制如下：<br>- 被来电或是短信中断<br>- 限制电池的使用，要处理突然断电的情况<br>- 内存大小受限<br>- 显示屏幕和键盘大小的限制<br>- 相对于PC而言有限的CPU处理能力<br><font color=#38761d><strong><font size=4>1.2 Purpose and scope<br></font></strong><font color=#000000 size=3>N/A</font></font><br><br><font color=#38761d size=4><strong>2. S60 Platform-Specific Considerations</strong></font><br><font style="BACKGROUND-COLOR: rgb(255,255,255)" color=#38761d size=4><strong>2.1 被系统事件中断</strong></font><br><font color=#0000ff><font color=#000000>当一个游戏在运行的时候，如果系统事件发生了，用户应该被通知到。所以开发人员需要考虑到游戏被中断的情况。<br><br></font><strong>所有的系统端事件都有这样的一个通用性质，那就是可以被一个应用程序所捕获。</strong></font>当一个系统事件发生时，最前面的应用程序会失去焦点。这会导致该应用程序user interface类（CAknAppUi）的<strong><em>HandleForegroundEventL</em></strong>函数被调用。如果不考虑处理这个函数，应用程序可以处理相关的动作，如暂停程序。<br><br><font color=#38761d size=4><strong>2.2 电池耗尽和供电失败<br></strong><font color=#000000 size=3>应用程序需要注意电池的消耗。如果一个时间段没有任何操作的话，应该进入休眠模式从而节约用电。如果一个游戏暂停了，那么所有的timer和loops应该停止。<font color=#0000ff><strong>如果在一个特定的时间段内，没有任何操作的话，系统的定时器会触发一个时间，应用程序可以通过RTimer::Inactivity方法来获得。<br><br></strong></font>为了处理突然掉电的情况，一个游戏应该每隔一个时间保存一下数据，以便在重启的时候恢复，至少应该保存两份数据，因为很可能在你保存数据的时候会掉电。<br></font><strong><br>2.3 Screen Resolution<br></strong><font color=#000000 size=3>S60手机有不同的屏幕分辨率</font><font color=#000000 size=3>。S60的UI库，Avkon能支持不同的屏幕分辨率，然而通常情况下，游戏里面的控件都是自己描画的，所以需要我们自己根据不同的屏幕分辨率来调整，而不能hard-code。</font><strong><br><br>2.4 Memory<br></strong></font><font color=#0000ff><font color=#000000>在S60第三版之前的许多S60设备上最多只有8MB的内存。虽然S60第三版的设备的RAM要多些，但是相对于PC设备来说还是很少的，所以内存管理是非常重要的。<br><br>除了RAM外，设备还有ROM来存储那些预安装的软件，一个用户数据区域来存储已经安装的应用程序和系统中可写的和连续的数据。<br><br></font><strong>应用程序需要注意内存的节约，这不仅包括在运行时内存的使用，还包括编译后代码的大小，总之，在处理RAM使用中最重要的一条原则就是，我们应该尽早的释放这些已分配的内存，每一步都要提醒自己这样做了吗。</strong></font>在模拟器上，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS提供了一个宏，如果在程序退出的时候没有释放掉分配的内存，那么这个宏会panic掉应用程序。在目标机器上，OS上的核心会保持跟踪每个线程的内存，并且在程序退出后可以重新释放它们。这就保证了当一个应用程序退出后，所有的内存都会被释放掉。如果他们没有被正确的释放掉应有资源，那结果是一定数量的资源会被保存在系统中。<br><br><strong><font color=#0000ff>在</font><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a><font color=#0000ff> OS中，每个线程都有它自己的内存堆栈，在线程已经运行时，这个堆栈大小是不可以被改变的。</font></strong>在S60中缺省的堆栈大小仅有8KB，所以在使用时要格外的小心。项目的栈大小可以通过在mmp文件中修改epocstacksize这个标记位设定。<br><br>这里要注意的是，在模拟器上运行时，是没有这个堆栈大小限制的，因为它是根据<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>来运行的，这就是程序每个步骤都应该在<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>（手机）上试试。大部分的堆栈溢出是由堆栈里使用大栈描述符所引起的，这种情况可以通过在堆上分配描述符来避免。<font color=#0000ff><strong>注意递归的使用是很耗费内存的，</strong></font>如果递归程序是不可避免的，那我们每次传入的参数以及部分变量都应该最小化，以防止溢出。<br><br>为了减少编译后代码的大小，我们应该遵循如下的方针：）<br><strong>1、除非必要，否则不要导出method<br>2、不要生成没有必要的虚函数（有附加的虚函数表，增加了体积）<br>3、不要过分的使用TRAP捕捉陷阱<br>4、避免复制代码<br>5、找到可以分解的函数<br>6、使用一般的控制和组件</strong><br><br>对TRAP宏的使用要小心，并不是说避免过度使用他们是因为他们会增长代码大小。在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> os中由应用程序框架已经提供了不少的TRAP，我们没有必要在到处放置我们自己的TRAP了：）<br><br>在游戏中，因为会大量使用位图，所以对内存的消耗特别大，<font color=#0000ff><strong>最有效的方法不是减少位图的使用，而是降低他们的颜色深度（colour depth）</strong>，</font><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>支持24位位图，一共可以处理16777216种颜色，但实际的色彩大小是根据<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>来说的，我们应该尽量以目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>所能支持的色彩量为限度，举例来说，一个sprite，使用8bit colour就应该能满足大部分sprite的需要了，而mask更应该只使用1bit的位图！<br></p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-06-07 15:28 <a href="http://www.cnitblog.com/maolxu/archive/2010/06/07/66513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian入门系列 -- document对象分析</title><link>http://www.cnitblog.com/maolxu/archive/2010/06/01/66467.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 01 Jun 2010 08:26:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/06/01/66467.html</guid><description><![CDATA[<div class=c><span style="FONT-SIZE: 14px">【主要作用】
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>1) 是app的data model。<br>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>2) 在基于文件的app中，document提供了对于文件的访问（store/restore）<br>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>3) 负责创建AppUI，从而可以提供修改document的基础，CreateAppUiL()负责创建application的appUI对象。</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>实际上，document起到了一个中间层（intermediate layer）的作用。负责在appui和app model（engine）以及 file之间建立联系。</p>
<p><br>『AppUI』<br>----------------------- 『Document』<br>|<br>『model』 &lt;-&gt; 『file』</p>
<p>&nbsp;&nbsp; <strong>【Document的管理】</strong></p>
<p>1) OpenFileL()</p>
<p>这个函数的功能和app的资源文件中的TBUF段（segment）密切相关。</p>
<p>RESOURCE TBUF r_default_document_name<br>{<br>buf="";<br>}</p>
<p>这个segment决定了application关联的文件名。这里的文件名连同路径就作为参数传递给了</p>
<p>OpenFileL() 函数。这就使得application在启动的时候能够调用缺省的file，如果这个segment是</p>
<p>空的，那么缺省的document的名字和application的basename相同。这里需要注意的是series60只</p>
<p>允许存在一个缺省的file。</p>
<p>这个函数的返回值是CFileStore*，这是返回给application framework的指针，以方便</p>
<p>application framework把它传递给其他函数。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp; 【注】</strong></p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>注意OpenFileL() 需要三个参数，其中文件名(TDesC&amp; aFilename)和file server session</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>参数(RFs&amp; aFs) 应当是由application framework自动创建的。但是另外一个参数怎么确定的呢？</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>2) NewDocumentL()</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>这个函数是由application framework来调用，用于初始化一个default document file。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> 【注?】</strong></p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>这个函数是不是在资源文件没有文件名的情况下调用的？如果是这样，那么这个函数应当在OpenFileL()</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>之前被调用？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp; 【解释】</strong></p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>我在Document函数里面重载了函数NewDocumentL()和OpenFileL()，并分别加上了断点跟踪调试。发现：</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>(#) 如果在资源文件中没有文件名的话，那么这两个函数都不执行。</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>(#) 如果在资源文件存在文件名的话，那么首先执行的是OpenFileL()函数，但是这个时候的aOpen参数值是0，表明</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>文件不存在或者文件没有打开。那么接下来调用NewDocumentL()，这个函数负责创建一个新的document file。</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>接下来会调用document类的StoreL()函数。</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>(#) 在晚上上述的步骤之后，再重新运行这个app，那么启动的时候会调用OpenFileL()函数，这个时候aOpen参数值是1，</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>表明文件存在，那么接下来就调用ReStoreL()函数对文件进行读写。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp; 【对相关file的管理】</strong></p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>document类提供了两个函数对文件的mode访问和修改。AppFileMode()和SetAppFileMode()。</p>
<p><br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【对相关file的访问存取】</strong></p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>document类提供了如下函数对file进行访问：<br>SaveL()；StoreL()；RestoreL()；ExternalizeL()；PrintL()；</p>
<p>其中SaveL()会在app退出的时候被调用，用于保存app相关的数据到file中去。</p>
<p>SaveL() --&gt; StoreL();</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; </strong>而RestoreL()是在app启动的时候调用的，负责把文件的信息保存在document相关的model（engine）中去。</p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-06-01 16:26 <a href="http://www.cnitblog.com/maolxu/archive/2010/06/01/66467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian 开发进阶-配置Symbian WINS Emulator</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/25/66352.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 25 May 2010 06:39:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/25/66352.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">随着</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备的快速增长</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">,</span><span style="FONT-SIZE: 12pt; COLOR: #000000">越来越多不同配置的</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备开始在市场上出现</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</span><span style="FONT-SIZE: 12pt; COLOR: #000000">这对于个人开发者和小公司来说</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">,</span><span style="FONT-SIZE: 12pt; COLOR: #000000">在不同配置的</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备上进行测试就成了一个很浪费时间的工作</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</span><span style="FONT-SIZE: 12pt; COLOR: #000000">精确的模拟不同</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备的配置也就显得尤为重要了</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">一个重要的模拟器配置文件</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(epoc.ini),</span><span style="FONT-SIZE: 12pt; COLOR: #000000">它的位置在</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
<div>
<table class=" FCK__ShowTableBorders" style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 484px">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
            <p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">%EPOCROOT%\epoc32\data\.</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">我们将在下面的文章中来一起了解它是如何配置磁盘和内存的</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif">. </span></p>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">驱动器配置</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"> </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">模拟器将在</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">PC</span><span style="FONT-SIZE: 12pt; COLOR: #000000">文件系统之上映射</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></span><span style="FONT-SIZE: 12pt; COLOR: #000000">平台文件系统</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">两个默认驱动器</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">: C:(NS60</span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备上的闪存文件系统</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">) </span></p>
<p style="MARGIN-LEFT: 140px; TEXT-INDENT: 28px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Z:(</span><span style="FONT-SIZE: 12pt; COLOR: #000000">设备</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">ROM) </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">这两个驱动器的默认路径为</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">: </span></p>
<div>
<table class=" FCK__ShowTableBorders" style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 236px">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">C: = %EPOCROOT%\epoc32\wins\c </span></p>
            <p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">Z: =%EPOCROOT%\epoc32\data\z+%EPOCROOT%\epoc32\release\wins\udeb\z</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">这里我默认设定模拟一个</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">MMC</span><span style="FONT-SIZE: 12pt; COLOR: #000000">卡</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
<div>
<table class=" FCK__ShowTableBorders" style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 320px">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">_EPOC_DRIVE_D c:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\6.1\Series60\epoc32\wins\d </span></p>
            <p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">_EPOC_DRIVE_E c:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\6.1\Series60\epoc32\wins\e</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">另一个有趣的设定是把</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">PC</span><span style="FONT-SIZE: 12pt; COLOR: #000000">的软驱模拟为</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">MMC</span><span style="FONT-SIZE: 12pt; COLOR: #000000">驱动器</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">你将可以模拟</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">MMC</span><span style="FONT-SIZE: 12pt; COLOR: #000000">卡是否插入的状态而不必重新配置模拟器</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
<div>
<table class=" FCK__ShowTableBorders" style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 320px">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">_EPOC_DRIVE_D c:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\6.1\Series60\epoc32\wins\d </span></p>
            <p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">_EPOC_DRIVE_E a:</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">内存配置</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Epoc.ini</span><span style="FONT-SIZE: 12pt; COLOR: #000000">文件也可以用来定义设备内存的大小</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</span><span style="FONT-SIZE: 12pt; COLOR: #000000">这可以通过使用</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">MegabytesOfFreeMemor</span><span style="FONT-SIZE: 12pt; COLOR: #000000">关键字来完成</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
<div>
<table class=" FCK__ShowTableBorders" style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 368px">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">// 解析epoc.ini </span></p>
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">// 模拟16MB内存设备 </span></p>
            <p style="TEXT-ALIGN: left"><span style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">// (考虑到系统运行需要1MB内存,因而定义为15) </span></p>
            <p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif">MegabytesOfFreeMemory 15</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000">在</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">NS60</span><span style="FONT-SIZE: 12pt; COLOR: #000000">的</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">SDK</span><span style="FONT-SIZE: 12pt; COLOR: #000000">上</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">,</span><span style="FONT-SIZE: 12pt; COLOR: #000000">默认值为</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">16MB,</span><span style="FONT-SIZE: 12pt; COLOR: #000000">如果运行出错</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">,</span><span style="FONT-SIZE: 12pt; COLOR: #000000">则模拟器将会把</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">64MB</span><span style="FONT-SIZE: 12pt; COLOR: #000000">设为默认值</span><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</span></p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span>&nbsp;</p>
<p style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></span>&nbsp;</p>
<span style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-25 14:39 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/25/66352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian入门系列 -- framework</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/24/66295.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 24 May 2010 02:21:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/24/66295.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS之上的MMI编程和MFC类似，都是有个application framework，用户需要的就是在这个基础之上，对类进行继承，对函数进行重载，而framework完成了很多和系统进行交互的工作。
<p>&nbsp;&nbsp;&nbsp;&nbsp; This is the second document . on my opinion, there are same a little between MFC and <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS .They all own a application framework on their basic OS. Based on such framework, user only need to make their own derived class ,and reload the virtual functions. and the framework can help u hanle most work interacting with the OS.</p>
<p><br>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br>这是文档中关于编译和运行的资料，我懒得翻译了。还有结合我开发中的问题<br>做了补充。<br>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. abld是利用项目文件（appname.mmp)进行编译的，所以，在你的mmp文件改动过后，一定要利用<br>abld makefile vc6<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重新生成VC工程文件，然后才能够利用VC进行app的编译，否则会出错。<br>(手工修改VC的编译、连接设置不起作用，不知为何？）<br></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、编译和运行<br></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Building and running the examples<br>This section explains how to build and run the SDK example applications. All the applications are built and run in the same way. The applications can be built to run on the <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS emulator, or the target device.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Building for the <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS emulator<br>The SDK and the example applications should be installed.<br>To build an application, do the following:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Create the abld file.<br>In a command window, go into the application''''s top level folder (the one which contains the bld.inf file) e.g. \animation\gui\group and enter the following command:<br>bldmake bldfiles<br>This will create the abld.bat file in the current directory.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Create the Wins build files and build the application.<br>In the application''''s top level folder enter the following command:<br>abld build wins udeb<br>This will create the necessary build files and build the application, including any resource files required. This stage may produce warnings. If it produces errors, a DLL component may not have had its exports frozen. Perform step 3, below.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. If the application has a DLL component, freeze the exports.<br>If an application contains a DLL component this step must be performed, otherwise it can be skipped. In the application''''s top level folder enter the following command：<br>abld freeze<br>This will ensure that the exports are frozen. Then enter the following command (repeated from step 2)：<br>abld build wins udeb<br>This will build against the newly frozen interface..<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. Running the application on the emulator<br>To run the application on the emulator, carry out the following steps:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1． Run the emulator.<br>From a command window, run the command<br>Epoc<br>to launch the debug emulator, or<br>epoc -rel<br>to launch the release emulator. The emulator window will appear.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2． Find the application folder.<br>When the emulator has started, a set of applications and folders will appear. Find the Other folder.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3． Run the application.<br>Select the Other folder, and then select the relevant application icon. This will run the application.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. Running the application from Visual C++<br>The emulator can also be run from Microsoft Visual C++. This can be useful when modifying or debugging the application.<br> Create the Visual C++ workspace and project files.<br>In the application''''s top level folder enter the following command：<br>abld makefile vc6<br>This will create the Visual C++ project files in a subdirectory of the %EPOCROOT%epoc32\Build'''' directory, where %EPOCROOT% is the pathname of the emulator root; e.g. \<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\6.0\NokiaCPP\<br>（在我使用的siemens SX1中目录为Q:\Siemens\SX1\bin ）<br> Run Microsoft Visual C++ and open the workspace file<br>The workspace file a pathname of the following form:<br>%EPOCROOT%Epoc32\Build\ApplicationPathname\Group\ApplicationName\Wins\ApplicationName.DSW<br>where:<br>%EPOCROOT% is the pathname of the emulator root; e.g. \<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\6.0\NokiaCPP\ （在我使用的siemens SX1中目录为Q:\Siemens\SX1\bin ）<br>ApplicationPathname is the pathname of the example application folder; e.g. \Examples\animation<br>ApplicationName is the name of the example application. e.g. animation<br>So the whole pathname could be, e.g.<br>\Epoc32\Build\Examples\animation\Group\animation\Wins\animation.DSW<br> Select the Execute item from the Build menu.<br>When the ''''Executable for Debug Session'''' dialog box appears press the command button in the right of the dialog box and select browse from the pop-up menu. Using the browse dialog select the file %EPOCROOT%epoc32\release\wins\udeb\epoc.exe. The emulator will run. You only need to do this once. When you subsequently select execute for this application, the emulator will automatically run.<br>5 Building for the target device<br>The SDK and the example applications should be installed.<br>To build the applications, do the following:<br>5.1 Create the abld file.<br>Go into the application''''s top level folder (the one which contains the bld.inf file) e.g. ''''\animation\gui\group'''' and enter the following command:<br>bldmake bldfiles<br>This will create the abld.bat file in the current directory.<br>5.2 Create the target build files and build the application.<br>In the application''''s top level folder enter one of the following commands, depending upon whether you wish to target the <a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>I or THUMB instructions sets:<br>abld build <a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i urel<br>abld build thumb urel<br>This will create the necessary build files and build the application, including any resource files required. This stage may produce warnings. If it produces errors, a DLL component may not have had its exports frozen. Perform stage 3, below.<br>5.3 If the application has a DLL component, freeze the exports.<br>If an application contains a DLL component this step must be performed, otherwise<br>it can be skipped. In the application''''s top level folder enter the following command:<br>abld freeze<br>This will ensure that the exports are frozen. Then enter the following command (repeated from step 2):<br>abld build <a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i urel<br>abld build thumb urel<br>This will build against the newly frozen interface.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-24 10:21 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/24/66295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 （四）</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/21/66265.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 21 May 2010 07:30:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/21/66265.html</guid><description><![CDATA[<span style="FONT-SIZE: 14px">&nbsp;
<p><font color=#000000 size=4><strong><a title="" href="http://www.chinaeda.cn/list.aspx?cid=100" target=_self><font size=4><strong><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a></strong></font></a>游戏编程入门 （四）图形显示</strong></font>&nbsp;</p>
<h2><font size=4><font face=Arial>4.1 Window, Graphics Context</font>和<font face=Arial>Graphics Device</font></font></h2>
<h3><font size=5>4.1.1 Window</font></h3>
<p>在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 中，所有的绘图都是在窗口中进行的，窗口是与系统进行交互的基本单位。我们在进行绘图前，首先要声明一个窗口：</p>
<p align=center>CreateWindowL()；</p>
<p>然后通过SetRect（）来设置窗口的大小。</p>
<p align=center>SetRect(aRect);</p>
<p>之后我们就可以进行绘图工作了。</p>
<h3>4.1.2 Graphics Context</h3>
<p>在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> 系统中，所有的绘图工作都是通过Graphics Context完成的。其中包括绘制点、绘制矩形和绘制文本等。所有的Graphics Context都由CGraphicsContent类派生。</p>
<p>CGraphicsContent类包括的特性有：</p>
<p>画笔（Pen）：表示当前Graphics Context所有要绘制的线的绘图模式，包括颜色、宽度、样式等，可以通过SetPenColor(), SetPenSize(), SetPenStyle()等方法进行设置。</p>
<p>刷子（Brush）：表示当前Graphics Context用以填充的绘图模式，包括填充颜色，样式、背景色等，可通过SetBrushColor(), SetBrushOrigin(), SetBrushStyle()，UseBrushPattern(), DiscardBrushPattern()等方法进行设置。</p>
<p>字体（Font）：表示Graphics Contex当前所使用绘制文本的字体，使用UseFont()，DiscardFont()方法来设置或取消字体。</p>
<p>位置（Position）：表示Graphics Contex的当前位置。可以通过MoveBy(), MoveTo()等方法来改变当前位置。</p>
<p>原点 (Origin)：定义了相对于设备的原点的偏移量，默认值为（0，0），可以通过SetOrigin()来改变。</p>
<p>剪辑（Clipping）：定义了需要进行裁切的区域，通过SetClippingRect()，CancelClippingRect()方法进行设置或取消裁切区域。</p>
<h3>4.1.3 Graphics Device</h3>
<p>在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>系统中，我们通过CGraphicsDevice实现Graphics Device，他指定了我们要操作的具体设备类的接口。</p>
<h2><font size=4><font face=Arial>4.2 </font>基本绘图函数的使用</font></h2>
<p>设置好CGraphicsContent后，我们就可以通过调用相关方法在窗口中绘制图形。</p>
<h3>4.2.1文本：</h3>
<p><strong>void DrawText(const TDesC&amp; aText,const TPoint&amp; aPosition)</strong></p>
<p><strong>void DrawText(const TDesC&amp; aText,const TRect&amp; aBox,TInt aBaselineOffset, TTextAlign aAlignment=ELeft,TInt aLeftMargin=0)</strong></p>
<p>其中第一个直接在窗口中绘制文本，其中aText给出来要绘制的文本内容，aPosition制定了要绘制文本的起始位置。</p>
<p>第二个在绘制文本的同时，还要以给定的<font face=宋体><code>aBox</code><code>绘制一个矩形外框。aAlignment参数指定了文本的对齐方向，默认为左对齐；aLeftMargin指定了间隔距离，默认值为0。</code></font></p>
<p><code><font face=宋体>由于<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>系统的内存受限制，所以，没有使用的字体系统是不会调入内存的，因此我们在绘制文本前，应该首先使用UseFont()设置系统的字体：</font></code></p>
<p><code><strong><font face=宋体>void UseFont(const CFont* aFont)</font></strong></code></p>
<p><code><font face=宋体>这样系统会将字体调入内存中。</font></code></p>
<p><code><font face=宋体>在我们不使用这个字体以后，为了节省内存，要使用DiscardFont()释放掉内存中的字体。</font></code></p>
<p><code><strong><font face=宋体>void DiscardFont()</font></strong></code></p>
<h3>4.2.2点：</h3>
<p align=center>我们通过Plot（）来绘制一个单独的点。点的绘制模式与当前的画笔（Pen）设置相同。<strong>void Plot(const TPoint&amp; aPoint)</strong></p>
<p>当画笔的宽度大于一个像素的时候，系统会以aPoint为圆心，画笔的宽度为直径绘制一个圆，并用画笔的颜色填充这个圆。</p>
<h3>4.2.3线：</h3>
<p>绘制直线的方法有DrawLine()、 DrawLineBy()、 DrawLineTo()和DrawPolyLine()、DrawArc()，绘制模式与当前的画笔（Pen）设置相同。</p>
<p align=center><strong>void DrawLine(const TPoint&amp; aPoint1,const TPoint&amp; aPoint2)</strong></p>
<p>DrawLine（）在aPoint1和aPonit2之间绘制一条直线。</p>
<p align=center><strong>void DrawLineTo(const TPoint&amp; aPoint)</strong></p>
<p>DrawLineTo（）从当前点向aPoint绘制一条直线。</p>
<p align=center><strong>void DrawLineBy(const TPoint&amp; aVector)</strong></p>
<p>DrawLineBy（）从当前点向相对当前点位置为aVector的点绘制一条直线。</p>
<p align=center><strong>void DrawPolyLine(const CArrayFix&lt;TPoint&gt;* aPointList)</strong></p>
<p>DrawPolyLine（）根据给定的位置数组从第一个点开始向第二个点绘制直线，然后以第二个点为起始点向第三个点绘制直线。。。。。。直到最后一个点。</p>
<p>在这里需要注意的一点是，在绘制直线的时候，系统并不绘制直线的最后一点，如果我们希望绘制一条包括最后一点的直线，我们可以使用上边的Plot（）方法绘制最后一个点。</p>
<h3>4.2.4图形：</h3>
<p>我们可以使用系统提供的方法直接绘制五种简单图形，分别是矩形（rectangle）、圆角矩形（rounded rectangle）、多边形（polygon）、椭圆形（ellipse）和饼型（pie slice）。绘制模式和填充模式与当前的画笔（Pen）、刷子（Brush）设置相同</p>
<p>矩形：</p>
<p align=center><strong>void DrawRect(const TRect&amp; aRect)</strong></p>
<p>DrawRect（）在屏幕上根据给定的aRect绘制矩形。</p>
<p>圆角矩形：</p>
<p align=center><strong>void DrawRoundRect(const TRect&amp; aRect,const TSize&amp; aCornerSize)</strong></p>
<p>DrawRoundRect（）在屏幕上根据给定的aRect绘制矩形，并根据给定的aCornerSize确定圆角的直径。</p>
<p>多边形：</p>
<p align=center><strong>TInt DrawPolygon(const CArrayFix&lt;TPoint&gt;* aPointList,TFillRule aFillRule=EAlternate)</strong></p>
<p align=center><strong>TInt DrawPolygon(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule=EAlternate)</strong></p>
<p>DrawPolygon（）根据给定的点集aPointList按顺序连接并按照aFillRule规则填充多边形。</p>
<p>椭圆形：</p>
<p align=center><strong>void DrawEllipse(const TRect&amp; aRect)</strong></p>
<p>DrawEllipse（）在给定的aRect区域中绘制椭圆形。如果给定的区域是正方形，那么将绘制出圆形。</p>
<p>饼形：</p>
<p align=center><strong>void DrawPie(const TRect&amp; aRect,const TPoint&amp; aStart,const TPoint&amp; aEnd)</strong></p>
<p>DrawPie（）通过给定的起始点aStart和结束点aEnd在由aRect形成的椭圆内截取相应的饼型区域。</p>
<h2><font size=4><font face=Arial>4.3 Bmp</font>文件的读取和显示</font></h2>
<h3><font size=5>4.3.1读取：</font></h3>
<p>首先 我们定义要读取的位图所在位置：</p>
<p>_LIT (KMultiBitmapFilename,"\\system\\apps\\graphics\\images.mbm");</p>
<p>其中images.mdm是我们的位图文件经过压缩打包的结果，是一个多位图文件。我们要在.mmp文件中作如下定义：</p>
<p>START BITMAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; images.mbm</p>
<p>HEADER</p>
<p>TARGETPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \system\apps\graphics</p>
<p>SOURCEPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\bitmaps</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c12&nbsp; image1.bmp</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c12&nbsp; image2.bmp</p>
<p>END</p>
<p>系统产生一个位图头文件.mbg，这个头文件提供了一个访问位图的ID。例如，在Epoc32\include中的IMAGES.mbg文件包含如下内容：</p>
<p>enum TMbmImages{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMbmImagesImage1,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMbmImagesImage2,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p>
<p>接下来我们定义:</p>
<p>CFbsBitmap* iImage1;</p>
<p>CFbsBitmap* iImage2;</p>
<p>然后我们就可以将mdm中的位图文件读取出来：</p>
<p>iImage1 = new (ELeave) CFbsBitmap();</p>
<p>CleanupStack::PushL(iImage1);</p>
<p>TInt loadException = iImage1 -&gt;Load(KMultiBitmapFilename,EMbmImagesImage1);</p>
<p>User::LeaveIfError(loadException);</p>
<p>CleanupStack::Pop(iImage1);</p>
<h3><font size=5><font size=4>4.3.2显示</font>：</font></h3>
<p>通过使用DrawBitmap()方法，可以将已经读取或绘制好的位图显示在窗口中。</p>
<p align=center><strong>void DrawBitmap(const TPoint&amp; aTopLeft,const CFbsBitmap* aSource)</strong></p>
<p>这里，aTopLeft指定了要绘制的位图的左上角坐标，aSource给出了要绘制的位图的内容。</p>
<p align=center><strong>void DrawBitmap(const TRect&amp; aDestRect,const CFbsBitmap* aSource)</strong></p>
<p>将给出的位图aSource绘制在指定的矩形区域aDestRect中。</p>
<p align=center><strong>void DrawBitmap(const TRect&amp; aDestRect,const CFbsBitmap* aSource,const TRect&amp; aSourceRect)</strong></p>
<p>在给出的位图aSource中截取aSourceRect区域，将其内容绘制在指定的矩形区域aDestRect中。</p>
<h2><font size=4><font face=Arial>4.4 </font>像素级处理</font></h2>
<p>可以通过使用TBitmapUtil类的一些方法对位图进行像素级的处理。包括：</p>
<p><strong>void Begin(const TPoint&amp; aPosition)</strong>：设置当前要处理的像素位置，并锁定堆。</p>
<p><strong>void End()</strong>：解除对堆的锁定。</p>
<p><strong>void SetPos(const TPoint&amp; aPosition)</strong>：改变当前像素位置至aPosition。</p>
<p><strong>void IncXPos()</strong>：将当前的X坐标自增1。</p>
<p><strong>void DecXPos()</strong>：将当前的X坐标自减1。</p>
<p><strong>void IncYPos()</strong>：将当前的Y坐标自增1。</p>
<p><strong>void DecYPos()</strong>：将当前的Y坐标自减1。</p>
<p><strong>TUint32 GetPixel() const</strong>：获取当前像素的RGB值。</p>
<p><strong>void SetPixel(TUint32 aValue)</strong>：设置当前像素的RGB值。</p>
<p>下面我们通过将一个位图反转后写入另一张位图中的操作来说明TBitmapUtil类的使用方法。</p>
<p>利用前面已经生成并读取的位图：CFbsBitmap* iImage1和CFbsBitmap* iImage2。这里iImage2的长宽均大于iImage1，我们将iImage1反转装入iImage2中</p>
<p>首先关联要操作的位图：</p>
<p>TBitmapUtil bitmap1Util(iBitmap1);</p>
<p>TBitmapUtil bitmap2Util(iBitmap2);</p>
<p>&nbsp;</p>
<p>接下来开始对位图操作，并设置初始点为（0，0）：</p>
<p>bitmap1Util.Begin(TPoint(0,0)); </p>
<p>bitmap2Util.Begin(TPoint(0,0));</p>
<p>&nbsp;</p>
<p>下面从iBitmap1逐像素读取，并写入iBitmap2中：</p>
<p>TSize inSize = iBitmap1-&gt;SizeInPixels();</p>
<p>TInt xPos;</p>
<p>for (TInt yPos=0;yPos&lt;inSize.iHeight;yPos++)</p>
<p>{</p>
<p>&nbsp;bitmap1Util.SetPos(TPoint(0,yPos));</p>
<p>&nbsp;bitmap2Util.SetPos(TPoint(yPos,0));</p>
<p>&nbsp;for (xPos=0;xPos&lt;inSize.iWidth;xPos++) </p>
<p>&nbsp;{</p>
<p>&nbsp; bitmap2Util.SetPixel(bitmap1Util);</p>
<p>&nbsp; bitmap1Util.IncXPos();</p>
<p>&nbsp; bitmap2Util.IncYPos();</p>
<p>&nbsp;}</p>
<p>}</p>
<p>&nbsp;</p>
<p>最后结束操作，清理堆栈</p>
<p>bitmap1Util.End();</p>
<p>bitmap2Util.End();</p>
<p>&nbsp;</p>
<p>这样，我们就完成了将iImage1反转并写入iImage2中的工作。</p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</span>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-21 15:30 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/21/66265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 （三）</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/19/66210.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Wed, 19 May 2010 06:07:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/19/66210.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<h2><font face=Arial>3.1 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a></font>应用程序类型介绍</h2>
<p><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 中编译的二进制代码由三种目标类型，EXE、APP和DLL。</p>
<h2><font face=Arial>3.2 EXE</font>程序的开发</h2>
<p>当我们的应用程序并不需要用户界面，只需要使用一个单独进程的时候，我们可以创建.EXE 程序。.EXE程序包含一个主入口E32main()，当系统通过E32main()启动的时候，系统会创建新的进程，并在此进程中创建新的线程。在创建EXE 程序时，我们需要在.mmp文件中将程序的TARGET指定为 EXE 。EXE通常是服务端或命令行程序，通常隐蔽的运行，他没有GUI，不能直接从主菜单运行。</p>
<p>下面是一个最基本的控制台应用程序的MMP文件：</p>
<p align=left>target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.exe</p>
<p align=left>targettype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXE</p>
<p align=left>UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x100039CE 0x10005B91</p>
<p align=left>TARGETPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \system\apps\Console</p>
<p align=left>sourcepath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\src</p>
<p align=left>userinclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\in</p>
<p align=left>systeminclude&nbsp;&nbsp;&nbsp; \EPOC32\INCLUDE</p>
<p align=left>systeminclude&nbsp;&nbsp;&nbsp; \EPOC32\INCLUDE\LIBC</p>
<p align=left>source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e32main.cpp Console.cpp</p>
<p align=left>library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; euser.lib</p>
<p>我们编译程序后，会生成Console.exe。将程序打包安装后，我们无法直接运行此程序。运行此程序可以有两种方法，第一是通过其他程序的调用来运行，第二是使用SeleQ 一类的文件浏览器选择此程序然后运行。</p>
<p align=center>&nbsp;</p>
<p>在这里我们实现了一个console类用来显示上边的文字。我们在设计一个后台程序时候也可以不实现console类，这样程序运行时候在屏幕上将不会有任何显示。</p>
<h2><font face=Arial>3.3 APP</font>程序的开发</h2>
<p>当我们创建的应用程序需要使用用户界面的时候，我们需要创建APP程序。一个APP程序可能包括自定义的字符串、菜单项、对话框等。如果我们要创建一个APP程序，我们需要在.mmp文件中将程序的TARGET指定为 APP 。 </p>
<p>我们最熟悉的Helloworld 就是一个简单的APP 程序，下面是它的mmp 文件：</p>
<p>TARGET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasic.app</p>
<p>TARGETTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app</p>
<p>UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x100039CE 0x10005B91</p>
<p>TARGETPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \system\apps\helloworldbasic</p>
<p>SOURCEPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\src</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasic.cpp</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasicApplication.cpp </p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasicAppView.cpp</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasicAppUi.cpp</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;HelloWorldBasicDocument.cpp </p>
<p>SOURCEPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\group</p>
<p>RESOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorldBasic.rss</p>
<p>USERINCLUDE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\inc </p>
<p>SYSTEMINCLUDE&nbsp;&nbsp;&nbsp;&nbsp; \epoc32\include</p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; euser.lib</p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; apparc.lib</p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cone.lib </p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eikcore.lib&nbsp; </p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avkon.lib&nbsp; <br><strong><font face=Arial>3.4 DLL</font>程序的开发</strong></p>
<p>DLL提供多个入口，由系统或是已存在的线程(进程)调用。</p>
<p>有两种类型的DLL, 静态DLL和多态DLL。</p>
<p>静态DLL为其他程序提供方法列表以供调用。当程序启动的链接阶段静态DLL就被读到内存中。</p>
<p>多态DLL为其他程序提供某个固定的方法调用。例如某个GUI应用提供了NewApplication()方法调用以启动应用程序。这些DLL实现抽象的方法,如一个打印机驱动，socket协议或是一个应用程序。它们的扩展名多不是.DLL,而是PRN、PRT 或APP等。它们从与DLL相关的类继承，并通常只有在程序需要它们时才读入。前面的APP程序也算作一个多态DLL。</p>
<p>如果我们要创建的是DLL程序，我们需要在.mmp文件中将程序的TARGET指定为 DLL。如下所示：</p>
<p>TARGET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test.dll</p>
<p>TARGETTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dll</p>
<p>UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;0x1000008D 0x0CD52435</p>
<p>SOURCEPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\src</p>
<p>SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test.cpp</p>
<p>USERINCLUDE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..\inc</p>
<p>SYSTEMINCLUDE&nbsp;&nbsp;&nbsp; \epoc32\include</p>
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;euser.lib<br></p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-19 14:07 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/19/66210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 (二)</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/18/66160.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 18 May 2010 06:36:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/18/66160.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<h2><font size=4><font face=Arial>2.1 </font>安装<font face=Arial>SDK</font>及<font face=Arial>VC</font></font></h2>
<p>Nokia根据手机的屏幕大小和价格高低把手机分成了多个系列，现在使用的系列有：Series 40、Series 60、Series 80 和Series 90。60系列采用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> os 6.1，然后又根据手机屏幕的特点对UI做了一些修改，这个被修改了的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>就被称为Nokia的60系列平台。使用60系列的手机型号包括：Nokia 6670、 Nokia 6630、 Nokia 6260 、Nokia N-Gage QD&#8482; 、Nokia 7610 、Nokia 6620 、Nokia 3620 、Nokia 3660 、Nokia 6600 、Nokia 3600、Nokia 3650、Nokia 7650、Nokia N-Gage&#8482;等。</p>
<p>下面我们就以60系列为例，介绍SDK的安装过程。</p>
<h3>2.1.1 安装SDK</h3>
<p>第一步，到Nokia论坛注册，下载最新的SDK。Nokia 网站提供的Series 60 SDK for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS Nokia Edition SDK最新版本是v1.2，Series 60 SDK for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS的最新版本是v2.1。下载网址：<a href="http://www.forum.nokia.com/main/0,6566,034-4,00.html"><font color=#006699><u>http://www.forum.nokia.com/main/0,6566,034-4,00.html</u></font></a></p>
<p>第二步，到<a href="http://www.activestate.com/"><font color=#006699><u>http://www.activestate.com</u></font></a> 网站下载最新的Active Perl Script 安装程序。到<a href="http://www.java.com/en/download/manual.jsp"><font color=#006699><u>http://www.java.com/en/download/manual.jsp</u></font></a> 下载最新的J2RE。</p>
<p>第三步：安装SDK，推荐为<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>开发单独建一个目录，例如d：\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>而不是使用C:\program files等这样的目录。</p>
<p>第四步：安装Active Perl和J2RE，安装到默认目录即可。</p>
<p>第五步：检查环境变量设定。打开系统环境变量tab，然后看看有没有EPOCROOT，如果有的话，把它手动改成&#8220;\&#8221; 。改完之后应该是这个样子的： </p>
<p>EPOCROOT = \</p>
<p>然后，在系统PATH中加入 \epoc32\tools目录以及\epoc32\gcc\bin目录就可以了。</p>
<p>实际上，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> SDK根本不用安装，直接把epoc32目录拷贝到一个机器上，然后照上述方法设定目录和环境变量就可以了。</p>
<h3>2.1.2 配置VC</h3>
<p>如果我们使用的是VC 6.0，我们要保证系统至少打了SP3补丁，否则系统会有警告提示。如果我们使用的是VS.NET2003, 我们就只能安装Series 60 SDK for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS v2.1，因为Series 60 SDK for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS Nokia Edition SDK v1.2在VS.NET2003无法正确建立工程。</p>
如果要直接在vc6里创建新项目，要把\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Series60Tools\ Application Wizard目录下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录C:\Program Files\ Microsoft Visual Studio\ Common\ MSDev98\ Template下。这样我们就可以在VC的新建工程中看到Series 60 AppWizard v 1.9这个选项.<br><br>&nbsp;&nbsp;&nbsp; 填入Project Name 以后，确认。<br>&nbsp;&nbsp;&nbsp;
<p>一路&#8220;<font face="Times New Roman">Next</font>&#8221;，一个最简单的<font face="Times New Roman" color=#0000ff><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u>Symbian</u></a></font>应用程序就建立好了。<br></p>
<p>如果要将已经建立好的工程导入到<font face="Times New Roman">VC6.0</font>中，比如我们将<font face="Times New Roman">SDK</font>中的例子<font face="Times New Roman">HelloWorld</font>转换成一个<font face="Times New Roman">VC6</font>的项目，我们首先进入<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Series60Ex\HelloWorld</font>目录。在这里我们可以看到，在<font face="Times New Roman" color=#0000ff><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u>Symbian</u></a></font>中，一个<font face="Times New Roman">Project</font>通常是按<font face="Times New Roman">inc, src, group</font>等目录组织，<font face="Times New Roman">group</font>目录里通常放的是项目文件，所以编译时要先到这里。用命令提示符模式进入刚才说的那个目录下，然后执行：</p>
<p><font face="Times New Roman">bldmake bldfiles</font></p>
<p>这个命令会在<font face="Times New Roman">group</font>目录下生成一个<font face="Times New Roman">abld.bat</font>的批处理文件，并且会在<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> \6.1\Series60\Epoc32\BUILD</font>下生成<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Epoc32\BUILD\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP</font>这个目录，并在最底层目录下生成一堆<font face="Times New Roman"> .make</font>文件。</p>
<p>然后，我们在同一个目录运行刚才生成的<font face="Times New Roman">abld.bat</font>：</p>
<p><font face="Times New Roman">abld makefile vc6</font></p>
<p>这样就会自动生成<font face="Times New Roman">vc6</font>的<font face="Times New Roman">dsw</font>文件，位置在<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Epoc32\BUILD\ <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS</font>。然后我们就可以在<font face="Times New Roman">VC6</font>种打开这个<font face="Times New Roman" color=#0000ff><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u>Symbian</u></a></font>工程了。</p>
<h2><font size=4><font face=Arial>2.2 </font>编译</font></h2>
<p>我们可以直接使用<font face="Times New Roman">SDK</font>提供的工具编译<font face="Times New Roman"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> </font>工程，也可以使用<font face="Times New Roman">VC6</font>提供的集成环境来编译转化过的<font face="Times New Roman"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> </font>工程。编译的结果存放在<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Epoc32\ Release\wins\UDEB\Z\SYSTEM\apps</font>目录中。</p>
<h3><font face="Times New Roman">2.2.1</font>使用<font face="Times New Roman">SDK</font>提供的工具编译<font face="Times New Roman"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> </font>工程</h3>
<p>我们在上一节的那个位置继续输入：</p>
<p>abld build wins udeb</p>
<p>这个命令会编译我们的程序，最后在<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Epoc32\Release\wins\UDEB</font>目录下生成我们的<font face="Times New Roman">helloworld</font>，然后我们可以从开始菜单里运行模拟器的<font face="Times New Roman">debug</font>版，在模拟其中就可以运行<font face="Times New Roman">helloworld</font>了。</p>
<h3><font face="Times New Roman">2.2.2 </font>使用<font face="Times New Roman">VC6</font>编译<font face="Times New Roman"><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> </font>工程</h3>
<p>我们直接打开运行<font face="Times New Roman">abld makefile vc6</font>后生成的<font face="Times New Roman">dsw</font>文件，<font face="Times New Roman">VC</font>自动装载转化过的工程。按<font face="Times New Roman">F7</font>便可以直接编译工程，编译结果同样放在<font face="Times New Roman">\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Epoc32\Release\ wins\UDEB</font>目录中。然后我们打开模拟器<font face="Times New Roman">debug </font>版，就可以看到我们编译好的工程了。</p>
<p><br clear=all><br clear=all></p>
<p>&nbsp;</p>
<h2><font size=4><font face=Arial>2.3 </font>打包</font></h2>
<p>我们以SDK 1.2提供的HelloWorld为例，制作可以在手机中安装的.SIS文件：</p>
<h3>2.3.1．检查程序</h3>
<p>首先，在命令行格式下，进入HelloWorld工程mmp文件所在目录，输入bldmake bldfiles和abld build wins udeb，然后打开模拟器，检测程序有无错误。</p>
<h3>2.3.2．编译工程</h3>
<p>在程序无错误后，在命令行输入abld build <a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i urel 。执行这个命令之后会在目录d:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\series60\epoc32\release\<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i\urel生成HELLOWORLD.APP和HELLOWORLD.RSC两个文件。</p>
<h3>2.3.3．建立.pkg文件</h3>
<p>在d:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\Series60Ex\helloworld\sis&nbsp; 用记事本建立或者修改工程的pkg文件，内容如下：</p>
<p>; HelloWorld.pkg</p>
<p>;</p>
<p>;Language - standard language definitions</p>
<p>&amp;EN</p>
<p>&nbsp;</p>
<p>; standard SIS file header</p>
<p>#{"HelloWorld"},(0x10005B91),1,0,0</p>
<p>&nbsp;</p>
<p>;Supports Series 60 v 1.2</p>
<p>(0x101F8202), 0, 0, 0, {"Series60ProductID"}</p>
<p>;</p>
<p>"d:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\series60\epoc32\release\<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i\urel\HelloWorld.APP"-"!:\system\apps\HelloWorld\HelloWorld.app"</p>
<p>"d:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\series60\epoc32\release\<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i\urel\HELLOWORLD.rSC"-"!:\system\apps\HelloWorld\HELLOWORLD.rSC"</p>
<p>其中，前面"d:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\series60\epoc32\release\<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i\urel\HELLOWORLD.rSC"是要打包安装的文件，"!:\system\apps\HelloWorld\HELLOWORLD.rSC"是安装的目标位置。在其中要注意的是，我们在目标位置中用&#8220;！&#8221;代替了实际的盘符。这样做得好处是在用户安装的时候，手机系统会提示用户选择要安装的位置，这就给了用户更大的灵活度。另外，在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> 系统中，安装的应用程序默认位置是&#8220;!:\system\apps &#8221;。</p>
<p>编辑好pkg文件后，保存至相应目录。</p>
<h3>2.3.4．打包程序</h3>
<p>在命令行中，转至pkg文件所在目录，运行命令makesis HelloWorld.pkg。之后我们就在同一目录下得到了打包好的.sis文件。</p>
<p><br clear=all>&nbsp;</p>
<h2><font size=4><font face=Arial>2.4 </font>手机测试</font></h2>
<p>将打包好地.sis文件上传至手机中，然后在手机的应用程序管理器中就可以看到我们打包好的文件。选择&#8220;安装&#8221;命令，系统会提示用户要安装的位置，选择安装位置后，我们制作的应用程序就安装到手机中了。</p>
<p>我们回到手机的主菜单，就会发现新安装的HelloWorld 应用程序。打开运行，结果和在模拟器中看到的基本是一样的。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-18 14:36 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/18/66160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 (一)</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/17/66137.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 17 May 2010 06:32:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/17/66137.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<h2><font face=Arial>1.1 <a title="" href="http://www.chinaeda.cn/list.aspx?cid=100" target=_self><u><font color=#800080>Symbian</font></u></a></font>操作系统的起源和现状</h2>
<p align=left><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>成立于1998年，由爱立信、诺基亚、摩托罗拉和Psion共同出资筹建。1999年，松下公司加入<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>。2000年，世界上第一款采用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统的手机Ericsson R380成功上市，同年，索尼公司和三洋公司获得了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> 的授权。 2001年， 富士通公司获得了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的授权。诺基亚公司推出了Nokia 7650-基于 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统的2.5G手机. 同时，Nokia 9210开始公开发售。</p>
<p align=left>2002年，西门子公司与索尼-爱立信公司入股<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>，Sendo公司获得了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的授权。NTT DoCoMo 发布3G FOMA F2051手机。 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>发布第一个用于3G系统的手机操作系统<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS v7.0 for 3G mobile phones。2003年，诺基亚成功推出了第一款基于<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS v7.0s的手机。同年，三星公司成为<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的股东之一。</p>
<p align=left>2004年，已经发布的采用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 的手机包括Panasonic X700, Motorola A1000, Nokia 9500, 7610 和N-Gage QD, Samsung SGH-D710。Arima公司与LG电子获得了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的授权。同时，联想公司决定将<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统用于他们最近的手机产品中。</p>
<p align=left>　　而<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>随着手机的发展得到了越来越多的市场。在目前手机操作系统的争夺中，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>市场占有率达到了70％，是当之无愧的老大，而微软的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a> mobile和其他操作系统一共只有30％的份额。</p>
<p align=left>　　目前，全球主流手机操作系统争夺主要有三种：</p>
<p align=left>　　 1.<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统：按持股比例多少，由诺基亚、爱立信、索尼爱立信、松下、三星、西门子共6家厂商顺序组成的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>联盟把持。优点是价格适中，对手机要求较低，缺点是开发人员少。</p>
<p align=left>　　 2.<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a> mobile操作系统：优点在于可以方便地和PC上的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>进行互通，开发人员多，但缺点是授权费最高，对手机要求也高。</p>
<p align=left>　　 3.<a title=嵌入式Linux驱动与内核开发－精品班 href="http://www.chinaeda.com/ke/jingpin.shtml"><u><font color=#0000ff>Linux</font></u></a>：全球开放的系统，任何厂家和开发商均可使用，优点是价格最低，对手机要求最低，缺点也很明显，厂家各自为营，手机之间的互通性差。<br></p>
<h2><font face=Arial>1.2 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a></font>操作系统使用的手机设备</h2>
<p><font face="Times New Roman">&nbsp;</font></p>
<p>采用<font face="Times New Roman" color=#0000ff><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u>Symbian</u></a></font>操作系统的智能手机已经推出的包括以下几款：<a href="http://www.symbian.com/phones/index.html#p910#p910"><u><font color=#0000ff>Sony Ericsson P910</font></u></a>，<a href="http://www.symbian.com/phones/index.html#p900#p900"><u><font color=#0000ff>Sony Ericsson P900</font></u></a>，<a href="http://www.symbian.com/phones/index.html#p800#p800"><u><font color=#0000ff>Sony Ericsson P800</font></u></a>， <a href="http://www.symbian.com/phones/index.html#f900i#f900i"><u><font color=#0000ff>FOMA F900i</font></u></a>，<a href="http://www.symbian.com/phones/index.html#f2051#f2051"><u><font color=#0000ff>FOMA F2051</font></u></a>， <a href="http://www.symbian.com/phones/index.html#6600#6600"><u><font color=#0000ff>Nokia 6600</font></u></a>，<a href="http://www.symbian.com/phones/index.html#ngage#ngage"><u><font color=#0000ff>Nokia N-Gage</font></u></a>，<a href="http://www.symbian.com/phones/index.html#7610#7610"><u><font color=#0000ff>Nokia 7610</font></u></a>，<a href="http://www.symbian.com/phones/index.html#qd#qd"><u><font color=#0000ff>Nokia N-Gage QD</font></u></a>，<a href="http://www.symbian.com/phones/index.html#3660#3660"><u><font color=#0000ff>Nokia 3660/3620</font></u></a>，<a href="http://www.symbian.com/phones/index.html#f2102v#f2102v"><u><font color=#0000ff>FOMA F2102V</font></u></a>， <a href="http://www.symbian.com/phones/index.html#7650#7650"><u><font color=#0000ff>Nokia 7650</font></u></a>，<a href="http://www.symbian.com/phones/index.html#3650#3650"><u><font color=#0000ff>Nokia 3650/3600</font></u></a>，<a href="http://www.symbian.com/phones/index.html#9290#9290"><u><font color=#0000ff>Nokia 9290 Communicator</font></u></a>，<a href="http://www.symbian.com/phones/index.html#9210#9210"><u><font color=#0000ff>Nokia 9210 Communicators</font></u></a>，<a href="http://www.symbian.com/phones/index.html#x#x"><u><font color=#0000ff>Sendo X</font></u></a>，<a href="http://www.symbian.com/phones/index.html#A290#A290"><u><font color=#0000ff>Motorola A920</font></u></a>，<a href="http://www.symbian.com/phones/index.html#a925#a925"><u><font color=#0000ff>Motorola A925</font></u></a>，<a href="http://www.symbian.com/phones/index.html#sx1#sx1"><u><font color=#0000ff>Siemens SX1</font></u></a>。</p>
<p><font face="Times New Roman">&nbsp;</font></p>
<p>即将推出的还有：<a href="http://www.symbian.com/phones/index.html#u300#u300"><u><font color=#0000ff>Arima U300 </font></u></a>，<a href="http://www.symbian.com/phones/index.html#6670#6670"><u><font color=#0000ff>Nokia 6670</font></u></a>，<a href="http://www.symbian.com/phones/index.html#6630#6630"><u><font color=#0000ff>Nokia 6630 </font></u></a>，<a href="http://www.symbian.com/phones/index.html#6260#6260"><u><font color=#0000ff>Nokia 6260 </font></u></a>，<a href="http://www.symbian.com/phones/index.html#9500#9500"><u><font color=#0000ff>Nokia 9500</font></u></a>，<a href="http://www.symbian.com/phones/index.html#9300#9300"><u><font color=#0000ff>Nokia 9300</font></u></a>，<a href="http://www.symbian.com/phones/index.html#6620#6620"><u><font color=#0000ff>Nokia 6620</font></u></a>，<a href="http://www.symbian.com/phones/index.html#p30#p30"><u><font color=#0000ff>BenQ P30</font></u></a>，<a href="http://www.symbian.com/phones/index.html#sgh-710#sgh-710"><u><font color=#0000ff>Samsung SGH-D710</font></u></a>，<a href="http://www.symbian.com/phones/index.html#x700#x700"><u><font color=#0000ff>Panasonic X700</font></u></a>，<a href="http://www.symbian.com/phones/index.html#a1000#a1000"><u><font color=#0000ff>Motorola A1000</font></u></a>，，<a href="http://www.symbian.com/phones/index.html#F900iT#F900iT"><u><font color=#0000ff>FOMA F900iT </font></u></a>&nbsp;<a href="http://www.symbian.com/phones/index.html#F800ies#F800ies"><u><font color=#0000ff>FOMA F880iES</font></u></a>，<a href="http://www.symbian.com/phones/index.html#F900iC#F900iC"><u><font color=#0000ff>FOMA F900iC</font></u></a>。<br></p>
<p align=left>&nbsp;&nbsp;&nbsp; </p>
<h2><font face=Arial>1.3 <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS</font>的特点</h2>
<p align=left><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS具有以下6大特点： <br>1、操作系统是运行在ROM上的 </p>
<p align=left>2、系统是运行在电池驱动的设备上的 </p>
<p align=left>3、完全是面向对象的 </p>
<p align=left>4、基于组件的设计 </p>
<p align=left>5、被设计成确保用户的数据不会丢失 </p>
<p align=left>6、简单的UI系统 </p>
<p align=left><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> 是真正的微核操作系统，所谓&#8220;微核&#8221;，就是说操作系统 只有很小的一部分是运行在最高优先级的，其他的功能都是以Client-Server的方式提供。下面是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>系统的内部结构图： </p>
<p align=center>应用层：</p>
<p align=center><font face="Times New Roman">Shell, OPL, </font>及其他应用程序</p>
<p align=center><font face="Times New Roman">=================================================================</font></p>
<p align=center>系统层：</p>
<p align=center><font face="Times New Roman">Dialogs, Menu, Toolbar, Icons, Resources, JavaVM, Grid, Rich Text,&nbsp; Edit Control,&nbsp; List Control, Application Framework, Jave Class Libraries. =================================================================</font></p>
<p align=center>服务层：</p>
<p align=center><font face="Times New Roman">Window Server, Process Server, Socket Server, Sound Server, Wireless Server, Database Server, File Server, Al<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a> Server, Comms Server, </font>以及无线协议</p>
<p align=center><font face="Times New Roman">=================================================================</font></p>
<p align=center>内核：</p>
<p align=center><font face="Times New Roman">euser.dll, ekern.exe, </font>服务控制（<font face="Times New Roman">supervisor server</font>），<font face="Times New Roman"> HAL</font>（设备抽象层）</p>
<p align=center><font face="Times New Roman">=================================================================</font></p>
<p align=center>驱动程序层：</p>
<p align=center>包括音频驱动，显示驱动，<font face="Times New Roman">MMC</font>驱动，键盘驱动，串并口驱动<font face="Times New Roman"> </font>，<font face="Times New Roman" color=#0000ff><a title="DSP C5000系统开发—高级培训班 " href="http://www.chinaeda.com/ke/dsp.shtml"><u>dsp</u></a></font>驱动，时钟控制器驱动等等</p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<div>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-17 14:32 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/17/66137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian操作系统 入门篇</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/14/66031.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 14 May 2010 09:55:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/14/66031.html</guid><description><![CDATA[<div><font face=Arial><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>是一个实时性、多任务的纯32位操作系统，具有功耗低、内存占用少等特点，非常适合手机等移动设备使用，经过不断完善，可以支持GPRS、蓝芽、SyncML、以及3G技术。</font></div>
<div><font face=Arial><strong></strong></font>&nbsp;</div>
<div><font face=Arial><strong>一、<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>简介</strong></font></div>
<div>&nbsp;</div>
<div><font face=Arial><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>是一个实时性、多任务的纯32位<nobr><strong class=kgb onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u4E86%u89E3Linux%u5185%u5B58%u7BA1%u7406%u7684%u65B9%u5F0F","-100848","操作系统","%u63D0%u9AD8Web%u6570%u636E%u4F20%u8F93%u6548","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492", event)' style="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; CURSOR: hand; COLOR: #0000ff; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100848&amp;k=%u64CD%u4F5C%u7CFB%u7EDF&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20080225/113836.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492&amp;parm=4A5EB450C7B929EA6D9F43F5AB00A5A344797F5ECA079203&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">操作系统</strong></nobr>，具有功耗低、内存占用少等特点，非常适合手机等移动设备使用，经过不断完善，可以支持GPRS、蓝芽、SyncML、以及3G技术。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>主要用于高端的<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u667A_u80FD_u624B_u673A";KeyGate_ads.ShowGgAds(this,"_u667A_u80FD_u624B_u673A",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BnercOU_sR6XWDZneuQPcsIH1CP-8vivbtP-OA8CNtwHQ2REQAhgCIM-BhwooFDgAUPXYld4FYJ3J4IHoBaAB9ZOm_QOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbKkClK64S1Eigz7IAqvv-gGoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=2&amp;adurl=http://www.empek.com.cn/product/show.php%3Fitemid%3D24&amp;client=ca-pub-3578421812762734");GgKwClickStat("智能手机","www.empek.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u667A_u80FD_u624B_u673A"'>智能手机</strong></nobr>，其开发语言为C++。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> 是真正的微核操作<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u7CFB_u7EDF";KeyGate_ads.ShowGgAds(this,"_u7CFB_u7EDF",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BlaJyOU_sR6XWDZneuQPcsIH1CPWPmkuZ1u-aAsCNtwHw1xwQBRgFIM-BhwooFDgAUOOJqZIFYJ3J4IHoBbIBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwMjI1LzExMzgzNi5odG1sqQKUrrhLUSKDPsgCscXiBKgDAegDhgPoAwfoAynoA-AC9QMABAAA&amp;num=5&amp;adurl=http://www.ni.com/labview/design/zhs&amp;client=ca-pub-3578421812762734");GgKwClickStat("系统","www.ni.com/labview/design/zhs","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u7CFB_u7EDF"'>系统</strong></nobr>，所谓&#8220;微核&#8221;，就是说操作系统只有很小的一部分是运行在最高优先级的，其他的功能都是以Client-Server的方式提供。</font></div>
<div>&nbsp;</div>
<div><font face=Arial><strong>二、<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>开发环境的布置</strong></font></div>
<div>&nbsp;</div>
<div><font face=Arial>I．&nbsp; 起点－SDK和IDE的选择</font></div>
<div>&nbsp;</div>
<div><font face=Arial>这里主要针对S60的开发环境的建立，因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要，选择自己适合的SDK版本。<br>1、Series60 第一版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 6.1<br>2、Series60 第二版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 7.0s<br>3、Series60 第二版&nbsp;&nbsp; Pack 1&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 7.0s<br>4、Series60 第二版&nbsp;&nbsp; Pack 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 8.0a<br>5、Series60 第二版&nbsp;&nbsp; Pack 3&nbsp; &nbsp;&nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 8.1a<br>6、Series60 第三版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS 9.0</font></div>
<div>&nbsp;</div>
<div><font face=Arial>需要要说明的是，Nokia的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>/Series60开发包支持的集成开发环境[IDE]工具有很多种，下面列出主要使用的一些IDE：<br>1、Microsoft Visual Studio 6 / Visual C++ 6<br>2、Microsoft Visual Studio .NET [2003] / Visual C++ 7<br>3、Borland C++ Builder 6 <br>4、Borland C++ Builder X 1.0<br>5、Metrowerks CodeWarrior Studio for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> Personal/Professional 2.0/2.5</font></div>
<div>&nbsp;</div>
<font face=Arial>
<div><br>II．在安装SDK以前保证下列1－3项先被正确安装。SDK和IDE要安装在电脑上的同一个分区。SDK的安装路径不能含有空格。</div>
<div>&nbsp;</div>
<div>下面详细说明需要安装的软件及其步骤：</div>
<div>&nbsp;</div>
<div>1、在安装SDk之前必须安装ActivePerl(官方文档要求安装Perl 5.6.1 build 531，并说明安装其他版本可能会有问题<br>2、安装JAVA Run-Time1.4.1_02 或者新版本说明：在使用命令行编译程序的时候事实上是不需要用到JAVA Run-Time1的。但是若要使用SDK的一个强大的工具ApplicationWizard，就必须安装该组件，同时若要使用Sisar等工具的话，JRE也必不可少。<br>3、安装IDE，安装Microsoft Visual Studio .NET 2003<br>4、安装SDK，注意前面所说的SDK的安装路径不能含有空格。并且要和IDE装在同一个分区，这样可以避免一些麻烦<br>5、安装Nokia Developer Suite － Carbide.vs 。这相当于VS2003的一个插件，用于帮助导入或者建立S60工程</div>
<div>&nbsp;</div>
<div>相应软件可在<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8BFA_u57FA_u4E9A";KeyGate_ads.ShowGgAds(this,"_u8BFA_u57FA_u4E9A",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BAxp-OU_sR6XWDZneuQPcsIH1CPnlzjb5qYyxBMCNtwHwkwkQDBgMIM-BhwooFDgAUKH-8ucEYJ3J4IHoBaAB_9aS-wOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbIACAakClK64S1Eigz7IAun3iwSoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=12&amp;adurl=http://www.18900.com/goods/NOKIA_2983.html&amp;client=ca-pub-3578421812762734");GgKwClickStat("诺基亚","www.18900.com/","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u8BFA_u57FA_u4E9A"'>诺基亚</strong></nobr>主页下载<br>&nbsp;<br>III．安装完毕后在系统环境变量path中加入：<br>{VS2003的安装路径}\Microsoft Visual Studio .NET 2003\Vc7\bin</div>
<div>&nbsp;</div>
<div><strong>三、下面可以通过一个例子，进一步了解<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>的开发环境</strong></div>
<div>&nbsp;</div>
<div>I． 通过Microsoft Visual Studio.NET 2003</div>
<div>&nbsp;</div>
<div>1．进入Microsoft Visual Studio.NET 2003 <br>2.单击：文件/import <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> project选择并打开<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd _FP2\S60Ex\helloworldbasic\group\helloworldbasic.mmp<br>Project type 为classic<br>3.然后单击next. 在下一对话框中选中<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>I然后确认Finish ，此时就可以打开basic文件了。 <br>下面运行helloworldbasic这个程序<br>4.在菜单栏选中生成/生成解决方案（F7），在运行对话框中单击生成，此时会显示:<br>Helloworldbasic - 最新。</div>
<div>&nbsp;</div>
<div><br>---------------------- 完成 ---------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;1成功 0 失败 0跳过<br>5.接下来点击调试/开始执行。<br>此时会自动打开series 6.0的调试<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6A21_u62DF_u5668";KeyGate_ads.ShowGgAds(this,"_u6A21_u62DF_u5668",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BnercOU_sR6XWDZneuQPcsIH1CP-8vivbtP-OA8CNtwHQ2REQAhgCIM-BhwooFDgAUPXYld4FYJ3J4IHoBaAB9ZOm_QOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbKkClK64S1Eigz7IAqvv-gGoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=2&amp;adurl=http://www.empek.com.cn/product/show.php%3Fitemid%3D24&amp;client=ca-pub-3578421812762734");GgKwClickStat("模拟器","www.empek.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6A21_u62DF_u5668"'>模拟器</strong></nobr>，同时还可发现在调试模拟器的<nobr><strong class=kgb onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u901A%u8FC7%u4E00%u4E2A%u7B80%u5355%u7684%u95EE%u5019%u7A0B%u5E8F%20HelloServer%20%u6765%u4ECB%u7ECD","-100879","应用程序","%u5F00%u53D1%u9AD8%u6027%u80FD%u7F51%u7EDC%u7A0B%u5E8F","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2613", event)' style="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; CURSOR: hand; COLOR: #0000ff; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100879&amp;k=%u5E94%u7528%u7A0B%u5E8F&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20080225/113836.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2613&amp;parm=4A5EB450C7B929EA6D9F43F5AB00A5A344797F5ECA079203&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">应用程序</strong></nobr>中多了一个HelloWorldBasic程序</div>
<div>&nbsp;</div>
<div>这是一种用Microsoft Visual Studio.NET 2003直接调试的方法，除此之外还可以用<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>命令行进行调试</div>
<div>&nbsp;</div>
<div>II. 用<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>命令行进行调试：</div>
<div>&nbsp;</div>
<div>1.找到helloworldbasic文件夹的地址，<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd _FP2\S60Ex\helloworldbasic\group\<br>2、构建我们的例子，输入：<br>bldmake bldfiles<br>这一步会生成一个文件ABLD.BAT。<br>3、编译和链接，输入：<br>abld build wins udeb<br>这一步会生成供Series 60 调试模拟器使用的文件。<br>4、运行，在命令行进入：<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb<br>这个目录含有刚生成的helloworld.exe文件。然后输入：<br>Helloworld<br>此时会自动打开series 6.0的调试模拟器，同时还可发现在应用程序中多了一个HelloWorldBasic程序</div>
<div>&nbsp;</div>
<div>下面简单介绍一下以上各步的含义：<br>当我们运行<br>bldmake bldfiles<br>这个命令时，会处理当前目录下的bld.inf文件，具体来说会执行以下处理过程：<br>1、生成目录<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\BUILD\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD<br>2、在这个目录下，生成一系列的Make文件，针对各种目标环境。比如VC7.MAKE，CW_IDE.MAKE等等。<br>3、在当前目录下生成abld.bat文件，这个文件会在随后用到。可以查看该文件的内容。但是建议不要手工的更改它的内容。Bldmake命令也支持其他的命令行选项，可以直接输入bldmake来查看简要的介绍，还可以查看SDK文档了解详细信息。由bldmake处理bld.inf文件得到的abld.bat文件，使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活，它拥有许多命令行选项，它们的组合涵盖了各种构建需求。最常用的组合，莫过于abld build 和 abld clean 相关了。</div>
<div>&nbsp;</div>
<div>当我们运行<br>abld build wins udeb<br>这个命令时，将为wins平台（即通常的VC++环境）生成一个debug版本的程序。具体来说，在<br>D:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\BUILD\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB<br>和D:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb下面各生成了一些文件比如Helloworld.exe文件。</div>
<div>&nbsp;</div>
<div>在运行此文件就可以得到最终的效果了</div>
<div>&nbsp;</div>
<div>还要说明一点的是，示例所用的SDK,IDK分别是<br>SDK:SERIES 60 2ND EDITION SDK FOR <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS&nbsp; SUPPORTING FEATURE PACK 2&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUPPORTING MICROSOFT VISUAL C++&nbsp; CHINESE SIMPLIFIED EDITION<br>IDE：Microsoft Visual Studio .NET 2003&nbsp; <br>如果严格按照以上步骤仍得不到正确的效果可能是版本不同造成的 版本不同可能会有相应的改动</div>
<div>&nbsp;</div>
<div><strong>四、 推荐几个有关<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>的网站</strong><br>1.<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a> OS官方网站 不用多说，这是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>相关信息的最权威来源。 </div>
<div>&nbsp;</div>
<div>2.诺基亚论坛 这是最为活跃的移动开发技术社区。尤其是关于Nokia Series系列的资源非常的丰富。 而且，现在还有 诺基亚论坛简体中文版 这极大的方便了国内的开发者学习相关技术。 </div>
<div>&nbsp;</div>
<div>3.UIQ的官方网站 UIQ Technology AB成立于1999年，是完全归<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#800080>Symbian</font></u></a>公司所有的一家子公司。他们面向开发移动设备的UI Platform——UIQ，并授权给那些全球领先的移动设备制造商。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><strong>&nbsp;</strong></div>
<div><strong>五、常见单词缩写及其含义：</strong><br>VCL是Visual Component Library的缩写,即可视组件库<br>MFC,微软基础类(Microsoft Foundation Classes),<br>GUI是图形用户界面(Graphic User Interface)<br>IDE是Integrated Device Electronics(电子集成驱动器)的简称，是一种硬盘的传输接口，它有另一个名称叫做ATA（AT Attachment），这两个名词都有厂商在用，指的是相同的东西。</div>
<div>&nbsp;</div>
<div>这里的IDE指 集成开发环境Integrated Development Environment</div>
<div>&nbsp;</div>
<div><br>DLL即 Dynamic Link Library（动态链接库）。<br>API就是 Application Programming Interface，就是操作系统留给应用程序的一个调用接口，应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令（动作）<br>SDK (Software Development Kit），就是&#8220;软件开发工具包&#8221;。<br></div>
<div>&nbsp;</div>
<div>
<div>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font size=3>联系人：欧老师&nbsp;&nbsp;&nbsp;&nbsp;联系方式QQ：928077186</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a>&nbsp;&nbsp;&nbsp; </span></p>
<p><span></span><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
</div>
</font>
<img src ="http://www.cnitblog.com/maolxu/aggbug/66031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-14 17:55 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/14/66031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从C++过渡到SYMBIAN C++？</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/06/65843.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Thu, 06 May 2010 06:27:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/06/65843.html</guid><description><![CDATA[<div class=c><span style="FONT-SIZE: 14px">
<div><font face=Arial><strong>一、<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>简介</strong></font></div>
<div>&nbsp;</div>
<div><font face=Arial><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>是一个实时性、多任务的纯32位<nobr><strong class=kgb onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u4E86%u89E3Linux%u5185%u5B58%u7BA1%u7406%u7684%u65B9%u5F0F","-100848","操作系统","%u63D0%u9AD8Web%u6570%u636E%u4F20%u8F93%u6548","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492", event)' style="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; CURSOR: hand; COLOR: #0000ff; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100848&amp;k=%u64CD%u4F5C%u7CFB%u7EDF&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20080225/113836.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492&amp;parm=4A5EB450C7B929EA6D9F43F5AB00A5A344797F5ECA079203&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">操作系统</strong></nobr>，具有功耗低、内存占用少等特点，非常适合手机等移动设备使用，经过不断完善，可以支持GPRS、蓝芽、SyncML、以及3G技术。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>主要用于高端的<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u667A_u80FD_u624B_u673A";KeyGate_ads.ShowGgAds(this,"_u667A_u80FD_u624B_u673A",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BnercOU_sR6XWDZneuQPcsIH1CP-8vivbtP-OA8CNtwHQ2REQAhgCIM-BhwooFDgAUPXYld4FYJ3J4IHoBaAB9ZOm_QOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbKkClK64S1Eigz7IAqvv-gGoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=2&amp;adurl=http://www.empek.com.cn/product/show.php%3Fitemid%3D24&amp;client=ca-pub-3578421812762734");GgKwClickStat("智能手机","www.empek.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u667A_u80FD_u624B_u673A"'>智能手机</strong></nobr>，其开发语言为C++。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> 是真正的微核操作<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u7CFB_u7EDF";KeyGate_ads.ShowGgAds(this,"_u7CFB_u7EDF",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BlaJyOU_sR6XWDZneuQPcsIH1CPWPmkuZ1u-aAsCNtwHw1xwQBRgFIM-BhwooFDgAUOOJqZIFYJ3J4IHoBbIBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwMjI1LzExMzgzNi5odG1sqQKUrrhLUSKDPsgCscXiBKgDAegDhgPoAwfoAynoA-AC9QMABAAA&amp;num=5&amp;adurl=http://www.ni.com/labview/design/zhs&amp;client=ca-pub-3578421812762734");GgKwClickStat("系统","www.ni.com/labview/design/zhs","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u7CFB_u7EDF"'>系统</strong></nobr>，所谓&#8220;微核&#8221;，就是说操作系统只有很小的一部分是运行在最高优先级的，其他的功能都是以Client-Server的方式提供。</font></div>
<div>&nbsp;</div>
<div><font face=Arial><strong>二、<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>开发环境的布置</strong></font></div>
<div>&nbsp;</div>
<div><font face=Arial>I．&nbsp; 起点－SDK和IDE的选择</font></div>
<div>&nbsp;</div>
<div><font face=Arial>这里主要针对S60的开发环境的建立，因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要，选择自己适合的SDK版本。<br>1、Series60 第一版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 6.1<br>2、Series60 第二版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 7.0s<br>3、Series60 第二版&nbsp;&nbsp; Pack 1&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 7.0s<br>4、Series60 第二版&nbsp;&nbsp; Pack 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 8.0a<br>5、Series60 第二版&nbsp;&nbsp; Pack 3&nbsp; &nbsp;&nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 8.1a<br>6、Series60 第三版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;－&nbsp; <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS 9.0</font></div>
<div>&nbsp;</div>
<div><font face=Arial>需要要说明的是，Nokia的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>/Series60开发包支持的集成开发环境[IDE]工具有很多种，下面列出主要使用的一些IDE：<br>1、Microsoft Visual Studio 6 / Visual C++ 6<br>2、Microsoft Visual Studio .NET [2003] / Visual C++ 7<br>3、Borland C++ Builder 6 <br>4、Borland C++ Builder X 1.0<br>5、Metrowerks CodeWarrior Studio for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> Personal/Professional 2.0/2.5</font></div>
<div>&nbsp;</div>
<font face=Arial>
<div><br>II．在安装SDK以前保证下列1－3项先被正确安装。SDK和IDE要安装在电脑上的同一个分区。SDK的安装路径不能含有空格。</div>
<div>&nbsp;</div>
<div>下面详细说明需要安装的软件及其步骤：</div>
<div>&nbsp;</div>
<div>1、在安装SDk之前必须安装ActivePerl(官方文档要求安装Perl 5.6.1 build 531，并说明安装其他版本可能会有问题<br>2、安装JAVA Run-Time1.4.1_02 或者新版本说明：在使用命令行编译程序的时候事实上是不需要用到JAVA Run-Time1的。但是若要使用SDK的一个强大的工具ApplicationWizard，就必须安装该组件，同时若要使用Sisar等工具的话，JRE也必不可少。<br>3、安装IDE，安装Microsoft Visual Studio .NET 2003<br>4、安装SDK，注意前面所说的SDK的安装路径不能含有空格。并且要和IDE装在同一个分区，这样可以避免一些麻烦<br>5、安装Nokia Developer Suite － Carbide.vs 。这相当于VS2003的一个插件，用于帮助导入或者建立S60工程</div>
<div>&nbsp;</div>
<div>相应软件可在<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8BFA_u57FA_u4E9A";KeyGate_ads.ShowGgAds(this,"_u8BFA_u57FA_u4E9A",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BAxp-OU_sR6XWDZneuQPcsIH1CPnlzjb5qYyxBMCNtwHwkwkQDBgMIM-BhwooFDgAUKH-8ucEYJ3J4IHoBaAB_9aS-wOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbIACAakClK64S1Eigz7IAun3iwSoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=12&amp;adurl=http://www.18900.com/goods/NOKIA_2983.html&amp;client=ca-pub-3578421812762734");GgKwClickStat("诺基亚","www.18900.com/","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u8BFA_u57FA_u4E9A"'>诺基亚</strong></nobr>主页下载<br>&nbsp;<br>III．安装完毕后在系统环境变量path中加入：<br>{VS2003的安装路径}\Microsoft Visual Studio .NET 2003\Vc7\bin</div>
<div>&nbsp;</div>
<div><strong>三、下面可以通过一个例子，进一步了解<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的开发环境</strong></div>
<div>&nbsp;</div>
<div>I． 通过Microsoft Visual Studio.NET 2003</div>
<div>&nbsp;</div>
<div>1．进入Microsoft Visual Studio.NET 2003 <br>2.单击：文件/import <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> project选择并打开<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd _FP2\S60Ex\helloworldbasic\group\helloworldbasic.mmp<br>Project type 为classic<br>3.然后单击next. 在下一对话框中选中<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>I然后确认Finish ，此时就可以打开basic文件了。 <br>下面运行helloworldbasic这个程序<br>4.在菜单栏选中生成/生成解决方案（F7），在运行对话框中单击生成，此时会显示:<br>Helloworldbasic - 最新。</div>
<div>&nbsp;</div>
<div><br>---------------------- 完成 ---------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;1成功 0 失败 0跳过<br>5.接下来点击调试/开始执行。<br>此时会自动打开series 6.0的调试<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6A21_u62DF_u5668";KeyGate_ads.ShowGgAds(this,"_u6A21_u62DF_u5668",event)' style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BnercOU_sR6XWDZneuQPcsIH1CP-8vivbtP-OA8CNtwHQ2REQAhgCIM-BhwooFDgAUPXYld4FYJ3J4IHoBaAB9ZOm_QOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDIyNS8xMTM4MzYuaHRtbKkClK64S1Eigz7IAqvv-gGoAwHoA4YD6AMH6AMp6APgAvUDAAQAAA&amp;num=2&amp;adurl=http://www.empek.com.cn/product/show.php%3Fitemid%3D24&amp;client=ca-pub-3578421812762734");GgKwClickStat("模拟器","www.empek.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6A21_u62DF_u5668"'>模拟器</strong></nobr>，同时还可发现在调试模拟器的<nobr><strong class=kgb onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u901A%u8FC7%u4E00%u4E2A%u7B80%u5355%u7684%u95EE%u5019%u7A0B%u5E8F%20HelloServer%20%u6765%u4ECB%u7ECD","-100879","应用程序","%u5F00%u53D1%u9AD8%u6027%u80FD%u7F51%u7EDC%u7A0B%u5E8F","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2613", event)' style="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; CURSOR: hand; COLOR: #0000ff; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100879&amp;k=%u5E94%u7528%u7A0B%u5E8F&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20080225/113836.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2613&amp;parm=4A5EB450C7B929EA6D9F43F5AB00A5A344797F5ECA079203&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">应用程序</strong></nobr>中多了一个HelloWorldBasic程序</div>
<div>&nbsp;</div>
<div>这是一种用Microsoft Visual Studio.NET 2003直接调试的方法，除此之外还可以用<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>命令行进行调试</div>
<div>&nbsp;</div>
<div>II. 用<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>命令行进行调试：</div>
<div>&nbsp;</div>
<div>1.找到helloworldbasic文件夹的地址，<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd _FP2\S60Ex\helloworldbasic\group\<br>2、构建我们的例子，输入：<br>bldmake bldfiles<br>这一步会生成一个文件ABLD.BAT。<br>3、编译和链接，输入：<br>abld build wins udeb<br>这一步会生成供Series 60 调试模拟器使用的文件。<br>4、运行，在命令行进入：<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb<br>这个目录含有刚生成的helloworld.exe文件。然后输入：<br>Helloworld<br>此时会自动打开series 6.0的调试模拟器，同时还可发现在应用程序中多了一个HelloWorldBasic程序</div>
<div>&nbsp;</div>
<div>下面简单介绍一下以上各步的含义：<br>当我们运行<br>bldmake bldfiles<br>这个命令时，会处理当前目录下的bld.inf文件，具体来说会执行以下处理过程：<br>1、生成目录<br><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\BUILD\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD<br>2、在这个目录下，生成一系列的Make文件，针对各种目标环境。比如VC7.MAKE，CW_IDE.MAKE等等。<br>3、在当前目录下生成abld.bat文件，这个文件会在随后用到。可以查看该文件的内容。但是建议不要手工的更改它的内容。Bldmake命令也支持其他的命令行选项，可以直接输入bldmake来查看简要的介绍，还可以查看SDK文档了解详细信息。由bldmake处理bld.inf文件得到的abld.bat文件，使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活，它拥有许多命令行选项，它们的组合涵盖了各种构建需求。最常用的组合，莫过于abld build 和 abld clean 相关了。</div>
<div>&nbsp;</div>
<div>当我们运行<br>abld build wins udeb<br>这个命令时，将为wins平台（即通常的VC++环境）生成一个debug版本的程序。具体来说，在<br>D:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\BUILD\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB<br>和D:\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb下面各生成了一些文件比如Helloworld.exe文件。</div>
<div>&nbsp;</div>
<div>在运行此文件就可以得到最终的效果了</div>
<div>&nbsp;</div>
<div>还要说明一点的是，示例所用的SDK,IDK分别是<br>SDK:SERIES 60 2ND EDITION SDK FOR <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS&nbsp; SUPPORTING FEATURE PACK 2&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUPPORTING MICROSOFT VISUAL C++&nbsp; CHINESE SIMPLIFIED EDITION<br>IDE：Microsoft Visual Studio .NET 2003&nbsp; <br>如果严格按照以上步骤仍得不到正确的效果可能是版本不同造成的 版本不同可能会有相应的改动</div>
<div>&nbsp;</div>
<div><strong>四、 推荐几个有关<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>的网站</strong><br>1.<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS官方网站 不用多说，这是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>相关信息的最权威来源。 </div>
<div>&nbsp;</div>
<div>2.诺基亚论坛 这是最为活跃的移动开发技术社区。尤其是关于Nokia Series系列的资源非常的丰富。 而且，现在还有 诺基亚论坛简体中文版 这极大的方便了国内的开发者学习相关技术。 </div>
<div>&nbsp;</div>
<div>3.UIQ的官方网站 UIQ Technology AB成立于1999年，是完全归<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>公司所有的一家子公司。他们面向开发移动设备的UI Platform——UIQ，并授权给那些全球领先的移动设备制造商。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><strong>&nbsp;</strong></div>
<div><strong>五、常见单词缩写及其含义：</strong><br>VCL是Visual Component Library的缩写,即可视组件库<br>MFC,微软基础类(Microsoft Foundation Classes),<br>GUI是图形用户界面(Graphic User Interface)<br>IDE是Integrated Device Electronics(电子集成驱动器)的简称，是一种硬盘的传输接口，它有另一个名称叫做ATA（AT Attachment），这两个名词都有厂商在用，指的是相同的东西。</div>
<div>&nbsp;</div>
<div>这里的IDE指 集成开发环境Integrated Development Environment</div>
<div>&nbsp;</div>
<div><br>DLL即 Dynamic Link Library（动态链接库）。<br>API就是 Application Programming Interface，就是操作系统留给应用程序的一个调用接口，应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令（动作）<br>SDK (Software Development Kit），就是&#8220;软件开发工具包&#8221;。<br></div>
<div>&nbsp;</div>
<div>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a></span></p>
<p><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</div>
</font></span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-06 14:27 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/06/65843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK+Symbian开发入门之部署</title><link>http://www.cnitblog.com/maolxu/archive/2010/05/05/65801.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Wed, 05 May 2010 02:05:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/05/05/65801.html</guid><description><![CDATA[<span style="FONT-SIZE: 14px">&nbsp;
<p>传递到目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>上的应用程序的形式为<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>安装系统（.sis）文件。.sis文件是一个压缩的存档文件，它包含了安装所需要的所有文件，还包括了安装过程的选项信息。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>安装系统为把应用程序、数据或配置信息安装到基于<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统的设备上提供了简单的和一致的用户界面。开发者（或最终用户）安装的组件都包含在.sis文件中。<br><br>　　我们可以使用Series 60 SDK提供的<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/3112/78112.html" target=_blank><u><font color=#0000ff>交互式</font></u></a>工具sisar来执行.sis文件的生成工作。为了容易在目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>上安装应用程序，sisar把所有的应用程序文件打包到一个.sis文件中。<br><br>　　制作安装（.sis）文件所有需要的信息都在示例项目HelloWorld中提供了--它们位于\install folder下。在示例项目中我们使用了一个专用的安装包源文件（HelloWorld.pkg）和<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>提供的一个工具makesis.exe。<br><br>　　<strong>建立SIS安装文件</strong><br><br>　　在你建立了HelloWorld应用程序的<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>i发布版之后，你需要把所有的应用程序组件打包到一个安装程序包（.sis）文件之中。打开命令提示符并导航到HelloWorld项目的SDK文件夹。切换到\install folder，接着输入下面内容建立.sis文件：<br><br>makesis helloworld.pkg<br><br>　　成功的建立将会输出类似"Created helloworld.sis"的消息。安装程序包（.sis）文件将建立在\install folder下面。现在你必须它把传输到设备上。 <br><br>　　<strong>SIS文件的安装</strong><br><br>　　你可以在三种潜在的安装选项中作出选择，这依赖于你使用的设备和其它可以使用的工具--例如，你是否能够通过红外线或蓝牙设备<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/4934/84934.html" target=_blank><u><font color=#0000ff>访问</font></u></a>PC，或访问基于<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> Connect（Nokia PC Suite，或其它设备厂商提供的这类东西）的一些软件：<br><br>　　&#183; 安装通过<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1698/86698.html" target=_blank><u><font color=#0000ff>调用</font></u></a>PC上的.sis文件进行，后续的Series 60设备的应用<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/74/90074.html" target=_blank><u><font color=#0000ff>程序安装</font></u></a>过程通过PC与目标设备之间的红外线或蓝牙对话，由软件（例如<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> Connect）建立连接来完成。<br><br>　　&#183; 安装通过OBEX（OBject EXchange），经由红外线或蓝牙，从任何设备（例如PC、<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS电话或其它任何可以使用OBEX的设备）把.sis文件传输过去。这个过程可以由Messaging应用程序来管理，它可以截取附加在消息上的文件--当你打开消息的时候，它会在电话上自动启动应用程序安装过程。<br><br>　　&#183; 作为选择，.sis文件可以作为电子邮件附件发送。应用程序安装也是通过电话上的Messaging应用程序管理的。当你打开消息的时候，它自动地启动安装程序。<br><br>　　前面两种方法依赖于你在开发项目的PC和Series 60设备之间建立连接。典型情况下设备厂商提供了适当的通讯软件，你必须参考连接软件提供的特定指令。<br><br>　　在安装之后，.sis文件大幅度简化的版本依然保留在Series 60设备上用于控制应用程序的卸载，如果需要，请使用应用程序"Manager（管理器）"。这个简化的.sis文件仅仅包含卸载应用程序所需要的信息，典型情况下比原始文件小很多。<br><br>　　如果.sis文件作为消息附件传递，而且原始消息没有从Messaging应用程序的Inbox文件夹中删除，那么原始的.sis文件也可能存在于设备上。<br><br>　　<strong>在目标设备上运行</strong><br><br>　　把helloworld.sis文件使用上述的方法之一传输到目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>上。在传输之后，你就可以在设备上安装应用程序了。运行应用程序按照"定位和运行应用程序"一节列举的进行。你会确信目标设备上定位和运行的应用程序于<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/999/70999.html" target=_blank><u><font color=#0000ff>模拟</font></u></a>器上的是一样的--只有一个小小的差别：应用程序不会位于"Other"文件夹中。<br></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; WORD-BREAK: break-all; TEXT-INDENT: 2em; PADDING-TOP: 0px">&nbsp;<wbr></p>
<p><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 0px; WORD-BREAK: break-all; PADDING-TOP: 0px; FONT-FAMILY: 宋体"><span><font style="FONT-SIZE: 16px"><strong>川大科技园职业技能培训学院(3G嵌入式技术创新中心)</strong></font></span></span></p>
<p><span><font style="FONT-SIZE: 16px">咨询热线：400-702-8828　 028-6862 6028</font></span></p>
<p><span><font style="FONT-SIZE: 16px">网址：</font><a href="http://www.ctic.cc/"><font style="FONT-SIZE: 16px" color=#2e4cfc><strong><u>http://www.ctic.cc</u></strong></font></a></span></p>
<p><span><font style="FONT-SIZE: 16px">地址：四川省成都市科华北路47号（川大科技大厦）2楼</font></span></p>
</span>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-05-05 10:05 <a href="http://www.cnitblog.com/maolxu/archive/2010/05/05/65801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK+Symbian开发入门之应用程序（二）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/30/65717.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 30 Apr 2010 07:13:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/30/65717.html</guid><description><![CDATA[<div class=c><span style="FONT-SIZE: 14px"><strong>定位和运行应用程序</strong><br><br>　　通过点击模拟器的招牌位图上的光标键的图片，或者使用PC键盘光标（箭头）键导航并选择HelloWorld应用程序。点击"Selection"按钮（在光标控制键的中间）启动应用程序。<br><br>　　注意<br><br>　　没有特定图标的应用程序（在.aif文件中指定）将会被赋予一个默认的图标，它看起来像一片锯齿状拼盘。 <br><br>　　在某些SDK/IDE（例如Borland和CodeWarrior的一些版本）中，你建立的应用程序可能位于"Other"文件夹下，而不在主桌面上。如果出现这种情况，请导航并选择Other文件夹，接着通过点击"Selection"按钮打开它。导航并选择HelloWorld应用程序并点击"Selection"按钮调用该应用程序。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center><img onerror="this.src='http://www.yesky.com/upimg/2006-05-12/171055_02_245.gif';" hspace=3 src="http://www.chinaeda.cn/upload/2008_03/080327155129501.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" align=center vspace=1 border=1><br>图1－5."HelloWorld"应用程序</div>
            </td>
        </tr>
    </tbody>
</table>
<p><br>　　<strong>调试应用程序</strong><br><br>　　作为代替，你可以在IDE中使模拟器上运行的应用程序处于调试模式--这个过程验证依赖于使用的IDE。典型情况下，你需要首先在源代码的适当位置设置断点。<br><br>　　启动处于调试模式的模拟器。由于要调试的是应用程序（本质上是动态链接库DLL），而不是模拟器本身，你需要导航并运行应用程序。该应用程序将会启动，碰到你设置的断点的时候执行会停止。接着你可以使用自己选择的IDE工具逐步执行应用程序的源代码。<br><br>　　<strong>更多的IDE帮助</strong><br><br>　　本文没有不同IDE功能的更多介绍，因此如果你要查询更多的IDE帮助信息，可以通过Help菜单选项进行。<br><br>　　对于微软Visual C++，你可以选择Help|Contents菜单选项，它在与IDE一起安装的MSDN中提供。<br><br>　　对于Borland C++Builder 6，你可以使用Help菜单选项。你会发现除了标准的Borland帮助文件之外还有一个独立的Help|Borland C++ Mobile Edition Help页面。对于C++BuilderX，你可以选择Help|Help Topics，然后选择Mobile Development。<br><br>　　对于Metrowerks CodeWarrior，有一个Help|Online Manuals菜单选项，它包含了使用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS时大量的有价值的信息。<br><br>　　还有更多的特定IDE信息可以在线获得--例如到http://msdn.microsoft.com/链接查找Visual C++信息，到http://bdn.borland.com/链接查找Borland C++信息，到<a href="http://www.metro-werks.com/MW/Develop/Wireless/"><u><font color=#0000ff>http://www.metro-werks.com/MW/Develop/Wireless/</font></u></a>链接查找CodeWarrior信息。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-30 15:13 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/30/65717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK+Symbian开发入门之应用程序（一）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/28/65657.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Wed, 28 Apr 2010 02:36:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/28/65657.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">由于Series 60应用程序可以从命令提示符或IDE中建立，因此我们同时详细介绍了这两种方法。我们先从使用IDE提供的C++编译器建立运行在PC上的模拟器（也就是x86指令集）的项目开始。我们同时使用了调试建立，因此可以使用符号调试信息和内存漏洞检查（动态地检查堆上分配的内存是否被正确地释放了）。<br><br><strong>　　从命令行建立程序</strong><strong></strong><br><br>　　打开命令提示符并把当前<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1936/16936.html" target=_blank><u><font color=#0000ff>路径</font></u></a>改变到包含Series 60 SDK的<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1364/16364.html" target=_blank><u><font color=#0000ff>驱动器</font></u></a>/文件夹中。导航到包含项目定义（helloworld.mmp）和组件描述（bld.inf）文件的文件夹——例如：<br><br>\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\Series602_0\EMCCSoft\HelloWorld\group<br><br>　　上面的代码用于Series 60 2.x项目，或者<br><br>\<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>\6.1\Series60\EMCCSoft\HelloWorld\group<br><br>　　上面的代码用于Series 60 1.x项目。并输入：<br><br>bldmake bldfiles<br><br>　　一两秒钟之后这个命令就完成了，它没有任何可视的输出。它使用bld.inf和helloworld.mmp文件生成了一个新文件abld.bat。这个命令文件一般是根据需要生成的。与bld.inf和.mmp文件不同，abld.bat在不同的IDE之间是不能迁移的，并且不应该手动修改它。<br><br>　　输入下面的命令编译和链接项目：<br><br>
<table cellSpacing=0 cellPadding=0 align=center border=1>
    <tbody>
        <tr>
            <td vAlign=top>
            <p align=center>abld build wins udeb<br></p>
            </td>
            <td vAlign=top width=153><br>—用于Visual C++<br></td>
        </tr>
        <tr>
            <td vAlign=top>
            <p align=center>abld build winsb udeb<br></p>
            </td>
            <td vAlign=top width=153>
            <p align=center>—用于Borland C++<br></p>
            </td>
        </tr>
        <tr>
            <td vAlign=top>
            <p align=center>abld build winscw udeb<br></p>
            </td>
            <td vAlign=top width=153>
            <p align=center>—用于CodeWarrior<br></p>
            </td>
        </tr>
    </tbody>
</table>
<p><br>　　Abld命令将为Series 60模拟器（wins、winscw或winsb）建立该项目（换句话说，就是编译和链接），并把调试信息包含在二进制可执行文件中。<br><br><strong>　　从</strong><strong>IDE</strong><strong>中建立程序</strong><strong></strong><br><br>　　项目（例如我们的示例<strong>HelloWorld</strong>应用程序）通常在某个IDE中建立和运行，因此我们需要使用bld.inf和HelloWorld.mmp文件建立特定IDE的项目文件。对于Visual C++来说，这种工作必须使用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>提供的工具在命令行上完成。对于Borland和CodeWarrior来说这是可选项，因为这两种IDE都可以导入bld.inf或.mmp文件来建立IDE项目文件。<br><br>　　当我们从命令提示符开始工作的时候，如果abld.bat文件不存在，就有必要建立它；如果.mmp文件或bld.inf文件改变了也需要重新建立它。在命令提示符下输入下面的内容建立abld命令文件：<br><br>bldmake bldfiles<br><br><strong>　　使用微软</strong><strong>Visual C++</strong><strong>建立程序</strong><strong></strong><br><br>　　打开命令提示符，导航到<strong>HelloWorld</strong>项目的驱动器/项目文件夹，并输入：<br><br>abld makefile vc6<br><br>　　这将建立适合微软Visual C++的项目和工作空间文件（helloworld.<a title="DSP C5000系统开发—高级培训班 " href="http://www.chinaeda.com/ke/dsp.shtml"><u><font color=#0000ff>dsp</font></u></a>和.dsw文件）。它们将位于\Epoc32\Build子文件夹结构下；其完整的路径依赖于SDK的位置，例如：<br><br>\Epoc32\Build\EMCCSoft\HelloWorld\HelloWorld\Wins<br><br>　　通过在Visual C++中打开工作空间文件（helloworld.dsw），你可以编译或链接应用程序，这是通过按下<strong>F7</strong>或使用IDE菜单选项<strong>Build|Build HelloWorld.app</strong>实现的。<br><br><strong>　　使用</strong><strong>Borland C++IDE Builder 6</strong><strong>建立程序</strong><strong></strong><br><br>　　如果你使用Borland C++Builder 6<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/2951/22951.html" target=_blank><u><font color=#0000ff>移动版</font></u></a>（它是基于Borland C++Builder 6个人版并增加移动插件构成的），你可以简单地把<strong>HelloWorld</strong>项目的bld.inf文件导入IDE中。使用<strong>File|New|Other</strong>菜单选项，接着选择对话框中的<strong><a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/4991/19991.html" target=_blank><u><font color=#0000ff>Mobile</font></u></a></strong><strong>（移动）</strong>数据页的<strong>Import Mobile Application</strong><strong>（导入移动应用程序）</strong>。浏览组件描述文件（bld.inf）的位置并打开它。<br><br>　　使用<strong>Ctrl+F9</strong>或菜单中的<strong>Project|Make</strong>建立程序。为了建立并运行，使用<strong>F9</strong>或菜单中的<strong>Run|Run</strong>。请注意<strong>F9</strong>或<strong>Run|Run</strong>将导致项目每次都重新建立。如果仅仅在模拟器上运行，使用<strong>Tools|Mobile Build Tools|Run Emulator</strong>（<strong>工具</strong><strong>|</strong><strong>移动建立工具</strong><strong>|</strong><strong>运行模拟器</strong>）。IDE可能会提示你保存大量项目相关的文件，例如Borland项目（.bpr）、Borland项目组（.bpg）文件。这些文件保存的位置与你的bld.inf文件的文件夹相同。<br><br>　　我们也可以执行独立的<strong>abld</strong>命令并且运行其它一些SDK工具（例如<strong>Tools|Mobile Build Tools</strong>菜单上的<strong>aifbuilder</strong>和<strong>sisar</strong>）。<br><br><strong>　　使用</strong><strong>Borland C++BuilderX</strong><strong>建立程序</strong><strong></strong><br><br>　　使用任何一种商业C++BuilderX产品的时候，你都可以简单地把<strong>HelloWorld</strong>项目的bld.inf文件导入IDE中。<br><br>　　使用<strong>File|New</strong>并点击对象通道（Object Gallery）中的<strong>Mobile C++</strong>数据页。选择<strong>Import <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> C++ Project</strong><strong>（导入</strong><strong><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> C++</strong><strong>项目）</strong>。从<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/3848/23848.html" target=_blank><u><font color=#0000ff>下拉列表</font></u></a>中选择正确的Series 60 SDK，浏览项目的bld.inf文件的位置。点击<strong>Next</strong>数据页，给项目取一个名字，点击<strong>Finish</strong>数据页，项目将会打开。按下<strong>Ctrl+F9</strong>或<strong>Project|Make Project</strong>选择。按下<strong>F9</strong>或选择<strong>Run|Run Project</strong>或使用工具条项<strong>Make and Run</strong>运行项目。<br><br><strong>　　使用</strong><strong>CodeWarrior IDE</strong><strong>建立程序</strong><strong></strong><br><br>　　如果你使用的是Metrowerks CodeWarrior for <a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>（个人版2.5，其它的版本可能有稍微的不同），你可以简单地使用IDE菜单选项<strong>File|Import Project from .mmp File</strong><strong>（文件</strong><strong>|</strong><strong>从</strong><strong>.mmp</strong><strong>文件导入项目）</strong>来导入HelloWorld.mmp文件。<br><br>　　这将运行项目转换向导。选择该项目使用的SDK，选择（或浏览）.mmp文件，选择一种WINSCW平台（或让它空着）。Build变量的默认值是UDEB。使用<strong>F7</strong>或菜单中的<strong>Project|Make</strong>建立项目。<br><br>　　CodeWarrior项目文件（.cmp、.xml、.resources和.pref文件）都会自动地建立在HelloWorld.mmp文件所在的目录中。<br><br>　　你也可以选择通过命令行建立CodeWarrior IDE项目。运行前面描述的bldmake bldfiles，接着它会生成一个CodeWarrior IDE项目：<br><br>abld makefile cw_ide<br><br>　　这将在目录中建立一个可以导入的项目文件HelloWorld.xml：<br><br>\Epoc32\Build\EMCCSoft\HelloWorld\HelloWorld\Winscw<br><br>　　现在你可以使用CodeWarrior导入这个文件并生成一个本地项目（.mcp）文件。选择<strong>File|Import Project（导入项目）</strong>菜单选项，选中HelloWorld.xml文件，为项目选择一个名称（例如<strong>HelloWorld</strong>）。CodeWarrior将生成并载入该项目，你可以使用正常的IDE命令进行建立、运行、调试等操作了。 </p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-28 10:36 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/28/65657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK和Symbian开发入门之工具（二）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/27/65631.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 27 Apr 2010 06:28:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/27/65631.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">　<strong>Series 60模拟器</strong><br><br>　　Series 60应用程序的开发、调试和最初的测试一般都在PC模拟器上进行，该模拟器提供了一种基于微软<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>的Series 60设备的实现。在大多数情形中你会发现基于模拟器的开发过程与在真实的设备上运行的应用程序的操作是非常相似的；因此你的主要工作在<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>设备可以使用之前就可以进行了。模拟器的精确界面与提供的图形会有很大的不同，它依赖于你使用的目标平台、Series 60的版本和所选择的IDE。此外，还可能添加或删除一些按钮或其它的操作元素以模拟现实的设备的配置。同样，模拟器上可以使用的应用程序也依赖于平台的版本和设备厂商的选择。<br><br>　　模拟器和真实的设备之间有些差异无法避免。真实的Series 60设备可能带有<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>附件（例如照相头）和其它特性（例如后台振动）。因此有时候<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>对于开发和测试是必要的。此外，基于PC的模拟器不能精确地模拟精确计时、应用程序性能和内存管理的问题。<br><br>　　对于基于PC的开发，编辑/编译/建立周期是基于微软<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>开发工具集的。但是，与依赖Win32或MFC类库进行链接和建立不同，开发者将依赖于Series 60 SDK安装的头文件和PC格式的类库来进行链接和建立。作为结果的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>格式的二进制可执行文件就可以在以PC的模拟器上运行了。<br><br>　　在开发过程中，特定IDE的项目文件管理着所有的链接和建立细节信息。它同时确保了建立操作的所有输出和其它需要的资源文件（例如应用程序资源文件）都被放到了适当的位置以供在模拟器环境下进行运行和调试。<br><br>　　根据图1-2，Series 60显示屏逻辑上被分成三个区域：状态块、主块和控制块。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" onerror="this.src='/upimg/allimg/20060703/0325370.jpg' _fcksavedurl='/upimg/allimg/20060703/0325370.jpg';" hspace=3 src="http://www.chinaeda.cn/upload/2008_03/080327155051501.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" align=center vspace=1 border=1 twffan="done"><br>图1-2. Series 60模拟器</div>
            </td>
        </tr>
    </tbody>
</table>
<p><br>　　状态块是屏幕顶部的刻度条（在模拟器上是蓝色的）加上它上面的区域。主块是屏幕中间的，位于状态条和屏幕底部之间的软按键（soft key）标签之间的部分。控制块是紧接着主快，包含了软按键标签。<br><br>　　状态块可以显示当前应用程序的信息和设备的一些普通信息（例如信号强度和电池情况）。它在大多数情形中是可视的，但是有时候是隐藏的。例如很多游戏就使用了整个屏幕。<br><br>　　主块是屏幕的主要区域，应用程序可以在这儿显示数据。典型情况下，这个区域作为客户端矩形引用，它通常被应用程序的数据显示所填满。<br><br>　　控制块占据了屏幕的下部，它显示了与两个软按键相关的标签，并根据需要显示滚动条。与状态块类似，控制块有时候也可以隐藏。在这种情况下，在Series 60中样式指导假定用户可以使用Options菜单（左边的软按键的默认的标签），即使它是不可视的（请参考Series 60 SDK文档提供的&#8220;Nokia Series 60游戏UI样式指导&#8221;）。<br><br>　　控制块下面的两个按钮分别是左和右软按键，用于选择当前关联的Options菜单或标记的操作。四路导航按键可以上下左右滚动，如果按下（点击）中间就可以进行选择。<br><br>　　你可以通过PC鼠标或光标按键在显示屏上的对象之间进行导航，从而与模拟器交互操作。我们可以直接地使用鼠标点击来选择文件夹或其它显示的对象，而不需要使用四路导航按键（仅仅在模拟器上可行）。我们可以使用PC键盘进行数据输入，或者通过点击模拟器上的12位键区来输入。因此与模拟器的交互操作是类似于、但并不是完全与使用真实的Series 60一样的——在真实的设备上没有笔输入，因此所有的移动和选择都是通过光标导航完成的 </p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-27 14:28 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/27/65631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK和Symbian开发入门之工具（一）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/26/65610.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 26 Apr 2010 01:37:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/26/65610.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px"><font size=3>开发Series 60项目的时候你可以使用的各种选项总结在表1-1中。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>、Nokia和开发工具厂商Borland、Metrowerks正在提供更多的选择。但是，好像微软开发工具，尽管它目前可行并被广泛地使用，在可预见的未来无法受到支持。<br><br>　　在微软、Borland和Metrowerks的多种IDE的功能之间目前有一些值得注意的差别。对后两种开发环境的增强正在进行之中。EMCC软件有限公司把所有的三种厂商的IDE都作为自己开发活动的基础。我们也每天使用命令行工具——并不是因为我们原意，而是由于我们目前只能这样做。这是为目标设备建立程序和自动化通宵编译过程的基本操作。C++BuilderX和CodeWarrior IDE现在可以用于为目标设备建立程序——但并不是所有的基本的建立操作都受到全部IDE的支持。<br><br>　　在写作本文的时候，开发任何Series 60项目的最容易的和最通用的出发点是定义一对bld.inf和.mmp项目文件。在EMCC软件公司，这些文件用于任何特定IDE项目文件的生成过程，并且可以在任何需要的命令行建立过程中使用。这种方法也是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>和Nokia在它们的SDK和文档中提供的每个简单的项目目前所采用的方法。在目前情况不断变化的情况下使用专用的IDE是不可行的。各种情况很快就会发生变化，而这正式<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS和Series 60开发人员的真实生活。<br><br><strong>　　　　　　　　　　　　　　　　　表</strong><strong>1-1.</strong><strong>基于</strong><strong>PC</strong><strong>的开发选项综合</strong><strong></strong><br>
<table cellSpacing=0 cellPadding=0 align=center border=1>
    <tbody>
        <tr>
            <td vAlign=top width=122><br><strong>选项</strong><strong></strong><br></td>
            <td vAlign=top width=438><br><strong>描述</strong><strong></strong><br></td>
        </tr>
        <tr>
            <td vAlign=top width=122><br>命令行建立操作<br></td>
            <td vAlign=top width=438><br>使用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS工具进行编译和链接，使用微软Visual C++编译器/链接器为模拟器进行建立操作，从命令行调用。模拟器也可以从命令行调用。PC模拟器上的源代码层的调试需要在IDE中进行。<br><br>从命令行提示符调用用于<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>目标设备的GNU C++的跨平台编译器和链接器。<br></td>
        </tr>
        <tr>
            <td vAlign=top width=122><br>微软Visual C++ IDE<br></td>
            <td vAlign=top width=438><br>在IDE中使用微软Visual C++编译器/链接器为模拟器建立操作进行编译和链接。<br><br>从命令行提示符调用用于<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>目标设备的GNU C++的跨平台编译器和链接器。<br></td>
        </tr>
        <tr>
            <td vAlign=top width=122><br>Borland C++ IDE<br></td>
            <td vAlign=top width=438><br>目前两种IDE选择都可以使用。两者都在IDE之中使用Borland C++编译器和链接器进行模拟器建立操作。<br><br>从命令行提示符调用用于<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>目标设备的GNU C++的跨平台编译器和链接器。<br></td>
        </tr>
        <tr>
            <td vAlign=top width=122><br>Metrowerks CodeWarrior C++ IDE<br></td>
            <td vAlign=top width=438><br>在IDE内部使用Metrowerks编译器和链接器进行模拟器建立操作。<br><br>直接从命令行或CodeWarrior IDE内部调用<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml"><u><font color=#0000ff>ARM</font></u></a>目标设备建立操作所需要的GNU跨平台编译器和链接器。<br></td>
        </tr>
    </tbody>
</table>
<p><br>　　在本文的剩余部分中，我们使用HelloWorld示例项目来演示Series 60模拟器的开发、调试和部署过程的所有步骤。<br><br>　　我们也提供了示例应用程序需要的其它的所有文件——例如头文件（.h）、源文件（.cpp）和用户界面资源文件（.rss）。<br><br>　　你可以使用Series 60模拟器测试该应用程序，或者在某个IDE中启动它，或者从命令行提示符上运行它。但是，在模拟器上调试应用程序必须在IDE内部进行。<br><br>　　在模拟器上开发、运行、测试和调试应用程序之后，一般你都希望在目标设备上建立和运行该程序。因此我们还演示了如何为目标设备建立示例应用程序，如何部署它，并在目标Series 60<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>上运行它。<br></p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</font></div>
v
<img src ="http://www.cnitblog.com/maolxu/aggbug/65610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-26 09:37 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/26/65610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK和Symbian开发入门之概述（二）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/23/65565.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 23 Apr 2010 07:44:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/23/65565.html</guid><description><![CDATA[<strong>Series 60模拟器<br><br></strong>　　Series 60应用程序的开发、调试和最初的测试一般都在PC模拟器上进行，该模拟器提供了一种基于微软<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>的Series 60设备的实现。在大多数情形中你会发现基于模拟器的开发过程与在真实的设备上运行的应用程序的操作是非常相似的；因此你的主要工作在<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>设备可以使用之前就可以进行了。模拟器的精确界面与提供的图形会有很大的不同，它依赖于你使用的目标平台、Series 60的版本和所选择的IDE。此外，还可能添加或删除一些按钮或其它的操作元素以模拟现实的设备的配置。同样，模拟器上可以使用的应用程序也依赖于平台的版本和设备厂商的选择。<br><br>　　模拟器和真实的设备之间有些差异无法避免。真实的Series 60设备可能带有<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>附件（例如照相头）和其它特性（例如后台振动）。因此有时候<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65"><u><font color=#0000ff>硬件</font></u></a>对于开发和测试是必要的。此外，基于PC的模拟器不能精确地模拟精确计时、应用程序性能和内存管理的问题。<br><br>　　对于基于PC的开发，编辑/编译/建立周期是基于微软<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>开发工具集的。但是，与依赖Win32或MFC类库进行链接和建立不同，开发者将依赖于Series 60 SDK安装的头文件和PC格式的类库来进行链接和建立。作为结果的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><u><font color=#0000ff>Windows</font></u></a>格式的二进制可执行文件就可以在以PC的模拟器上运行了。<br><br>　　在开发过程中，特定IDE的项目文件管理着所有的链接和建立细节信息。它同时确保了建立操作的所有输出和其它需要的资源文件（例如应用程序资源文件）都被放到了适当的位置以供在模拟器环境下进行运行和调试。<br><br>　　根据图1-2，Series 60显示屏逻辑上被分成三个区域：状态块、主块和控制块。<br><br>
<table width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center><img style="CURSOR: pointer" onclick=javascript:window.open(this.src); height=314 src="http://www.chinaeda.cn/upload/2008_03/080327154791241.gif" width=300 onload=rsimg(this,300) resized="true"><br>图1-2. Series 60模拟器</div>
            </td>
        </tr>
    </tbody>
</table>
<p><br>　　状态块是屏幕顶部的刻度条（在模拟器上是蓝色的）加上它上面的区域。主块是屏幕中间的，位于状态条和屏幕底部之间的软按键（soft key）标签之间的部分。控制块是紧接着主快，包含了软按键标签。<br><br>　　状态块可以显示当前应用程序的信息和设备的一些普通信息（例如信号强度和电池情况）。它在大多数情形中是可视的，但是有时候是隐藏的。例如很多游戏就使用了整个屏幕。<br><br>　　主块是屏幕的主要区域，应用程序可以在这儿显示数据。典型情况下，这个区域作为客户端矩形引用，它通常被应用程序的数据显示所填满。<br><br>　　控制块占据了屏幕的下部，它显示了与两个软按键相关的标签，并根据需要显示滚动条。与状态块类似，控制块有时候也可以隐藏。在这种情况下，在Series 60中样式指导假定用户可以使用Options菜单（左边的软按键的默认的标签），即使它是不可视的（请参考Series 60 SDK文档提供的&#8220;Nokia Series 60游戏UI样式指导&#8221;）。<br><br>　　控制块下面的两个按钮分别是左和右软按键，用于选择当前关联的Options菜单或标记的操作。四路导航按键可以上下左右滚动，如果按下（点击）中间就可以进行选择。<br><br>　　你可以通过PC鼠标或光标按键在显示屏上的对象之间进行导航，从而与模拟器交互操作。我们可以直接地使用鼠标点击来选择文件夹或其它显示的对象，而不需要使用四路导航按键（仅仅在模拟器上可行）。我们可以使用PC键盘进行数据输入，或者通过点击模拟器上的12位键区来输入。因此与模拟器的交互操作是类似于、但并不是完全与使用真实的Series 60一样的——在真实的设备上没有笔输入，因此所有的移动和选择都是通过光标导航完成的。。 <a href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1883680.shtml" target=_self></a><a href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1883680.shtml" target=_self></a></p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-23 15:44 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/23/65565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK和Symbian开发入门之概述(一）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/23/65564.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 23 Apr 2010 07:34:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/23/65564.html</guid><description><![CDATA[<div class=c><span style="FONT-SIZE: 14px">
<p>&nbsp;本文介绍建立、部署和运行拥有图形用户界面（<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/3471/118471.html" target=_blank>GUI</a>）的Series 60示例应用程序的过程。<br><br>　　我们假定你已经安装了Series 60软件开发工具包（SDK），并安装了自己选择的集成开发环境（IDE）。这两项安装都非常容易。<br><br>　　本文的主题包括： </p>
<ul>
    <li><strong>开发过程概述</strong>——在模拟器或目标设备上定义、建立和运行Series 60项目过程的详细说明，还有很多IDE的指南，以及开发者可以使用的编译选项。
    <li><strong>Series 60</strong><strong>模拟器</strong>——Series 60模拟器的特性和布局，同时包含了调试版本和发放版本。它包含了模拟器和真实的Series 60设备之间的相似性和不同点。
    <li><strong>在模拟器上建立程序</strong>——如何使用不同厂商的IDE和P<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/4471/124471.html" target=_blank>C命令</a>提示符为模拟器建立<strong>HelloWorld</strong>项目。
    <li><strong>运行模拟器</strong>&shy;——启动模拟器的多种方法，以及如何定位和运行示例<strong>HelloWorld</strong>应用程序。
    <li><strong>在目标设备上建立程序</strong>——如何为Series 60设备建立<strong>HelloWorld</strong>示例应用程序，把它编译为<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>二进制可执行文件。
    <li><strong>在目标设备上部署程序</strong>——如何把应用程序的多个组件打包，选择某种方法把它传输到Series 60设备上，接下来如何定位并执行它。 </li>
</ul>
<p>　　开发过程的一步一步的概述将为你演示基本的步骤。这是使用Series 60 C++程序建立工具和多种IDE的快速指导。你会看到如何为Series 60模拟器建立和运行&#8220;Hello World&#8221;应用程序，以及如何在目标设备上建立、部署和运行该应用程序。本文提供了建立和运行<strong>HelloWorld</strong>示例的所有信息。<br><br>　　<strong>Series 60 C++软件开发工具包（SDK）</strong><br><br>　　<a title="" href="http://www.chinaeda.cn/list.aspx?cid=100" target=_blank>Symbian</a> OS广泛地应用于智能电话平台，例如Series 60、Series 80和Series 90就是三种来自Nokia和UIQ（UIQ技术公司的UI平台）的UI平台。<br><br>　　Series 60 SDK建立在<a title="" href="http://www.chinaeda.cn/list.aspx?cid=100" target=_blank>Symbian</a>公司发布的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a> OS C++ SDK的某种版本之上。SDK包含了大量的工具、API、类库和文档，它允许你开发新的应用程序。<br><br>　　作为开发人员，你可能需要使用Series 60 SDK的多个版本的（甚至来自于不同的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a> OS UI平台的SDK）。最重要的问题是为你选择的Series 60产品选择正确的SDK版本。<br><br>　　Nokia或Series 60获得许可发布了用于Series 60平台特定版本开发的SDK。也就是说，每个Series 60产品都是基于特定平台版本的，SDK版本被定制成在某个平台版本上开发。特定的SDK版本也可能适合前面版本的平台。这种&#8220;向后兼容性&#8221;依赖于用作版本基础的<a title="" href="http://www.chinaeda.cn/list.aspx?cid=100" target=_blank>Symbian</a> OS版本、应用程序开发者使用的API、以及不同的平台版本之间的API所发生的改变。特殊的获得许可者也可能引入的产品专用的API，以允许开发者访问它们的Series 60与其它的产品不同的特性。例如，Siemens SX1智能电话包含了<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/4971/119971.html" target=_blank>FM</a>收音机，因此相应的SDK可以包含&#8220;附加的&#8221;API来维护收音机。为了最大化不同产品之间的兼容性，你可能希望避免使用这类产品专用的API。你甚至会选择限制对通用API的使用，只使用某种平台版本的选定范围的通用的、不会发生变化的API。<br></p>
<h4>　　使用多个SDK</h4>
<p>　　使用一个<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a> OS SDK非常容易，而且安装过程会使它立即可用。但是，开发者通常需要使用Series 60的多个不同版本的SDK，甚至于不同用户界面平台的SDK。你可以把多个SDK安装在开发的PC上，对于在哪儿安装它们、如何选择使用作出一些限制。<br><br><strong>　　开发过程概述</strong><br><br>　　 SDK提供了基于PC平台的模拟器，因此大多数开发和测试操作都可以在没有目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>设备的情况下完成。我们可以为模拟器和目标<a title=硬件设计 href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>设备建立不同的调试（debug）或发布（release）版本的Series 60项目可执行文件（尽管目前目标设备上的调试版本还有一些限制）。此外，为目标设备进行编译的时候，还可以建立不同二进制格式（例如<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>I、<a title=ARM-Linux软件工程师—高级培训班 href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>4和Thumb）的可执行代码。编译和链接的过程可以使用命令行工具或在多种IDE中进行。本文谈论到的IDE包括微软Visual C++ 6、Metrowerks CodeWarrior、Borland C++Builder 6移动版和Borland C++BuilderX移动版。<br><br>　　<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>设计了一种用平台无关的（platform-neutral）方式描述开发项目的方法。在<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>中会建立两个全局文件（projectname.mmp和bld.inf），其中projectname是将要开发的组件或应用程序的名称（示例项目中是<strong>HelloWorld</strong>）。这两个文件可以作为任何建立应用程序选项、IDE和平台的出发点。<br><br>　　bld.inf指定了将要建立的所有项目组件的名称，并且每个组件都在自己的.mmp文件中说明。这两个文件都是纯文本的，通常你只拥有一个.mmp文件，它定义了将要建立的应用程序。如果项目包含多个组件，例如包含应用程序本身和特定的函数库，那么每个组件都将拥有自己的.mmp文件。每个程序库和应用程序都有一个.mmp文件，并且每个文件名都列举在项目的bld.<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1854/116854.html" target=_blank>inf文件</a>中。<br><br>　　在<strong>HelloWorld</strong>例子中有两个项目说明文件：bld.inf和helloworld.mmp。使用这两个文件可以建立我们所需要的任何特定平台的项目和命令文件。<br><br>　　典型情况下，你使用一个叫做bldmake的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>工具，把项目的两个说明文件作为输入来生成一个叫做abld.bat的命令文件；接着你可以在命令行中使用abld.bat，来执行大量的项目相关的操作。例如，abld.bat可以用于生成特定平台和特定IDE的项目组成文件（makefiles）。如果项目源代码存在，或者已经完成了，我们可以使用abld为一个或多个平台编译该项目。<br><br>　　由于大多数开发的项目都在某个IDE中建立和运行，你一般只需要建立适合的IDE项目文件。<br><br>　　在使用微软Visual C++的时候，你将在命令行中使用abld建立HelloWorld.<a class=bluekey href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/2644/122644.html" target=_blank>dsp</a>和HelloWorld.dsw项目文件。.dsw是在IDE中打开的工作空间文件，它可以指向一个或多个.<a title="DSP C5000系统开发—高级培训班 " href="http://www.chinaeda.com/ke/dsp.shtml">dsp</a>文件。<br><br>　　对于Metrowerks CodeWarrior，你既可以使用普通的方式在IDE中建立项目文件，也可以把.mmp文件直接导入IDE中。导入过程将建立CodeWarrior的特定项目（HelloWorld.mcp）所需要的文件。<br><br>　　类似地，Borland C++ Builder移动版IDE能够执行与Metrowerks IDE类似的导入事务，但是它是导入bld.inf文件而不是.mmp文件。例如Borland C++BuilderX将建立叫做HelloWorld.cbx的项目文件。<br><br>　　打开特定IDE的项目文件将允许你开发、建立、运行和调试该应用程序，并拥有IDE的全面支持。<br><br>　　对于宁可在命令行层次工作的开发者来说，abld也可以用于在命令提示符下进行编译和链接。<br><br>　　建立特定IDE项目文件的所有方法要点将在本文后面的部分谈到。此外，图1-1显示了使用两个通用的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a> OS项目文件生成我们所需要的特定平台的项目文件（通过IDE导入选项或使用<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>工具）。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center><strong><img onerror="this.src='http://www.yesky.com/upimg/2006-05-12/171204_02_568.gif';" hspace=3 src="http://www.chinaeda.cn/upload/2008_03/080327154787871.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" align=center vspace=1 border=1><br>图</strong><strong>1-1.</strong><strong>从通用的</strong><strong><a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></strong><strong>文件得到的特定</strong><strong>IDE</strong><strong>和特定平台的项目文件</strong><strong></strong></div>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-23 15:34 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/23/65564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Symbian OS字符串描述符编程(四）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/21/65493.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Wed, 21 Apr 2010 02:58:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/21/65493.html</guid><description><![CDATA[<div id=BlogArticleDetail style="FONT-SIZE: 14px">
<p><font size=3><strong>4. TBufC&lt;n&gt;的用法<br><br>　　上面关于TPtrC的使用举例，有助于理解TBufC&lt;n&gt;的用法,不过下面有几个例子是关于如何创建TBufC&lt;n&gt;。<br><br>　　实例5:-实例化TBufC&lt;N&gt;:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>//用文字实例化<br>_LIT(Ktext, "TestText");<br>TBufC&lt;10&gt; Buf (Ktext);<br>//或<br>TBufC&lt;10&gt; Buf2;<br>Buf2 = Ktext;<br>//用现有的TBufC来创建一个新的TBufC<br>TBufC&lt;10&gt; Buf3(Buf2);</td>
        </tr>
    </tbody>
</table>
<br>　　TBufC&lt;n&gt;一般用于文本数据。对于二进制数据，应显示地使用TBufC8&lt;n&gt;。尽管TBufC&lt;n&gt;意味着数据不能被修改(&#8217;C&#8217;代表Constant：不变的),但是还有两种方法可以改变数据：<br><br>　　&#183;数据可以使用赋值运算符进行替换。<br><br>　　&#183;通过使用Des()函数来为缓冲区数据构建一个TPtr可修改的指针描述符。<br><br>　　让我们看改变TBufC&lt;N&gt;的上下文的第一步。<br><br>　　实例6:-改变TBufC&lt;N&gt;的上下文:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>//测试用的一些文字<br>_LIT(Ktext , "Test Text");<br>_LIT(Ktext1 , "Test1Text");<br>//生成TPtrC<br>TBufC&lt;10&gt; Buf1 ( Ktext );<br>TBufC&lt;10&gt; Buf2 ( Ktext1 );<br>//改变Buf2的上下文<br>Buf2 = Buf1;<br>//创建一个空的TbufC并把它赋给Buf1<br>TBufC&lt;10&gt; Buf3;<br>Buf3 = Buf1;</td>
        </tr>
    </tbody>
</table>
<br>　　另一种改变TBufC&lt;n&gt;的上下文内容的方式是使用Des()成员函数。这个成员函数使用TPtr成员返回一个TPtr可修改的指针描述符。TPtr的最大长度是TBufC&lt;n&gt;模板参数的值。所有的操作函数都来源于基类TdesC。<br><br>　　实例7:-使用Des()来改变TBufC&lt;N&gt;的上下文:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>_LIT(Ktext , "Test Text");<br>_LIT(KXtraText , "New:");<br>TBufC&lt;10&gt; Buf1 ( Ktext );<br>TPtr Pointer = Buf1.Des();<br>// 删除最后4个字符<br>Pointer.Delete(Pointer.Length()-4, 4 );<br>//现在作相应的长度改变<br>TInt Len = Pointer.Length();<br>// 添加一个新串<br>Pointer.Append(KXtraText);<br>Len = Pointer.Length();<br>//要完全改变上面的缓冲区，我们可以使用下面的语句：<br>_LIT(NewText , "New1");<br>_LIT(NewText1 , "New2");<br>TBufC&lt;10&gt; Buf2(NewText);<br>//改变上下文 <br>Pointer.Copy(Buf2);<br>//或者直接进行字面复制<br>Pointer.Copy(NewText1);<br>//所有上面所做的变化实际上改变了Buf1的上下文</td>
        </tr>
    </tbody>
</table>
<br>　　5. 使用堆描述符HBufC<br><br>　　当我们不知道描述符中数据的大小时，HBufC是可选用的描述符。这里的&#8217;C&#8217;代表不变的（constant），这意味着数据是不可改变的，但是它在两种情况下也可以改变，就象对于TBufC&lt;n&gt;的情况所做的改变一样。第一种情况是使用赋值运算符，第二种情况是使用可修改的指针描述符,如使用成员函数时的TPtr。在使用HbufC时，要记住两种情况：<br><br>　　&#183;如果你需要把HbufC传递给一个用TDesC&amp;作为参数的函数,你只须简单地取消对HBufC指针的参照即可。<br><br>　　&#183;可以通过使用ReAlloc函数来改变堆描述符缓冲区的大小，就象对于TBufC&lt;N&gt;的情况一样.<br><br>　　实例8:-HbufC的用法:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>//创建一个堆描述符，有两种方法<br>//第一种方法使用New(),NewL()或NewLC()之一<br>//让我们看一个例子.这里将构建一个HbufC：所用数据空间为15,但是当前大小是0<br>HBufC * Buf = HBufC::NewL(15);<br>// 第二种方法使用 <br>// 现有描述符的Alloc(), AllocL(), 或AllocLC()方法。这个新的堆描述符用描述符的内容自动初始化 <br>_LIT (KText , "Test Text");<br>TBufC&lt;10&gt; CBuf = KText;<br>HBufC * Buf1 = CBuf.AllocL();<br>// 我们检查一下大小和长度。这里大小是18，而长度是9 <br>TInt BufSize = Buf-&gt;Size();<br>TInt BufLength = Buf-&gt;Length();<br>// 改变HbufC的指向<br>_LIT ( KText1 , "Text1");<br>//使用赋值运算符来改变指向KText1的缓冲区<br>*Buf1 = KText1;<br>// 下面通过可修改的指针描述符来改变 数据<br>TPtr Pointer = Buf1-&gt;Des();<br>Pointer.Delete( Pointer.Length() - 2, 2 );<br>// 所有能对 TBufC&lt;n&gt; 进行的操作在些都可用<br>//下面是一个这样的操作 <br>_LIT ( KNew, "New:");<br>Pointer.Append( KNew );</td>
        </tr>
    </tbody>
</table>
<br>　　6. TPtr的用法<br><br>　　我们使用它来取代TBufC&lt;N&gt;和HBufC,因为我最了解它。因此，让我们先记住如何创建TPtr。<br><br>　　&#183;用另一个TPtr。<br><br>　　&#183;从TBufC&lt;N&gt;,或者通过成员函数Des()使用HbufC来创建。<br><br>　　&#183;从一个指向内存的外部指针并指定最大长度。<br><br>　　&#183;从一个指向内存的外部指针并指定数据及其最大长度。<br><br>　　实例9:-TPtr的用法:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>//先让我们看一下两种取得TPtr的方法<br>_LIT(KText, "Test Data");<br>TBufC&lt;10&gt; NBuf ( KText );<br>TPtr Pointer = NBuf.Des();<br>//第一种方法 <br>TPtr Pointer2 ( Pointer );<br>//第二种方法使用一个内存区段,用于存储数据和最大长度<br>TText * Text = _S("Test Second");<br>TPtr Pointer3 ( Text ,11, 12);<br>// 现在我们看一下，怎么用TPtr 替换数据,这完全可以通过<br>//赋值运算符或拷贝函数来实现<br>_LIT(K1, "Text1");<br>_LIT(K2, "Text2");<br>Pointer2 = K1; // 数据是Text1<br>Pointer.Copy(K2); // 数据是Text2;<br>// 我们还可以改变数据的长度或把它设置为0<br>Pointer2.SetLength(2); // 只剩下 Te两个字符<br>Pointer2.Zero(); // 把长度设置为0 <br>//可以使用delete 函数来更改数据，如前面的例中所示</td>
        </tr>
    </tbody>
</table>
</p>
<p><br>　　7. TBuf&lt;n&gt;的用法<br><br>　　在这个数据结构中，其中的数据并不是固定不变的。运算、实例化和赋值都与TBufC&lt;n&gt;一致；对于它的修改操作，与TPtr一致,象复制、删除、赋值等等。我想这一部分就不用再给出例子了。<br>。 </p>
</strong></font>
<p><font size=3><strong></strong></font>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-21 10:58 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/21/65493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Symbian OS字符串描述符编程(三）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/20/65460.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Tue, 20 Apr 2010 02:24:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/20/65460.html</guid><description><![CDATA[<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3><font style="LINE-HEIGHT: 18px" face="Times New Roman">(五) 移动PowerPoint<br><br>　　移动PowerPoint(见图13)是<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0中的一个新型应用程序。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178991.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图 13.<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0中的移动PowerPoint</div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　不必依靠第三方应用程序来观看PowerPoint幻灯片，现在你能够使用PowerPoint Mobile(见图14)来直接实现这个愿望。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178992.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图14.用<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0中的移动PowerPoint观看PowerPoint幻灯片</div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　(六) 移动Internet Explorer<br><br>　　<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0中的Internet Explorer更得到了极大的加强。现在它有增强的脚本支持（如Javascript），还有一个进度条来显示下载进度（见图15）。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178993.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图15.IE中新的进度条</div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　IE现在支持三种视图选项：默认、单列和桌面。你还可以切换到全屏幕方式来观看更多的内容，这时任务栏和软按钮均被隐藏。图16显示出各种视图选项。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178994.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图16.缺省视图,单列视图和全屏视图</div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　为了观看网页，你可以切换到landscape方式以更好地利于在你的屏幕上的观看。图17显示出默认和桌面视图之间的差别。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178995.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图17.缺省视图与桌面视图(landscape方式)</div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　IE还支持图像保存功能(见图18)。<br><br>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154178996.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图18.在IE中保存图像</div>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p><br>　　(七) 其它增强特征<br><br>　　除了前面所及的特征外，在<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0中还有另外一些新特征，列举如下：<br><br>　　&#183;针对Smartphone的WiFi支持。<br><br>　　&#183;针对Pocket PC的持续性存储功能，这意味着就算电池没电了，你的数据也会丝毫不受损失。<br><br>　　&#183;一个新版本的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Media Player 10，允许用户同步音乐、播放列表和收藏、图像、视频甚至电视节目录制。<br><br>　　&#183;支持按键谈话和视频电话。<br><br>　　&#183;为在多台计算机上通过Bluetooth使用ActiveSync的增强的Bluetooth。<br><br>　　&#183;支持USB 2.0及内置硬盘。<br><br>　　&#183;支持设备制造商选项以把微软的Voice命令工具集成到他们的设备中（Pocket PC以及Smartphone)，这就允许用户通过在Contacts应用程序中说出一个人的名字来实现拨号功能。<br><br>　　&#183;新的GPS管理器，它将简化到GPS接收器的连接。<br><br>　　<strong>三、 小结</strong><br><br>　　在接下来的几个月中，你将能够看到市场上更多的设备运行这种新型的<a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#000000>Windows</font></a> Mobile 5.0平台。在不久的将来我会讨论更多的平台问题，只要我能接触到这些新设备！但是目前，请先检查你的设备厂商的网站，看看他们是否为你的设备提供了更新功能。。 </p>
<p>&nbsp;</p>
<p><font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=3>咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><font size=3><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font>&nbsp;</span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span></font><font size=4><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">&nbsp;</span></font></p>
</font></font></span>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-20 10:24 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/20/65460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Symbian OS字符串描述符编程（二）</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/19/65399.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 19 Apr 2010 03:48:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/19/65399.html</guid><description><![CDATA[(<font size=4>二) Contacts应用程序<br><br>　　</font><a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#0000ff size=4><u>Windows</u></font></a><font size=4> Mobile 5.0中的Contacts应用程序被进一步增强（见图8）。图标现在被显示在个人信息的附近。另外,现在你能把一幅相片依附到一个联系人上（如果你的Pocket PC有一个内建的照相机的话，这很容易做到）。如果你的Pocket PC电话编辑设备支持Caller ID,这个人的相片将在他/她每次打电话时被显示出来。而且，无论何时他/她发来一个邮件，该相片也被显示。<br><br></font>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><font size=4><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154066281.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图 8.Contacts应用程序</font></div>
            </td>
        </tr>
    </tbody>
</table>
<br><font size=4>　　刚才讨论的特点也在Smartphone中得到支持(见图9)。<br><br></font>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><font size=4><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154066282.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图 9.Smartphone中的Contacts应用程序</font></div>
            </td>
        </tr>
    </tbody>
</table>
<br><font size=4>　　(三) 移动Word<br><br>　　Pocket Word现在被名称为Word Mobile(见图10)。事实上,微软已经从它的大多数应用程序中删除掉了"Pocket"的名字（见下面几节中的例子）。<br><br></font>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><font size=4><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154066283.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图 10.</font><a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#0000ff size=4><u>Windows</u></font></a><font size=4> Mobile 5.0中的移动Word</font></div>
            </td>
        </tr>
    </tbody>
</table>
<br><font size=4>　　Word Mobile中的一个重要之处在于它能够显示嵌入的图像。图11显示出一个通过Hotmail收到的word文档，然后使用Word Mobile打开之。不是显示一个其上有一个叉号的盒子（如</font><a title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32"><font color=#0000ff size=4><u>Windows</u></font></a><font size=4> Mobile 2003中的Pocket Word），而是显示嵌入的图像。<br><br></font>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><font size=4><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154066284.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图 11.在Word文档中显示一幅图像</font></div>
            </td>
        </tr>
    </tbody>
</table>
<br><font size=4>　　(四) 移动Excel<br><br>　　袖珍Excel也称作移动Excel。在移动Excel中，现在你可以显示在工作表中的各种图表(见图12)。 <br><br></font>
<table class=" FCK__ShowTableBorders" width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center twffan="done"><font size=4><img alt="" src="http://www.chinaeda.cn/upload/2008_03/080327154066285.jpg" onload="var image=new Image();image.src=this.src;if(image.width>0 &amp;&amp; image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" border=0 twffan="done"><br>图12.在移动Excel中显示图表</font></div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-19 11:48 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/19/65399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Symbian OS字符串描述符编程（—） </title><link>http://www.cnitblog.com/maolxu/archive/2010/04/16/65358.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 16 Apr 2010 09:31:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/16/65358.html</guid><description><![CDATA[<div class=c><span style="FONT-SIZE: 14px">1. 简介<br><br>　　当我刚开始学习<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>时,我遇到的第一件事情就是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS字符串的处理和使用问题。要学习<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>字符串的使用，必须费一定脑筋才行。但是一旦你掌握了其中的要领，它就变得容易多了。<br><br>
<div class=guanggao twffan="done"><span id=contentAdv twffan="done"></span></div>
　　因此，下面我将解释我是怎样学习基本的<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a> OS字符串处理并对之加以记忆的。<br><br>　　注意，理解本文的前提是对<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统的工作机理有一定了解。<br><br>　　2. 背景<br><br>　　你要做的第一件事情是记住字符串描述符层次结构图。这是很重要的，因为以后所有你要使用的五个描述符都派生于某些类，你必须了解它们分别是从哪些类派生的，以便确定应该使用哪些特别描述符及其使用场所。本文中我不准备解释什么是缓冲描述符及堆描述符的含义，以及可修改的描述符和不可修改的描述符是什么含义。但是，我相信你必须对上面的术语有足够的了解才行。<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>描述符层次结构看起来相当绝妙。你可以参考下图，该图来源于newlc。<br><br>　　3. TPtrC&lt;n&gt;用法<br><br>　　其字面含义是"一个指向不可被操作的数据的指针"。关于TPtrC&lt;n&gt;，首先要记住，它不包含对自己的一些操作函数，而只含有构造器和设置方法。另外，既然它派生于TDesC，它就包含了TDesC的所有功能。<br><br>　　指针指向数据的方式有下面两种：<br><br>　　&#183;先创建一个空的TPtrC&lt;N&gt;，然后用Set(...)函数把它指向一些数据。 <br><br>　　&#183;通过使用任何一个重载的构造函数，在构造过程中传递数据。<br><br>　　让我们通过下面几个例子来看一下上面的描述：<br><br>　　实例1:-从TBuf和TbufC中取得TPtrC:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>LIT(KText , "Test Code");<br>TBufC&lt;10&gt; Buf ( KText ); OR(/) TBuf&lt;10&gt; Buf ( KText );<br>// 使用构造器创建TPtr<br>TPtrC Ptr (Buf);<br>//使用成员函数创建TPtr<br>TPtrC Ptr1;<br>Ptr1.Set(Buf);</td>
        </tr>
    </tbody>
</table>
<br>　　实例2:-从TText*中取得TPtrC:<br><br>　　下面的实例使用了TText16:<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>TText * text = _S("Hello World\n");<br>TPtrC ptr(text);<br>// 或<br>TPtrC Ptr1;<br>Ptr1.Set(text);<br>//要只存储Ttext的一部分，我们可以使用下面的语句 <br>//这个描述符指针将只存储Hello<br>TPtrC ptr4(text,5);</td>
        </tr>
    </tbody>
</table>
<br>　　实例3:-从另外一个TPtrC取得TPtrC:<br><br>　　你可以容易地把一个TPtrC赋值给另一个TPtrC。<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>TText * text = _S("Hello World\n");<br>TPtrC ptr(text);<br>//从另外一个TPtrC取得TPtrC<br>TPtrC p1(ptr);<br>//或<br>TPtrC p2;<br>p2.Set(ptr);</td>
        </tr>
    </tbody>
</table>
<br>　　实例4:-从TPtrC中取得TText *: <br><br>　　我们可以通过Ptr()成员使用来从TPtrC中取得TText *。<br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td>//设置TPtrC<br>_LIT(KText,"Test Code");<br>TBufC&lt;10&gt; Buf ( KText ); <br>TPtrC Ptr1 (Buf);<br>//取得TText*<br>TText* Text1 = (TText *)Ptr1.Ptr();</td>
        </tr>
    </tbody>
</table>
<p><br>。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face=Arial></font>&nbsp;<font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font><font size=4>&nbsp;</font></span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=4>&nbsp;</font></span></p>
</span></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-16 17:31 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/16/65358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Symbian平台智能手机突破一亿</title><link>http://www.cnitblog.com/maolxu/archive/2010/04/15/65286.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Thu, 15 Apr 2010 03:55:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/04/15/65286.html</guid><description><![CDATA[<span style="FONT-SIZE: 14px">&nbsp;
<p><font face=Arial>11月17日消息，据外电报道，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>公司周四宣布，全球使用其操作系统的智能手机已经突破1亿大关，目前全球有250多个网络运营商的客户采用了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>操作系统手机。</font></p>
<p><font face=Arial>　　近几个月来智能手机的增长浪潮推动了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>操作系统手机的增长。第三季度共销出了1300万部<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>智能手机，比去年同期的850万部增长了52%。</font></p>
<p><font face=Arial>　　由于新<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>手机的功能改进和较低的格，全球<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>操作系统手机的出货数量创下新高。</font></p>
<p><font face=Arial>　　<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>公司CEO Clifford发表声明称：我们看到了推动智能手机增长的两种趋势，第一，虽然智能手机在大多数成熟和发达国家市场有着最高的普及率，但未来最高的增长率有可能是那些高速增长的发展中国家市场，比如中国、印度和巴西。在今后五年内，发展中国家市场有可能占全球智能手机销售额的50%。第二，青少年手机市场也是智能手机市场的增长机会。</font></p>
<p><font face=Arial>　　<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>公司发言人称：最近几个月来，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>手机在美国市场获得高速增长。特别是近几周来，由于Cingular无线公司向用户推荐诺基亚E62手机，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>手机普及率大增。诺基亚E62手机采用了QWERTY键盘，与运营商签约两年的用户可用99美元价格拿到这款手机。</font></p>
<p><font face=Arial>　　诺基亚公司是<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>公司最大股东、其他股东有爱立信公司、索尼爱立信公司、松下移动通讯公司、西门子公司和三星电子公司，它们分别拥有较小的股权。其他手机制造商则需要<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#336699>Symbian</font></u></a>的转让授权。</font></p>
<p><font face=Arial></font>&nbsp;</p>
<p><font face=Arial></font>&nbsp;<font size=3><strong>CTIC.<font style="LINE-HEIGHT: 20px" face=宋体>川科创新</font></strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">3G<font style="LINE-HEIGHT: 20px" face=宋体>嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: rgb(255,102,0); LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face=宋体>送手机</font></span></font><span style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 20px; FONT-FAMILY: 宋体">)</span> </p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face=宋体>手机软件工程师</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">培训</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; TEXT-DECORATION: none">班</span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt; COLOR: rgb(255,0,0); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face=宋体>手机&nbsp;</font></span><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none">一部</span></a></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp; (028)6862 6028</font></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0pt 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font face="Times New Roman">网址：</font><font size=4>&nbsp;</font></span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="FONT-SIZE: 10.5pt; COLOR: rgb(31,58,135); LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; TEXT-DECORATION: none"><font size=4>www.ctic.cc</font></span></a></span><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 18px; FONT-FAMILY: 宋体"><font size=4>&nbsp;</font></span></p>
</span>
<img src ="http://www.cnitblog.com/maolxu/aggbug/65286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-04-15 11:55 <a href="http://www.cnitblog.com/maolxu/archive/2010/04/15/65286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>APN symbian手机上的接入点编程 一</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/29/64893.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 29 Mar 2010 03:40:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/29/64893.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_7AEFE4FD05AF47698C254F69F9F76B4B_786CE292FA024F3AA957D6F65BE0175D"><p style="TEXT-ALIGN: left; TEXT-INDENT: -18.75pt; FONT-FAMILY: 宋体; MARGIN-LEFT: 18.75pt" class="MsoNormal" align="left"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"><span style="FONT-FAMILY: 宋体">1.<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span></span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">Overview</span></strong></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">特定接入点的查找</span><span style="FONT-FAMILY: 宋体">/</span><span style="FONT-FAMILY: 宋体">创建应该是这样的一个过程。首先你从一个配置文件里面读出你要选择的</span><span style="FONT-FAMILY: 宋体">AP</span><span style="FONT-FAMILY: 宋体">的名字（一般情况下我们是知道要用那个接入点的，而且为了方便配置一般也把它写到配置文件中去）。在得到这个名字后，我们就遍历机器上所有的接入点，查找是否有我们需要的，如果有我们就返回那个接入点的索引，如果没有就要在设备上创建一个</span><span style="FONT-FAMILY: 宋体">AP</span><span style="FONT-FAMILY: 宋体">，创建这个</span><span style="FONT-FAMILY: 宋体">AP</span><span style="FONT-FAMILY: 宋体">的参数也存在配置文件中，成功创建后返回其索引以备后用。</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: -18.75pt; FONT-FAMILY: 宋体; MARGIN-LEFT: 18.75pt" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"><span style="FONT-FAMILY: 宋体">2.<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span></span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">Code</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">//<span class="Apple-converted-space">&nbsp;</span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: blue">从配置文件中读出接入点的名称</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TBuf&lt;64&gt; apnConnName;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNnameFromConfig(apnConnName);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">apnConnName.LowerCase();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">//<span class="Apple-converted-space">&nbsp;</span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: blue">遍历通信数据库，寻找对应的接入点的索引</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TUint32 iapId(-1);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CCommsDatabase* commDb = CCommsDatabase::NewL();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PushL(commDb);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CCommsDbTableView* view = commDb-&gt;OpenTableLC(TPtrC(<span style="FONT-FAMILY: 宋体; COLOR: red">IAP</span>));</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TFileName iapName;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">User::LeaveIfError(view-&gt;GotoFirstRecord());</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">do</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">{</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>view-&gt;ReadTextL(TPtrC(COMMDB_NAME), iapName);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>iapName.LowerCase();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>if (!iapName.Compare(*apName))</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>{</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>view-&gt;ReadUintL(TPtrC(COMMDB_ID), iapId);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>break;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>}</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">}</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">While (KErrNone == view-&gt;GotoNextRecord());</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PopAndDestroy(2);<span style="FONT-FAMILY: 宋体"><span class="Apple-converted-space">&nbsp;</span></span>// view, commDb</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PopAndDestroy(apName);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">//<span class="Apple-converted-space">&nbsp;</span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: blue">找到就返回</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">if (iapId<span style="FONT-FAMILY: 宋体"><span class="Apple-converted-space">&nbsp;</span></span>!= -1)</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>return iapId;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">//<span class="Apple-converted-space">&nbsp;</span></span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: blue">没有找到就创建一个，从配置文件中读出参数</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TInt apnDataBearer;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TBuf&lt;64&gt; apnAccessPointName;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TBool apnAuthentication;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TBuf&lt;64&gt; apnProxyNameAddr;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TInt apnProxyPortNumber;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNBearerFromConf(apnDataBearer);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNnameFromConf(apnAccessPointName);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNAuthFromConf(apnAuthentication);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNProxyNameFromConf(apnProxyNameAddr);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">GetAPNProxyPortFromConf(apnProxyPortNumber);</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">//</span></strong><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: blue">创建一个接入点</span></strong></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CApAccessPointItem* apn = CApAccessPointItem::NewLC();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">apn-&gt;SetNamesL( apnConnName );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">apn-&gt;SetBearerTypeL( (TApBearerType)apnDataBearer );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">apn-&gt;WriteLongTextL( EApGprsAccessPointName, apnAccessPointName );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">if( apnAuthentication )</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">{</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apn-&gt;WriteBool( EApGprsDisablePlainTextAuth, ETrue );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apn-&gt;WriteBool( EApGprsDisablePlainTextAuth, ETrue );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">}</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">else</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">{</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apn-&gt;WriteBool( EApGprsDisablePlainTextAuth, EFalse );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">}</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">if( apnProxyNameAddr.Length() )</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">{</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apn-&gt;WriteLongTextL( EApProxyServerAddress, apnProxyNameAddr );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apn-&gt;WriteUint( EApProxyPortNumber, (TUint)apnProxyPortNumber );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">}</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CCommsDatabase* commDb = CCommsDatabase::NewL();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PushL( commDb );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CApDataHandler* handler = CApDataHandler::NewLC( *commDb );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">TInt commErr = commDb -&gt;BeginTransaction();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">newApId = (TInt32)handler-&gt;CreateFromDataL( *apn );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">commErr = commDb-&gt;CommitTransaction();</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PopAndDestroy( handler );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PopAndDestroy( commDb );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">CleanupStack::PopAndDestroy( apn );</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">return newApId;</span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left">&nbsp;</p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left">&nbsp;</p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体" class="MsoNormal" align="left">&nbsp;</p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="FONT-FAMILY: 宋体"><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold"><br class="Apple-interchange-newline"/> CTIC.<font style="LINE-HEIGHT: 20px" face="宋体">川科创新</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">&nbsp;</span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">3G<font style="LINE-HEIGHT: 20px" face="宋体">嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,102,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face="宋体">送手机</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">)</span></span></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face="宋体">手机软件工程师</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">培训</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">班</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face="宋体">手机&nbsp;</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">一部</span></a></span></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp;</font></span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">www.ctic.cc</span></a></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">&nbsp;</span></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-29 11:40 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/29/64893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>屏幕/内存同步原则在Symbian编程中的应用</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/29/64892.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 29 Mar 2010 03:34:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/29/64892.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_B5957F278F634CFDB220494D0311507E_492DC74141674854A6B0D583296F0F8D"><table style="FONT-FAMILY: 宋体" class="FCK__ShowTableBorders"> <tbody style="FONT-FAMILY: 宋体"> <tr style="FONT-FAMILY: 宋体"> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><font style="FONT-FAMILY: 宋体" size="5" face="仿宋"><strong>成员变量</strong></font></font></font></span></p> </td> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><font style="FONT-FAMILY: 宋体" size="5" face="仿宋"><strong>自</strong>动变量</font></font></font></span></p> </td> </tr> <tr style="FONT-FAMILY: 宋体"> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><font style="FONT-FAMILY: 宋体" size="5" face="仿宋"><strong>分配</strong></font></font></font></span></p> </td> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">我们最常用的办法就是在二次构造函数（</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">ConstructL()</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">）中一次性的分配。很显然有时侯不是所有的对象都能用到，既然用不到就代表了浪费。</span></font></strong></font></font></font></p> </td> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">参见第</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">16</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">条军规</span></font></strong></font></font></font></p> </td> </tr> <tr style="FONT-FAMILY: 宋体"> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><font style="FONT-FAMILY: 宋体" size="5" face="仿宋"><strong>删除</strong></font></font></font></span></p> </td> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">既然不是所有的对象都能用到，那么一定有一些对象在析构函数之前就失去使用意义了，这时我们需要使用一种方法来对失去使用意义的对象进行判断，然后删除它们，我认为定义一个状态码</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">(iCurrentView)</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">是挺不错的选择。我在下面的代码中就是这么干的。</span></font></strong></font></font></font></p> </td> <td style="BORDER-BOTTOM: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; FONT-FAMILY: 宋体; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-RIGHT: rgb(0,0,0) 1px solid"> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">也会遇到成员变量一样的问题</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">但函数工作的过程基本是线性的</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">失去使用价值就删除好了</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">.</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">但要记住</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">如果一个对象被删除</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">而指向它的指针仍然存在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">则此指针应该被置为</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">NULL</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">以防非法访问或者二次删除</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">.</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">（参考第</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">8</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">和第</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">10</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">条军规）</span></font></strong></font></font></font></p> </td> </tr> </tbody> </table> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 27px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">我们结合两个例子来讲一下：</span></font></strong></font></font></font></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 27px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><font style="FONT-FAMILY: 宋体" size="1"><font style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">首先是关于视图（</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">View</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">）的屏幕同步</span></font></font></font></strong></font></p> <div style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">void</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>CXXXAppUi::ConstructL()</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>//??????..</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iCurrentView = ENone;</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//iCurrentView为一个TViewId枚举类型.表示当前视图状态,初始值置为空</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">(ENone)</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">ChangeViewL(EMainView);</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//EMainView为主视图状态,即程序载入时的初始视图</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>//????????</strong></font></span></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">}</span></font></strong></font></p> </div> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 27px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">这里我没有使用常见的把所有成员变量在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">ConstructL()</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">函数中一次分配的方法</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">而是将一个状态变量</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">(iCurrentView)</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">初始化</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">而后传递给一个</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">ChangeViewL</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">的</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">private</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">函数</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">让</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">ChangeViewL</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">根据当前视图的状态来删除当前视图的成员变量，初始化新视图的成员变量</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">,</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">对于内存的节约显而易见</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">.</span></font></strong></font></p> <div style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">void</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>CXXXAppUi::ChangeViewL(TViewId aNewView)</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">if</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">(aNewView == iCurrentView)</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//新视图状态==当前视图状态</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">return</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">switch</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">(iCurrentView)</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//依据状态删除当前视图</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EMainView:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">RemoveFromStack(iAppView);</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//iAppView是一个视图类,为初始视图</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">delete</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>iAppView;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iAppView = NULL;</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EWordListView:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">RemoveFromStack(iListboxView);</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//列表视图</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">delete</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>iListboxView;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iListboxView = NULL;</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>ENone:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">default</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>}</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">switch</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">(aNewView)</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//依据传入的aNewView状态创建新视图</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EMainView:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iAppView = CXXXAppView::NewL(ApplicationRect());</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>AddToStackL(iAppView);</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EWordListView:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iListboxView = CWordstoreListboxView::NewL(ClientRect());</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>AddToStackL(iListboxView);</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>ENone:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">default</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">:</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">break</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">;</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>}</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">iCurrentView = aNewView;</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//更新当前视图</span></font></strong></font></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">}</span></font></strong></font></p> </div> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 27px; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">关于</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">Listbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">的屏幕同步</span></font></strong></font></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml"><strong><font face="仿宋">Symbian</font></strong></a></span><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">提供的</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Listbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">示例简明易懂，遗憾的是代码可读性和运行效率天生有着不可调和的矛盾，特别是在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">这种资源受限设备之中体现的更是淋漓尽致。让我们来看看</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">的示例代码：</span></font></strong></font></p> <div style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">void</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>CCustomerstoreListboxView::SetListItems(CDesCArrayFlat* aNewItems)</span></font></strong></font></div> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>CTextListBoxModel* model = iListBox-&gt;Model();</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">model-&gt;SetItemTextArray(aNewItems);</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//通过数组指定Listbox内容及长度</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>model-&gt;SetOwnershipType( ELbmOwnsItemArray );</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iListBox-&gt;HandleItemAdditionL();</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">if</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">(aNewItems-&gt;Count()&gt;0)</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>iListBox-&gt;SetCurrentItemIndexAndDraw(0);</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>}</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>//?????????????????</strong></font></span></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">}</span></font></strong></font></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">简明易懂，接受一个描述符数组，把它传递给</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Listbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">，而我一开始也是这么干的，直到有一天我感觉到数组的长度可能超过</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">100</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">甚至更多。我没有真机用来调试，但任谁也可以想象出一个长达</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">100</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">的</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Listbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">可能给一个手机带来的灾难性后果。尽管屏幕上只能显示三行列表，但是内存中的数量我们却无从控制。解决方案理论上讲很简单（因为实际操作起来因软件而异比较麻烦），或许你已经想到了，</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 12pt">原则就是保持内存中的内容与屏幕上的内容一致。</span></font></strong></font></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">CEikListbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">类中有一个名为</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">HandleScrollEventL的虚函数,可以监听滚动条的上下滚动。不要直接用<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>提供的Listbox类了，可以通过继承来实现对HandleScrollEventL的定义。</span></font></strong></font></p> <div style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">void</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>CXXXListbox::HandleScrollEventL(CEikScrollBar*<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">aScrollBar,TEikScrollEvent aEventType)</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">Index=CurrentItemIndex();</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//获取Listbox当前索引值</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">switch</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">(aEventType)</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>{</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EEikScrollDown:</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//滚动条下移</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>//读取第Index+1的listbox值，删除Index-3的listbox。</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,255); FONT-SIZE: 9pt">case</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><span class="Apple-converted-space">&nbsp;</span>EEikScrollUp:</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt">//滚动条上移</span></font></strong></font></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>//读取第Index-1的listbo值，删除第Index+3的listbox值，</strong></font></span></p> <p style="TEXT-ALIGN: left; FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt"><font style="FONT-FAMILY: 宋体" color="#FFFFFF" face="仿宋"><strong>}</strong></font></span></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 9pt">}</span></font></strong></font></p> </div> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; FONT-FAMILY: 宋体"></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 36px; FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">与此同时还要对于数据库引擎进行修改（如果你是从数据库中读取</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Listbox</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">的值的话</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">），像诸如</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">GetAllCustomer</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">之类的函数无论如何不可用了，我们需要的是逐条读取的函数了。</span></font></strong></font></p> <p style="TEXT-ALIGN: justify; TEXT-INDENT: 42px; FONT-FAMILY: 宋体"></p> <p><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">上面的两个例子大同小异，其实在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">编程中有很多类似的应用，比如这个游戏中，我就在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Rect().iTl.iX</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">和</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">Rect.iBr.iX</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">两个边界加了对进出潜艇的检测，至于对</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">鱼雷的检测吗，留作习题自己想想看了。在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">编程中有可能是用空间换时间，在</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">中我们或许应改为时间换空间了。另外就是不要过于相信模拟器，在模拟器中运行的很顺利的程序在手机上有可能一塌糊涂。可以参考下面的《配置</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>WINS Emulator</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt">》一文对模拟器进行一个较贴近真实设备的配置。最后说一句：“浪费是可耻的”。</span></font></strong></font></p> <p>&nbsp;</p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="FONT-FAMILY: 宋体; COLOR: rgb(0,0,0); FONT-SIZE: 12pt"><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold"><br class="Apple-interchange-newline"/> CTIC.<font style="LINE-HEIGHT: 20px" face="宋体">川科创新</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">&nbsp;</span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">3G<font style="LINE-HEIGHT: 20px" face="宋体">嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,102,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face="宋体">送手机</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">)</span></span></font></strong></font></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><font style="FONT-FAMILY: 宋体" color="#FFFFFF"><strong><font face="仿宋"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face="宋体">手机软件工程师</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">培训</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">班</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face="宋体">手机&nbsp;</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">一部</span></a></span></font></strong></font></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp;</font></span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">www.ctic.cc</span></a></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">&nbsp;</span></p> <p><br class="Apple-interchange-newline"/></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-29 11:34 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/29/64892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian编程总结-图形图像篇-使用双缓存进行图形的绘制</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/29/64891.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 29 Mar 2010 03:30:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/29/64891.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_A2A134C3852B4A98912DA1B911D54326_E7CBB518418145FD99A945D702021E72"><p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">所谓“双缓冲”，指的是在绘图时并不是直接绘到屏幕上，而是在内存中开辟一个缓冲区，在这个缓冲区里完成所有的绘图后，直接将其“粘贴”到屏幕上。采用双缓冲技术，由于绘图操作大部分在内存中完成，所以绘图速度没有太大的制约；此外，当进行复杂的绘图操作时，使用双缓冲技术可以有效的防止画面的闪烁。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">一、双缓存技术在J2ME中的实现</strong></span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">在J2ME中，实现双缓存绘制图形可以通过以下步骤实现：</span></p> <ol style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">首先创建一个类成员变量Image对象，此Image对象的图像尺寸为屏幕尺寸大小。<br style="FONT-FAMILY: 宋体"/> 如：如果屏幕大小为240*320，则使用以下代码创建：</span> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">private Image img;<br style="FONT-FAMILY: 宋体"/> img = Image.createImage(240, 320);</span></p> </li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">创建一个类成员变量Graphics对象，此Graphics对象指向img的Graphics对象：</span> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">private Graphics g;<br style="FONT-FAMILY: 宋体"/> g = img.getGraphics();</span></p> </li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">以上img对象即为内存中的缓冲区，可以使用任何方法在类成员g上绘制任意的图像，而不用在canvas的repaint事件中处理复杂的绘制过程。</span></li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">在canvas的repaint方法，将缓冲区图像绘制在屏幕的gc上：</span> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">protected void paint(Graphics g) {<br style="FONT-FAMILY: 宋体"/> g.drawImage(img, 0, 0, Graphics.LEFT | Graphics.TOP);<br style="FONT-FAMILY: 宋体"/> }</span></p> </li> </ol> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">以上就在J2ME中完成了简单的的双缓存的实现。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">二、双缓存技术在<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>中的实现</strong></span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">在<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>中实现双缓冲技术有两种方法，我们先从简单的方法入手：</span></p> <ol style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">第一种方法的实现更贴近于在J2ME中的实现。在此方法中，也得先在内存中建立一个位图缓冲区对象，然后再获取位图对象的设备上下文 dc(Device Context)（类似于J2ME中的Graphics），程序可以在任意的地方对内存缓冲位图的dc绘制图形。在Draw事件（相当于J2ME的 paint事件）内，将缓冲区位图直接绘制在设备的dc上。<br style="FONT-FAMILY: 宋体"/> 首先在头文件中加入如下定义：</span> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">CWsBitmap* iBufBmp;<br style="FONT-FAMILY: 宋体"/> CFbsBitmapDevice* iBufDevice;<br style="FONT-FAMILY: 宋体"/> CBitmapContext* iBufGc;</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">1) iBufBmp为缓冲区位图对象，为CWsBitmap类型。类CWsBitmap继承自类CFbsBitmap，我们在此使用CWsBitmap的原因为因为它比较快，引入SDK中对CWsBitmap类的说明：</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">This is a bitmap to which the window server already has a handle. Functions<br style="FONT-FAMILY: 宋体"/> which take a window server bitmap are faster than equivalent functions which<br style="FONT-FAMILY: 宋体"/> take a CFbsBitmap.</strong></span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">2) iBufDevice为CFbsBitmapDevice类型的对象，CFbsBitmapDevice的官方解释可以简单的理解为管理文字和位图的图形设备：<br style="FONT-FAMILY: 宋体"/> <strong style="FONT-FAMILY: 宋体">A graphics device to which a bitmap managed by the font and bitmap server can be drawn.</strong></span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">3) iBufGc为CBitmapContext类型的对象，即位图对象的设备上下文dc，获取了iBufGc后，可以使用CBitmapContext中的方法对位图进行绘制。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">关键部分代码：</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">/**<br style="FONT-FAMILY: 宋体"/> * 初始化双缓冲区<br style="FONT-FAMILY: 宋体"/> */<br style="FONT-FAMILY: 宋体"/> void CTestDoubleBufferAppView::InitDoubleBufferL()<br style="FONT-FAMILY: 宋体"/> {<br style="FONT-FAMILY: 宋体"/> iBufBmp = new(ELeave)CWsBitmap(CEikonEnv::Static()-&gt;WsSession());<br style="FONT-FAMILY: 宋体"/> CleanupStack::PushL(iBufBmp);<br style="FONT-FAMILY: 宋体"/> User::LeaveIfError(iBufBmp-&gt;Create(Rect().Size(), CEikonEnv::Static()-&gt;ScreenDevice()-&gt;DisplayMode()));</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">iBufDevice = CFbsBitmapDevice::NewL(iBufBmp);<br style="FONT-FAMILY: 宋体"/> CleanupStack::PushL(iBufDevice);<br style="FONT-FAMILY: 宋体"/> User::LeaveIfError(iBufDevice-&gt;CreateBitmapContext(iBufGc));</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">CleanupStack::Pop(2); // iDevice, iBufBmp<br style="FONT-FAMILY: 宋体"/> }</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">/**<br style="FONT-FAMILY: 宋体"/> * 测试在缓冲区上绘制<br style="FONT-FAMILY: 宋体"/> */<br style="FONT-FAMILY: 宋体"/> void CTestDoubleBufferAppView::DoTestDraw()<br style="FONT-FAMILY: 宋体"/> {<br style="FONT-FAMILY: 宋体"/> iBufGc-&gt;Clear(Rect());</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">// 在buffer里画方块，而不是在屏幕上<br style="FONT-FAMILY: 宋体"/> for (int i=0; i&lt;100; i+=2)<br style="FONT-FAMILY: 宋体"/> {<br style="FONT-FAMILY: 宋体"/> iBufGc-&gt;DrawRect(TRect(TPoint(i, i), TSize(50, 50)));<br style="FONT-FAMILY: 宋体"/> }</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">}</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">/**<br style="FONT-FAMILY: 宋体"/> * View的重绘事件<br style="FONT-FAMILY: 宋体"/> */<br style="FONT-FAMILY: 宋体"/> void CTestDoubleBufferAppView::Draw(const TRect&amp; /*aRect*/) const<br style="FONT-FAMILY: 宋体"/> {<br style="FONT-FAMILY: 宋体"/> // 以下代码忽略<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; // Get the standard graphics context<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; CWindowGc&amp; gc = SystemGc();<br style="FONT-FAMILY: 宋体"/> //<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; // Gets the control's extent<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; TRect drawRect(Rect());<br style="FONT-FAMILY: 宋体"/> //<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; // Clears the screen<br style="FONT-FAMILY: 宋体"/> //&nbsp;&nbsp;&nbsp; gc.Clear(drawRect);</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">SystemGc().BitBlt(TPoint(0, 0), iBufBmp);</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">}</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://dev.shufou.com/wp-content/uploads/2008/11/testdoublebuffer.rar">完整代码下载</a></span></p> </li> </ol> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">三、参考文献</strong></span></p> <ol style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.forum.nokia.com/info/sw.nokia.com/id/3e8968b5-3eb8-4dc2-ac9b-248508c249ba/Symbian_OS_Creating_Custom_Controls_v1_0_zh_ch.pdf.html">Symbian OS：创建自定义控件</a></span></li> </ol> <p style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;</span></p> <p style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;</span></p> <p style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;</span></p> <p style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;</span></p> <p style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;</span></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold"><br class="Apple-interchange-newline"/> CTIC.<font style="LINE-HEIGHT: 20px" face="宋体">川科创新</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">&nbsp;</span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">3G<font style="LINE-HEIGHT: 20px" face="宋体">嵌入式技术教育专家</font><font style="LINE-HEIGHT: 20px" face="Times New Roman">(</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; COLOR: rgb(255,102,0); FONT-SIZE: 12pt; FONT-WEIGHT: bold">学<font style="LINE-HEIGHT: 20px" face="Times New Roman">3G</font><font style="LINE-HEIGHT: 20px" face="宋体">送手机</font></span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; FONT-WEIGHT: bold">)</span></span></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">3G<font style="LINE-HEIGHT: 18px" face="宋体">手机软件工程师</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">培训</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">班</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; TEXT-DECORATION: none">送3G<font style="LINE-HEIGHT: 18px" face="宋体">手机&nbsp;</font></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">一部</span></a></span></p> <p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0pt 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">咨询电话：<font style="LINE-HEIGHT: 18px" face="Times New Roman">400-702-8828&nbsp;&nbsp;</font></span><span style="LINE-HEIGHT: 18px"><a style="LINE-HEIGHT: 18px" href="http://www.ctic.cc/"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none">www.ctic.cc</span></a></span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt">&nbsp;</span></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-29 11:30 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/29/64891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian编程总结-图形图像篇-直接屏幕访问</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/29/64890.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 29 Mar 2010 03:25:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/29/64890.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_A6264C836FFF45208AEEFD4833A5427C_1D19865FE33B4D05807D6C4171E954BD"><p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">在<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS中绘制图形减少闪烁的方法有两种：</span></p> <ol style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">使用双缓存进行图形的绘制（<span style="FONT-FAMILY: 宋体; TEXT-DECORATION: underline"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.cnblogs.com/felixYeou/archive/2008/11/07/1329317.html"><strong style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#1D58D1">点击这里进入相关文章</font></strong></a></span>）</li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">使用CDirectScreenAccess类对屏幕进行直接绘制。</li> </ol> <p style="FONT-FAMILY: 宋体">CDirectScreenAccess类在SDK种的解释如下：</p> <p style="FONT-FAMILY: 宋体"><strong style="FONT-FAMILY: 宋体">Direct screen access is a way of drawing to the screen without using the window server. As this avoids client-server communication, it is much faster, and may be useful for games and video. Note that some interaction with the window server is needed in order to prevent the application from drawing over other application's data.</strong></p> <p style="FONT-FAMILY: 宋体">此外，使用CDirectScreenAccess还可以截获系统的通知消息（如菜单弹出、电话拨入、信息收到等）的对话框弹出事件，从而避免不必要的刷新工作。</p> <p style="FONT-FAMILY: 宋体"><strong style="FONT-FAMILY: 宋体">一、CDirectScreenAccess的简单使用</strong></p> <p style="FONT-FAMILY: 宋体">CDirectScreenAccess使用起来非常简单，下面的几格步骤将介绍CDirectScreenAccess的使用方法：</p> <ol style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">在Carbide C++中使用向导生成GUI应用程序</li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">在View类中创建成员变量CDirectScreenAccess* iDSA;</li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">在View类中创建私有方法void DrawGraphics();代码如下：<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> void CTestDirectDrawAppView::DrawGraphics()<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; {<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; CFbsBitGc* gc = iDSA-&gt;Gc(); <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; TRgb colorRed= AKN_LAF_COLOR(35);<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; gc-&gt;SetPenColor(colorRed);<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; gc-&gt;DrawRect(TRect(0, 0, 100, 100));</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; iDSA-&gt;ScreenDevice()-&gt;Update();<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; }</p> </li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">在View类的ConstructL方法里加入以下代码：<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> CEikonEnv* env = CEikonEnv::Static();<br style="FONT-FAMILY: 宋体"/> iDSA = CDirectScreenAccess::NewL(env-&gt;WsSession(), *(env-&gt;ScreenDevice()), this-&gt;Window(), *this); <p style="FONT-FAMILY: 宋体">iDSA-&gt;StartL();<br style="FONT-FAMILY: 宋体"/> DrawGraphics();</p> </li> <li style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">在View类中创建以下两个私有方法：<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> void Restart(RDirectScreenAccess::TTerminationReasons aReason);<br style="FONT-FAMILY: 宋体"/> void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);<span class="Apple-converted-space">&nbsp;</span><br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 实现如下：<br style="FONT-FAMILY: 宋体"/> <p style="FONT-FAMILY: 宋体">void CTestDirectDrawAppView::Restart(RDirectScreenAccess::TTerminationReasons aReason)<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; {<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; iDSA-&gt;StartL();<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; DrawGraphics();<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; }</p> <p style="FONT-FAMILY: 宋体">void CTestDirectDrawAppView::AbortNow(RDirectScreenAccess::TTerminationReasons aReason)<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; {<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; iDSA-&gt;Cancel();<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp; }</p> <p style="FONT-FAMILY: 宋体"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://dev.shufou.com/wp-content/uploads/2008/11/testdirectdraw.rar"><strong style="FONT-FAMILY: 宋体"><font style="FONT-FAMILY: 宋体" color="#1D58D1">点击此处下载源代码</font></strong></a></p> </li> </ol> <p style="FONT-FAMILY: 宋体"></p> <p style="FONT-FAMILY: 宋体"><strong style="FONT-FAMILY: 宋体">二、分析实现过程</strong></p> <p style="FONT-FAMILY: 宋体">1、普通的绘制过程</p> <p style="FONT-FAMILY: 宋体"><img alt="image" src="http://www.chinaeda.cn/upload/2010_01/100101001411061.png"/></p> <p style="FONT-FAMILY: 宋体">&nbsp;</p> <p style="FONT-FAMILY: 宋体">2、当有系统对话框通知时的绘制过程</p> <p style="FONT-FAMILY: 宋体">&nbsp;</p> <p><img src="http://www.chinaeda.cn/upload/2010_01/100101001411064.png"/><br class="Apple-interchange-newline"/></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-29 11:25 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/29/64890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian与uiq开发教程</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/26/64832.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 26 Mar 2010 05:57:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/26/64832.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Symbian是智能手机中的操作系统&nbsp;　　在目前手机操作系统的争夺中，Symbian市场占有率达到了70％，是当之无愧的老大，而微软的&nbsp;　　Windowsmobile和其他操作系统一共只有30％的份额。&nbsp;　　&nbsp;　　而当前&nbsp;最有潜力的市场就是智能手机市场&nbsp;无论是开发还是其它方面&nbsp;　　&nbsp;　　所以&nbsp;与其学会vc&n...&nbsp;&nbsp;<a href='http://www.cnitblog.com/maolxu/archive/2010/03/26/64832.html'>阅读全文</a><img src ="http://www.cnitblog.com/maolxu/aggbug/64832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-26 13:57 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/26/64832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 （三）</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/19/64741.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 10:01:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/19/64741.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_DA5DF8C0895A40CB980A0609B76C23E8_84C498615D8D487397F8EE160F7C1CAA"><h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">3.1<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></font></span><span style="FONT-FAMILY: 黑体">应用程序类型介绍</span></span></h2> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">中编译的二进制代码由三种目标类型，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">EXE</span><span style="FONT-FAMILY: 宋体">、</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">和</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">。</span></p> <h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">3.2 EXE</font></span><span style="FONT-FAMILY: 黑体">程序的开发</span></h2> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">当我们的应用程序并不需要用户界面，只需要使用一个单独进程的时候，我们可以创建</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.EXE<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">程序。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.EXE</span><span style="FONT-FAMILY: 宋体">程序包含一个主入口</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">E32main()</span><span style="FONT-FAMILY: 宋体">，当系统通过</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">E32main()</span><span style="FONT-FAMILY: 宋体">启动的时候，系统会创建新的进程，并在此进程中创建新的线程。在创建</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">EXE<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">程序时，我们需要在</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.mmp</span><span style="FONT-FAMILY: 宋体">文件中将程序的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">TARGET</span><span style="FONT-FAMILY: 宋体">指定为</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>EXE</span><span style="FONT-FAMILY: 宋体">。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">EXE</span><span style="FONT-FAMILY: 宋体">通常是服务端或命令行程序，通常隐蔽的运行，他没有</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">GUI</span><span style="FONT-FAMILY: 宋体">，不能直接从主菜单运行。</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面是一个最基本的控制台应用程序的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">MMP</span><span style="FONT-FAMILY: 宋体">文件：</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">target<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>Console.exe</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">targettype<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>EXE</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">UID<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>0x100039CE 0x10005B91</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGETPATH<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\system\apps\Console</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">sourcepath<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\src</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">userinclude<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\in</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">systeminclude<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\EPOC32\INCLUDE</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">systeminclude<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\EPOC32\INCLUDE\LIBC</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">source<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>e32main.cpp Console.cpp</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt 0.05pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">library<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>euser.lib</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">我们编译程序后，会生成</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 新宋体" lang="EN-US" xml:lang="EN-US">Console.exe</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 新宋体">。将程序打包安装后，我们无法直接运行此程序。运行此程序可以有两种方法，第一是通过其他程序的调用来运行，第二是使用<span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">SeleQ<span class="Apple-converted-space">&nbsp;</span></span>一类的文件浏览器选择此程序然后运行。</span></p> <p style="TEXT-ALIGN: center; LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center">&nbsp;</p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">在这里我们实现了一个</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">console</span><span style="LINE-HEIGHT: 18px; FONT-FAMILY: 宋体">类用来显示上边的文字。我们在设计一个后台程序时候也可以不实现</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">console</span><span style="FONT-FAMILY: 宋体">类，这样程序运行时候在屏幕上将不会有任何显示。</span></p> <h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">3.3 APP</font></span><span style="FONT-FAMILY: 黑体">程序的开发</span></h2> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">当我们创建的应用程序需要使用用户界面的时候，我们需要创建</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">程序。一个</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">程序可能包括自定义的字符串、菜单项、对话框等。如果我们要创建一个</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">程序，我们需要在</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.mmp</span><span style="FONT-FAMILY: 宋体">文件中将程序的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">TARGET</span><span style="FONT-FAMILY: 宋体">指定为</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>APP<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">。</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">我们最熟悉的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Helloworld<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">就是一个简单的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">程序，下面是它的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">mmp<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">文件：</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGET<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasic.app</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGETTYPE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>app</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">UID<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>0x100039CE 0x10005B91</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGETPATH<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\system\apps\helloworldbasic</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCEPATH<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\src</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasic.cpp</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasicApplication.cpp</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasicAppView.cpp</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasicAppUi.cpp</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;</span>HelloWorldBasicDocument.cpp</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCEPATH<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\group</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">RESOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>HelloWorldBasic.rss</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">USERINCLUDE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\inc</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SYSTEMINCLUDE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\epoc32\include</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>euser.lib</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>apparc.lib</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>cone.lib</span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>eikcore.lib<span style="FONT-FAMILY: 宋体">&nbsp;</span></span></p> <p style="TEXT-INDENT: 72pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>avkon.lib<span style="FONT-FAMILY: 宋体">&nbsp;<span class="Apple-converted-space">&nbsp;</span><br style="FONT-FAMILY: 宋体"/></span></span><strong style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">3.4 DLL</font></span><span style="FONT-FAMILY: 黑体">程序的开发</span></strong></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">提供多个入口，由系统或是已存在的线程</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">进程</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">调用。</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">有两种类型的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL,<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">静态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">和多态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">。</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">静态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">为其他程序提供方法列表以供调用。当程序启动的链接阶段静态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">就被读到内存中。</span></p> <p style="LINE-HEIGHT: 18px; TEXT-INDENT: 21pt; MARGIN: 7.8pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">多态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">为其他程序提供某个固定的方法调用。例如某个</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">GUI</span><span style="FONT-FAMILY: 宋体">应用提供了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">NewApplication()</span><span style="FONT-FAMILY: 宋体">方法调用以启动应用程序。这些</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">实现抽象的方法</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">,</span><span style="FONT-FAMILY: 宋体">如一个打印机驱动，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">socket</span><span style="FONT-FAMILY: 宋体">协议或是一个应用程序。它们的扩展名多不是</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.DLL,</span><span style="FONT-FAMILY: 宋体">而是</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">PRN</span><span style="FONT-FAMILY: 宋体">、</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">PRT<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">或</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">等。它们从与</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">相关的类继承，并通常只有在程序需要它们时才读入。前面的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">APP</span><span style="FONT-FAMILY: 宋体">程序也算作一个多态</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">。</span></p> <p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果我们要创建的是</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">程序，我们需要在</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.mmp</span><span style="FONT-FAMILY: 宋体">文件中将程序的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">TARGET</span><span style="FONT-FAMILY: 宋体">指定为</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>DLL</span><span style="FONT-FAMILY: 宋体">。如下所示：</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGET<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>test.dll</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">TARGETTYPE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>dll</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">UID<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-FAMILY: 宋体">&nbsp;</span>0x1000008D 0x0CD52435</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCEPATH<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\src</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SOURCE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>test.cpp</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">USERINCLUDE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>..\inc</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">SYSTEMINCLUDE<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>\epoc32\include</span></p> <p style="TEXT-INDENT: 108pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt" lang="EN-US" xml:lang="EN-US">LIBRARY<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">&nbsp;</span><span style="FONT-FAMILY: 宋体">&nbsp;</span>euser.lib</span></p> <p>&nbsp;</p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 18:01 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/19/64741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 (二)</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/19/64740.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 09:51:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/19/64740.html</guid><description><![CDATA[
<span style="font: normal normal normal medium/normal 宋体; font-size: 12px; ">
<h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span  style="color: rgb(0, 0, 0); text-transform: none; font-size: 12px; "><h1 align="center" style="font-family: 宋体; margin-top: 17pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: center; "><span style="font-family: 宋体; ">二</span><span lang="EN-US" style="font-family: 宋体; ">.</span><span style="font-family: 宋体; ">开发环境入门</span></h1><h2 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; "><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">2.1&nbsp;</font></span><span style="font-family: 黑体; ">安装</span><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">SDK</font></span><span style="font-family: 黑体; ">及</span><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">VC<o:p style="font-family: 宋体; "></o:p></font></span></h2><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span lang="EN-US" style="font-family: 宋体; ">Nokia</span><span style="font-family: 宋体; ">根据手机的屏幕大小和价格高低把手机分成了多个系列，现在使用的系列有：</span><span lang="EN-US" style="font-family: 宋体; ">Series 40</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Series 60</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Series 80&nbsp;</span><span style="font-family: 宋体; ">和</span><span lang="EN-US" style="font-family: 宋体; ">Series 90</span><span style="font-family: 宋体; ">。</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); ">60</span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">系列采用</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;os 6.1</span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">，然后又根据手机屏幕的特点对</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); ">UI</span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">做了一些修改，这个被修改了的</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">就被称为</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); ">Nokia</span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">的</span><span lang="EN-US" style="font-family: 宋体; color: rgb(51, 51, 51); ">60</span><span style="font-family: 宋体; color: rgb(51, 51, 51); ">系列平台</span><span style="font-family: 宋体; ">。使用</span><span lang="EN-US" style="font-family: 宋体; ">60</span><span style="font-family: 宋体; ">系列的手机型号包括：</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 6670</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">&nbsp;Nokia 6630</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">&nbsp;Nokia 6260&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia N-Gage QD&#8482;&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 7610&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 6620</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 3620&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 3660&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 6600&nbsp;</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 3600</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 3650</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia 7650</span><span style="font-family: 宋体; ">、</span><span lang="EN-US" style="font-family: 宋体; ">Nokia N-Gage&#8482;</span><span style="font-family: 宋体; ">等。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">下面我们就以</span><span lang="EN-US" style="font-family: 宋体; ">60</span><span style="font-family: 宋体; ">系列为例，介绍</span><span lang="EN-US" style="font-family: 宋体; ">SDK</span><span style="font-family: 宋体; ">的安装过程。</span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">2.1.1&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">安装</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">SDK<o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span style="font-family: 宋体; ">第一步，到</span><span lang="EN-US" style="font-family: 宋体; ">Nokia</span><span style="font-family: 宋体; ">论坛注册，下载最新的</span><span lang="EN-US" style="font-family: 宋体; ">SDK</span><span style="font-family: 宋体; ">。</span><span lang="EN-US" style="font-family: 宋体; ">Nokia&nbsp;</span><span style="font-family: 宋体; ">网站提供的</span><span lang="EN-US" style="font-family: 宋体; ">Series 60 SDK for&nbsp;<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;OS Nokia Edition SDK</span><span style="font-family: 宋体; ">最新版本是</span><span lang="EN-US" style="font-family: 宋体; ">v1.2</span><span style="font-family: 宋体; ">，</span><span lang="EN-US" style="font-family: 宋体; ">Series 60 SDK for&nbsp;<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;OS</span><span style="font-family: 宋体; ">的最新版本是</span><span lang="EN-US" style="font-family: 宋体; ">v2.1</span><span style="font-family: 宋体; ">。下载网址：</span><span lang="EN-US" style="font-family: 宋体; "><a href="http://www.forum.nokia.com/main/0,6566,034-4,00.html" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; "><font color="#006699" style="font-family: 宋体; ">http://www.forum.nokia.com/main/0,6566,034-4,00.html</font></a></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span style="font-family: 宋体; ">第二步，到</span><span lang="EN-US" style="font-family: 宋体; "><a href="http://www.activestate.com/" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; "><font color="#006699" style="font-family: 宋体; ">http://www.activestate.com</font></a>&nbsp;</span><span style="font-family: 宋体; ">网站下载最新的</span><span lang="EN-US" style="font-family: 宋体; ">Active Perl Script&nbsp;</span><span style="font-family: 宋体; ">安装程序。到</span><span lang="EN-US" style="font-family: 宋体; "><a href="http://www.java.com/en/download/manual.jsp" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; "><font color="#006699" style="font-family: 宋体; ">http://www.java.com/en/download/manual.jsp</font></a>&nbsp;</span><span style="font-family: 宋体; ">下载最新的</span><span lang="EN-US" style="font-family: 宋体; ">J2RE</span><span style="font-family: 宋体; ">。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">第三步：安装</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">SDK</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">，推荐为</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">开发单独建一个目录，例如</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">d</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">：</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">而不是使用</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">C:\program files</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">等这样的目录。</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">第四步：安装</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">Active Perl</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">和</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">J2RE</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">，安装到默认目录即可。</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">第五步：检查环境变量设定。打开系统环境变量</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">tab</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">，然后看看有没有</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">EPOCROOT</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">，如果有的话，把它手动改成&#8220;</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">\</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">&#8221;</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: Verdana; font-size: 9pt; ">&nbsp;</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">。改完之后应该是这个样子的：</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">EPOCROOT = \<o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">然后，在系统</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">PATH</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">中加入</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">&nbsp;\epoc32\tools</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">目录以及</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">\epoc32\gcc\bin</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">目录就可以了。</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21.85pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">实际上，</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;SDK</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">根本不用安装，直接把</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; ">epoc32</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">目录拷贝到一个机器上，然后照上述方法设定目录和环境变量就可以了。</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 10.5pt; line-height: 24px; ">2.1.2&nbsp;</span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">配置</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: Verdana; font-size: 10.5pt; line-height: 24px; ">VC<o:p style="font-family: 宋体; "></o:p></span></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">如果我们使用的是</span><span lang="EN-US" style="font-family: 宋体; ">VC 6.0</span><span style="font-family: 宋体; ">，我们要保证系统至少打了</span><span lang="EN-US" style="font-family: 宋体; ">SP3</span><span style="font-family: 宋体; ">补丁，否则系统会有警告提示。如果我们使用的是</span><span lang="EN-US" style="font-family: 宋体; ">VS.NET2003,&nbsp;</span><span style="font-family: 宋体; ">我们就只能安装</span><span lang="EN-US" style="font-family: 宋体; ">Series 60 SDK for&nbsp;<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;OS v2.1</span><span style="font-family: 宋体; ">，因为</span><span lang="EN-US" style="font-family: 宋体; ">Series 60 SDK for&nbsp;<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;OS Nokia Edition SDK v1.2</span><span style="font-family: 宋体; ">在</span><span lang="EN-US" style="font-family: 宋体; ">VS.NET2003</span><span style="font-family: 宋体; ">无法正确建立工程。</span></p><span style="font-family: 宋体; font-size: 10.5pt; ">如果要直接在</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">vc6</span><span style="font-family: 宋体; font-size: 10.5pt; ">里创建新项目，要把</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Series60Tools\ Application Wizard</span><span style="font-family: 宋体; font-size: 10.5pt; ">目录下的</span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">&nbsp;<span lang="EN-US" style="font-family: 宋体; ">AvkonAppWiz.awx</span></span><span style="font-family: 宋体; font-size: 10.5pt; ">和</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">AVKONAPPWIZ.HLP</span><span style="font-family: 宋体; font-size: 10.5pt; ">文件拷贝到</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">vc6</span><span style="font-family: 宋体; font-size: 10.5pt; ">的模板目录</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">C:\Program Files\ Microsoft Visual Studio\ Common\ MSDev98\ Template</span><span style="font-family: 宋体; font-size: 10.5pt; ">下。这样我们就可以在</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">VC</span><span style="font-family: 宋体; font-size: 10.5pt; ">的新建工程中看到</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">Series 60 AppWizard v 1.9</span><span style="font-family: 宋体; font-size: 10.5pt; ">这个选项.<br style="font-family: 宋体; "><br style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 10.5pt; ">&nbsp;&nbsp;&nbsp; 填入</span><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; ">Project Name&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt; ">以后，确认。<br style="font-family: 宋体; ">&nbsp;&nbsp;&nbsp;<p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">一路&#8220;</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">Next</font></span><span style="font-family: 宋体; ">&#8221;，一个最简单的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></font></span><span style="font-family: 宋体; ">应用程序就建立好了。<br style="font-family: 宋体; "></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">如果要将已经建立好的工程导入到</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">VC6.0</font></span><span style="font-family: 宋体; ">中，比如我们将</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">SDK</font></span><span style="font-family: 宋体; ">中的例子</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">HelloWorld</font></span><span style="font-family: 宋体; ">转换成一个</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">VC6</font></span><span style="font-family: 宋体; ">的项目，我们首先进入</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Series60Ex\HelloWorld</font></span><span style="font-family: 宋体; ">目录。在这里我们可以看到，在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></font></span><span style="font-family: 宋体; ">中，一个</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">Project</font></span><span style="font-family: 宋体; ">通常是按</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">inc, src, group</font></span><span style="font-family: 宋体; ">等目录组织，</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">group</font></span><span style="font-family: 宋体; ">目录里通常放的是项目文件，所以编译时要先到这里。用命令提示符模式进入刚才说的那个目录下，然后执行：</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">bldmake bldfiles</font></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">这个命令会在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">group</font></span><span style="font-family: 宋体; ">目录下生成一个</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">abld.bat</font></span><span style="font-family: 宋体; ">的批处理文件，并且会在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\BUILD</font></span><span style="font-family: 宋体; ">下生成</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\BUILD\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP</font></span><span style="font-family: 宋体; ">这个目录，并在最底层目录下生成一堆</span><font face="Times New Roman" style="font-family: 宋体; "><span lang="EN-US" style="font-family: 宋体; ">.make</span></font><span style="font-family: 宋体; ">文件。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 18pt; "><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">然后，我们在同一个目录运行刚才生成的</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: 宋体; font-size: 9pt; "><font face="Times New Roman" style="font-family: 宋体; ">abld.bat</font></span></span><span class="postbody1" style="font-family: 宋体; "><span style="font-family: 宋体; font-size: 9pt; ">：</span></span><span class="postbody1" style="font-family: 宋体; "><span lang="EN-US" style="font-family: 宋体; font-size: 9pt; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">abld makefile vc6</font></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">这样就会自动生成</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">vc6</font></span><span style="font-family: 宋体; ">的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">dsw</font></span><span style="font-family: 宋体; ">文件，位置在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\BUILD\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS</font></span><span style="font-family: 宋体; ">。然后我们就可以在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">VC6</font></span><span style="font-family: 宋体; ">种打开这个</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a></font></span><span style="font-family: 宋体; ">工程了。</span></p><h2 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; "><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">2.2&nbsp;</font></span><span style="font-family: 黑体; ">编译</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></h2><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">我们可以直接使用</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">SDK</font></span><span style="font-family: 宋体; ">提供的工具编译</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;</font></span><span style="font-family: 宋体; ">工程，也可以使用</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">VC6</font></span><span style="font-family: 宋体; ">提供的集成环境来编译转化过的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;</font></span><span style="font-family: 宋体; ">工程。编译的结果存放在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\ Release\wins\UDEB\Z\SYSTEM\apps</font></span><span style="font-family: 宋体; ">目录中。</span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; ">2.2.1</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">使用</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; ">SDK</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">提供的工具编译</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">工程</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p style="font-family: 宋体; text-indent: 21pt; "><span style="font-family: 宋体; font-size: 10.5pt; ">我们在上一节的那个位置继续输入：<span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></span></p><p style="font-family: 宋体; text-indent: 21pt; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; ">abld build wins udeb<o:p style="font-family: 宋体; "></o:p></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">这个命令会编译我们的程序，最后在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\wins\UDEB</font></span><span style="font-family: 宋体; ">目录下生成我们的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">helloworld</font></span><span style="font-family: 宋体; ">，然后我们可以从开始菜单里运行模拟器的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">debug</font></span><span style="font-family: 宋体; ">版，在模拟其中就可以运行</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">helloworld</font></span><span style="font-family: 宋体; ">了。</span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; ">2.2.2&nbsp;</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">使用</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; ">VC6</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">编译</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><font face="Times New Roman" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;</font></span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">工程</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">我们直接打开运行</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">abld makefile vc6</font></span><span style="font-family: 宋体; ">后生成的</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">dsw</font></span><span style="font-family: 宋体; ">文件，</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">VC</font></span><span style="font-family: 宋体; ">自动装载转化过的工程。按</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">F7</font></span><span style="font-family: 宋体; ">便可以直接编译工程，编译结果同样放在</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\ wins\UDEB</font></span><span style="font-family: 宋体; ">目录中。然后我们打开模拟器</span><span lang="EN-US" style="font-family: 宋体; "><font face="Times New Roman" style="font-family: 宋体; ">debug&nbsp;</font></span><span style="font-family: 宋体; ">版，就可以看到我们编译好的工程了。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; "><br clear="all" style="font-family: 宋体; page-break-before: always; "><span lang="EN-US" style="font-family: 'Times New Roman'; font-size: 10.5pt; "><br clear="all" style="font-family: 宋体; page-break-before: always; "></span></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; ">&nbsp;</o:p></span></p><h2 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; "><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">2.3&nbsp;</font></span><span style="font-family: 黑体; ">打包</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></h2><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">我们以</span><span lang="EN-US" style="font-family: 宋体; ">SDK 1.2</span><span style="font-family: 宋体; ">提供的</span><span lang="EN-US" style="font-family: 宋体; ">HelloWorld</span><span style="font-family: 宋体; ">为例，制作可以在手机中安装的</span><span lang="EN-US" style="font-family: 宋体; ">.SIS</span><span style="font-family: 宋体; ">文件：</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">2.3.1</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">．检查程序</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">首先，在命令行格式下，进入</span><span lang="EN-US" style="font-family: 宋体; ">HelloWorld</span><span style="font-family: 宋体; ">工程</span><span lang="EN-US" style="font-family: 宋体; ">mmp</span><span style="font-family: 宋体; ">文件所在目录，输入</span><span lang="EN-US" style="font-family: 宋体; ">bldmake bldfiles</span><span style="font-family: 宋体; ">和</span><span lang="EN-US" style="font-family: 宋体; ">abld build wins udeb</span><span style="font-family: 宋体; ">，然后打开模拟器，检测程序有无错误。</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">2.3.2</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">．编译工程</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">在程序无错误后，在命令行输入</span><span lang="EN-US" style="font-family: 宋体; ">abld build&nbsp;<a href="http://www.chinaeda.com/ke/gaoji.shtml" title="ARM-Linux软件工程师—高级培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">ARM</a>i urel&nbsp;</span><span style="font-family: 宋体; ">。</span><span style="font-family: 宋体; ">执行这个命令之后会在目录</span><span lang="EN-US" style="font-family: 宋体; ">d:\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\series60\epoc32\release\<a href="http://www.chinaeda.com/ke/gaoji.shtml" title="ARM-Linux软件工程师—高级培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">ARM</a>i\urel</span><span style="font-family: 宋体; ">生成</span><span lang="EN-US" style="font-family: 宋体; ">HELLOWORLD.APP</span><span style="font-family: 宋体; ">和</span><span lang="EN-US" style="font-family: 宋体; ">HELLOWORLD.RSC</span><span style="font-family: 宋体; ">两个文件。</span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">2.3.3</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">．建立</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">.pkg</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">文件</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">在</span><span lang="EN-US" style="font-family: 宋体; ">d:\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Series60Ex\helloworld\sis<span style="font-family: 宋体; ">&nbsp;&nbsp;</span></span><span style="font-family: 宋体; ">用记事本建立或者修改工程的</span><span lang="EN-US" style="font-family: 宋体; ">pkg</span><span style="font-family: 宋体; ">文件，内容如下：</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">; HelloWorld.pkg</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">;</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">;Language - standard language definitions</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">&amp;EN</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; ">&nbsp;</o:p></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">; standard SIS file header</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">#{"HelloWorld"},(0x10005B91),1,0,0</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; ">&nbsp;</o:p></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">;Supports Series 60 v 1.2</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">(0x101F8202), 0, 0, 0, {"Series60ProductID"}</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">;</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">"d:\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\series60\epoc32\release\<a href="http://www.chinaeda.com/ke/gaoji.shtml" title="ARM-Linux软件工程师—高级培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">ARM</a>i\urel\HelloWorld.APP"-"!:\system\apps\HelloWorld\HelloWorld.app"</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; "><span lang="EN-US" style="font-family: 宋体; ">"d:\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\series60\epoc32\release\<a href="http://www.chinaeda.com/ke/gaoji.shtml" title="ARM-Linux软件工程师—高级培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">ARM</a>i\urel\HELLOWORLD.rSC"-"!:\system\apps\HelloWorld\HELLOWORLD.rSC"</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">其中，前面</span><span lang="EN-US" style="font-family: 宋体; ">"d:\<a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\series60\epoc32\release\<a href="http://www.chinaeda.com/ke/gaoji.shtml" title="ARM-Linux软件工程师—高级培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">ARM</a>i\urel\HELLOWORLD.rSC"</span><span style="font-family: 宋体; ">是要打包安装的文件，</span><span lang="EN-US" style="font-family: 宋体; ">"!:\system\apps\HelloWorld\HELLOWORLD.rSC"</span><span style="font-family: 宋体; ">是安装的目标位置。在其中要注意的是，我们在目标位置中用&#8220;！&#8221;代替了实际的盘符。这样做得好处是在用户安装的时候，手机系统会提示用户选择要安装的位置，这就给了用户更大的灵活度。另外，在</span><span lang="EN-US" style="font-family: 宋体; "><a href="http://www.chinaeda.com/ke/mob.shtml" title="Symbian手机应用开发工程师培训班" style="font-family: 宋体; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;</span><span style="font-family: 宋体; ">系统中，安装的应用程序默认位置是&#8220;</span><span lang="EN-US" style="font-family: 宋体; ">!:\system\apps</span><span lang="EN-US" style="font-family: 宋体; ">&nbsp;</span><span style="font-family: 宋体; ">&#8221;。</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">编辑好</span><span lang="EN-US" style="font-family: 宋体; ">pkg</span><span style="font-family: 宋体; ">文件后，保存至相应目录。</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></p><h3 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; text-align: left; "><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">2.3.4</span><span style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; ">．打包程序</span><span lang="EN-US" style="font-family: 宋体; font-size: 10.5pt; line-height: 24px; "><o:p style="font-family: 宋体; "></o:p></span></h3><p class="MsoNormal" style="font-family: 宋体; margin-top: 6pt; margin-right: 0cm; margin-bottom: 6pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">在命令行中，转至</span><span lang="EN-US" style="font-family: 宋体; ">pkg</span><span style="font-family: 宋体; ">文件所在目录，运行命令</span><span lang="EN-US" style="font-family: 宋体; ">makesis HelloWorld.pkg</span><span style="font-family: 宋体; ">。之后我们就在同一目录下得到了打包好的</span><span lang="EN-US" style="font-family: 宋体; ">.sis</span><span style="font-family: 宋体; ">文件。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span lang="EN-US" style="font-family: 宋体; "><span style="font-family: 宋体; "></span><br clear="all" style="font-family: 宋体; page-break-before: always; "></span>&nbsp;</p><h2 style="font-family: 宋体; margin-top: 13pt; margin-right: 0cm; margin-bottom: 13pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 13px; font-weight: normal; "><span lang="EN-US" style="font-family: 宋体; "><font face="Arial" style="font-family: 宋体; ">2.4&nbsp;</font></span><span style="font-family: 黑体; ">手机测试</span><span lang="EN-US" style="font-family: 宋体; "><o:p style="font-family: 宋体; "></o:p></span></h2><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">将打包好地</span><span lang="EN-US" style="font-family: 宋体; ">.sis</span><span style="font-family: 宋体; ">文件上传至手机中，然后在手机的应用程序管理器中就可以看到我们打包好的文件。选择&#8220;安装&#8221;命令，系统会提示用户要安装的位置，选择安装位置后，我们制作的应用程序就安装到手机中了。</span></p><p class="MsoNormal" style="font-family: 宋体; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 宋体; ">我们回到手机的主菜单，就会发现新安装的</span><span lang="EN-US" style="font-family: 宋体; ">HelloWorld&nbsp;</span><span style="font-family: 宋体; ">应用程序。打开运行，结果和在模拟器中看到的基本是一样的。</span></p></span></span></span></h2></span><img src ="http://www.cnitblog.com/maolxu/aggbug/64740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 17:51 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/19/64740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 (一)</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/19/64739.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 09:39:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/19/64739.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_3143AEF4D27C49AD8922EEBB45625CBE_E32A74840E024040B9F431D477FC86AF"><h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">1.1<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title href="file:///C:/Users/Administrator/AppData/Local/Temp/Juziyue/HTMLEdit/CS4E93/list.aspx?cid=100" target="_self">Symbian</a></font></span><span style="FONT-FAMILY: 黑体">操作系统的起源和现状</span></span></h2> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">成立于</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">1998</span><span style="FONT-FAMILY: 宋体">年，由爱立信、诺基亚、摩托罗拉和</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Psion</span><span style="FONT-FAMILY: 宋体">共同出资筹建。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">1999</span><span style="FONT-FAMILY: 宋体">年，松下公司加入</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2000</span><span style="FONT-FAMILY: 宋体">年，世界上第一款采用</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">操作系统的手机</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Ericsson R380</span><span style="FONT-FAMILY: 宋体">成功上市，同年，索尼公司和三洋公司获得了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">的授权。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>2001</span><span style="FONT-FAMILY: 宋体">年，</span><span class="Apple-converted-space">&nbsp;</span><span style="FONT-FAMILY: 宋体">富士通公司获得了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">的授权。诺基亚公司推出了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Nokia 7650-</span><span style="FONT-FAMILY: 宋体">基于</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">操作系统的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2.5G</span><span style="FONT-FAMILY: 宋体">手机</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">.<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">同时，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Nokia 9210</span><span style="FONT-FAMILY: 宋体">开始公开发售。</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2002</span><span style="FONT-FAMILY: 宋体">年，西门子公司与索尼</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">-</span><span style="FONT-FAMILY: 宋体">爱立信公司入股</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Sendo</span><span style="FONT-FAMILY: 宋体">公司获得了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">的授权。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">NTT DoCoMo<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">发布</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">3G FOMA F2051</span><span style="FONT-FAMILY: 宋体">手机。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">发布第一个用于</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">3G</span><span style="FONT-FAMILY: 宋体">系统的手机操作系统</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS v7.0 for 3G mobile phones</span><span style="FONT-FAMILY: 宋体">。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2003</span><span style="FONT-FAMILY: 宋体">年，诺基亚成功推出了第一款基于</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS v7.0s</span><span style="FONT-FAMILY: 宋体">的手机。同年，三星公司成为</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">的股东之一。</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2004</span><span style="FONT-FAMILY: 宋体">年，已经发布的采用</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">的手机包括</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Panasonic X700, Motorola A1000, Nokia 9500, 7610<span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">和</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">N-Gage QD, Samsung SGH-D710</span><span style="FONT-FAMILY: 宋体">。</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Arima</span><span style="FONT-FAMILY: 宋体">公司与</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">LG</span><span style="FONT-FAMILY: 宋体">电子获得了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">的授权。同时，联想公司决定将</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">操作系统用于他们最近的手机产品中。</span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">　　而</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">随着手机的发展得到了越来越多的市场。在目前手机操作系统的争夺中，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">市场占有率达到了</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">70</span><span style="FONT-FAMILY: 宋体">％，是当之无愧的老大，而微软的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a><span class="Apple-converted-space">&nbsp;</span>mobile</span><span style="FONT-FAMILY: 宋体">和其他操作系统一共只有</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">30</span><span style="FONT-FAMILY: 宋体">％的份额。</span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">　　目前，全球主流手机操作系统争夺主要有三种：</span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">　　</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>1.<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">操作系统：按持股比例多少，由诺基亚、爱立信、索尼爱立信、松下、三星、西门子共</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">6</span><span style="FONT-FAMILY: 宋体">家厂商顺序组成的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span><span style="FONT-FAMILY: 宋体">联盟把持。优点是价格适中，对手机要求较低，缺点是开发人员少。</span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">　　</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>2.<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a><span class="Apple-converted-space">&nbsp;</span>mobile</span><span style="FONT-FAMILY: 宋体">操作系统：优点在于可以方便地和</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">PC</span><span style="FONT-FAMILY: 宋体">上的</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a></span><span style="FONT-FAMILY: 宋体">进行互通，开发人员多，但缺点是授权费最高，对手机要求也高。</span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体">　　</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><span class="Apple-converted-space">&nbsp;</span>3.<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="嵌入式Linux驱动与内核开发－精品班" href="http://www.chinaeda.com/ke/jingpin.shtml">Linux</a></span><span style="FONT-FAMILY: 宋体">：全球开放的系统，任何厂家和开发商均可使用，优点是价格最低，对手机要求最低，缺点也很明显，厂家各自为营，手机之间的互通性差。<br style="FONT-FAMILY: 宋体"/></span></p> <h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">1.2<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></font></span><span style="FONT-FAMILY: 黑体">操作系统使用的手机设备</span></h2> <p style="MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">&nbsp;</font></span></p> <p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">采用</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml"><font style="FONT-FAMILY: 宋体" face="Times New Roman">Symbian</font></a></span><span style="FONT-FAMILY: 宋体">操作系统的智能手机已经推出的包括以下几款：</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#p910#p910"><span style="FONT-FAMILY: 宋体">Sony Ericsson P910</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#p900#p900"><span style="FONT-FAMILY: 宋体">Sony Ericsson P900</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#p800#p800"><span style="FONT-FAMILY: 宋体">Sony Ericsson P800</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt"><span class="Apple-converted-space">&nbsp;</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#f900i#f900i"><span style="FONT-FAMILY: 宋体">FOMA F900i</span></a></span></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#f2051#f2051"><span style="FONT-FAMILY: 宋体">FOMA F2051</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt"><span class="Apple-converted-space">&nbsp;</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#6600#6600"><span style="FONT-FAMILY: 宋体">Nokia 6600</span></a></span></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#ngage#ngage"><span style="FONT-FAMILY: 宋体">Nokia N-Gage</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#7610#7610"><span style="FONT-FAMILY: 宋体">Nokia 7610</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#qd#qd"><span style="FONT-FAMILY: 宋体">Nokia N-Gage QD</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#3660#3660"><span style="FONT-FAMILY: 宋体">Nokia 3660/3620</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#f2102v#f2102v"><span style="FONT-FAMILY: 宋体">FOMA F2102V</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt"><span class="Apple-converted-space">&nbsp;</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#7650#7650"><span style="FONT-FAMILY: 宋体">Nokia 7650</span></a></span></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#3650#3650"><span style="FONT-FAMILY: 宋体">Nokia 3650/3600</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#9290#9290"><span style="FONT-FAMILY: 宋体">Nokia 9290 Communicator</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#9210#9210"><span style="FONT-FAMILY: 宋体">Nokia 9210 Communicators</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#x#x"><span style="FONT-FAMILY: 宋体">Sendo X</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#A290#A290"><span style="FONT-FAMILY: 宋体">Motorola A920</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#a925#a925"><span style="FONT-FAMILY: 宋体">Motorola A925</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#sx1#sx1"><span style="FONT-FAMILY: 宋体">Siemens SX1</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">。</span></p> <p style="MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">&nbsp;</font></span></p> <p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: 宋体" class="MsoNormal"><span style="FONT-FAMILY: 宋体">即将推出的还有：</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#u300#u300">Arima U300<span class="Apple-converted-space">&nbsp;</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#6670#6670">Nokia 6670</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#6630#6630">Nokia 6630<span class="Apple-converted-space">&nbsp;</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#6260#6260">Nokia 6260<span class="Apple-converted-space">&nbsp;</span></a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#9500#9500">Nokia 9500</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#9300#9300">Nokia 9300</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#6620#6620">Nokia 6620</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#p30#p30">BenQ P30</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#sgh-710#sgh-710">Samsung SGH-D710</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#x700#x700">Panasonic X700</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#a1000#a1000">Motorola A1000</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#F900iT#F900iT">FOMA F900iT<span class="Apple-converted-space">&nbsp;</span></a><span style="FONT-FAMILY: 宋体">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#F800ies#F800ies">FOMA F880iES</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">，</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" href="http://www.symbian.com/phones/index.html#F900iC#F900iC">FOMA F900iC</a></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt">。<br style="FONT-FAMILY: 宋体"/></span></p> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left">&nbsp;&nbsp;&nbsp;</p> <h2 style="PADDING-BOTTOM: 0px; MARGIN: 13pt 0cm; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Arial">1.3<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS</font></span><span style="FONT-FAMILY: 黑体">的特点</span></h2> <p style="TEXT-ALIGN: left; MARGIN: 6pt 0cm 6pt 21pt; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: Verdana; COLOR: rgb(34,34,34)" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(34,34,34)">具有以下</span><span style="FONT-FAMILY: Verdana; COLOR: rgb(34,34,34)" lang="EN-US" xml:lang="EN-US">6</span><span style="FONT-FAMILY: 宋体; COLOR: rgb(34,34,34)">大特点：</span><span style="FONT-FAMILY: Verdana; COLOR: rgb(34,34,34)"><span class="Apple-converted-space">&nbsp;</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><br style="FONT-FAMILY: 宋体"/></span></span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">1</span><span style="FONT-FAMILY: 宋体">、操作系统是运行在<span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">ROM</span>上的</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">2</span><span style="FONT-FAMILY: 宋体">、系统是运行在电池驱动的设备上的</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">、完全是面向对象的</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">、基于组件的设计</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">5</span><span style="FONT-FAMILY: 宋体">、被设计成确保用户的数据不会丢失</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">6</span><span style="FONT-FAMILY: 宋体">、简单的<span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">UI</span>系统</span></p> <p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="left"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span></span><span style="FONT-FAMILY: 宋体">是真正的微核操作系统，所谓“微核”，就是说操作系统 只有很小的一部分是运行在最高优先级的，其他的功能都是以<span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US">Client-Server</span>的方式提供。下面是<span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a></span>系统的内部结构图：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">应用层：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">Shell, OPL,<span class="Apple-converted-space">&nbsp;</span></font></span><span style="FONT-FAMILY: 宋体">及其他应用程序</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">=================================================================</font></span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">系统层：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">Dialogs, Menu, Toolbar, Icons, Resources, JavaVM, Grid, Rich Text,<span style="FONT-FAMILY: 宋体">&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>Edit Control,<span style="FONT-FAMILY: 宋体">&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>List Control, Application Framework, Jave Class Libraries. =================================================================</font></span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">服务层：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">Window Server, Process Server, Socket Server, Sound Server, Wireless Server, Database Server, File Server, Al<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="ARM-Linux软件工程师—高级培训班" href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a><span class="Apple-converted-space">&nbsp;</span>Server, Comms Server,<span class="Apple-converted-space">&nbsp;</span></font></span><span style="FONT-FAMILY: 宋体">以及无线协议</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">=================================================================</font></span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">内核：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">euser.dll, ekern.exe,<span class="Apple-converted-space">&nbsp;</span></font></span><span style="FONT-FAMILY: 宋体">服务控制（</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">supervisor server</font></span><span style="FONT-FAMILY: 宋体">），</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman"><span class="Apple-converted-space">&nbsp;</span>HAL</font></span><span style="FONT-FAMILY: 宋体">（设备抽象层）</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">=================================================================</font></span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">驱动程序层：</span></p> <p style="TEXT-ALIGN: center; MARGIN: 6pt 0cm; FONT-FAMILY: 宋体" class="MsoNormal" align="center"><span style="FONT-FAMILY: 宋体">包括音频驱动，显示驱动，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><font style="FONT-FAMILY: 宋体" face="Times New Roman">MMC</font></span><span style="FONT-FAMILY: 宋体">驱动，键盘驱动，串并口驱动</span><font style="FONT-FAMILY: 宋体" face="Times New Roman"><span class="Apple-converted-space">&nbsp;</span></font><span style="FONT-FAMILY: 宋体">，</span><span style="FONT-FAMILY: 宋体" lang="EN-US" xml:lang="EN-US"><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="DSP C5000系统开发—高级培训班 " href="http://www.chinaeda.com/ke/dsp.shtml"><font style="FONT-FAMILY: 宋体" face="Times New Roman">dsp</font></a></span><span style="FONT-FAMILY: 宋体">驱动，时钟控制器驱动等等</span></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 17:39 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/19/64739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK+Symbian开发入门之运行 （一）</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/19/64738.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 09:30:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/19/64738.html</guid><description><![CDATA[<span  style="color: rgb(43, 43, 43); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19px; "><p><span  style="font: normal normal normal medium/normal 宋体; font-size: 12px; ">在Series 60 SDk中可以使用两个版本的模拟器可执行文件：一个版本包含符号调试信息，另一个是发布版本。发布版模拟器限制为只能评估或演示应用程序--它启动得很快，因为它不带有调试信息。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　两个版本都叫做epoc.exe，但是它们位于自己的子目录中。Epoc这个名字是历史遗留的--它是<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>&nbsp;OS以前的操作系统的名称。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　在正常的开发活动中，经常使用模拟器的调试形式。根据你选择的<a class="bluekey" href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/2915/2915.html" target="_blank" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">IDE</a>，你可以正常地使用调试版本或在"调试模式"中使用调试版本。能够在两种模式下运行同一个"调试模拟器"起初看起来有点混乱。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　有时候你可能希望启动模拟器，定位应用程序并运行它，而这仅仅是为了测试的目的。如果出现了严重的错误，模拟器和应用程序将以受到约束的方式关闭。&nbsp;<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　还有些时候你可能希望在自己认为存在问题的特殊地方（代码中）设置断点（breakpoint），接着让IDE在"调试模式"下运行模拟器。接着你定位应用程序并运行它。与应用程序适当地交互操作将会遇到代码中的断点。在断点上，源代码将显示在IDE中，并且同时显示与应用程序相关的所有符号调试信息。接着你可以在受控制的情形下，使用IDE的调试特性一步一步地调试代码片断。你可以查看IDE显示的应用程序源代码、数据、调用堆栈和其它与调试相关的信息，帮助自己跟踪到代码或逻辑中的错误。</span></p><p><span  style="font: normal normal normal medium/normal 宋体; font-size: 12px; "><img src="http://www.cppblog.com/images/cppblog_com/maolxu/DE6266FA0EA52DEAE8E21874B7F08CCDA2B0B732.bmp" onclick="javascript:window.open(this.src);" onload="rsimg(this,300)" width="300" height="151" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; cursor: pointer; "><br style="font-family: 宋体; "><table border="0" width="90%" align="center" style="font-size: 12px; font-family: 宋体; "><tbody style="font-family: 宋体; "><tr style="font-family: 宋体; "><td style="font-family: 宋体; "><div align="center" style="padding-bottom: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; font-family: 宋体; padding-top: 0px; "><br></div><div align="center" style="padding-bottom: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; font-family: 宋体; padding-top: 0px; ">图1－3. Series 60平台1.2调试模拟器的应用程序表格和列表视图</div></td></tr></tbody></table><img src="http://www.cppblog.com/images/cppblog_com/maolxu/B84919F0FD3A0D5D9C9658A19D9FC8C2CF9100CB.bmp" onclick="javascript:window.open(this.src);" onload="rsimg(this,300)" width="300" height="216" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; cursor: pointer; "><br style="font-family: 宋体; "><table border="0" width="90%" align="center" style="font-size: 12px; font-family: 宋体; "><tbody style="font-family: 宋体; "><tr style="font-family: 宋体; "><td style="font-family: 宋体; "><div align="center" style="padding-bottom: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; font-family: 宋体; padding-top: 0px; "><br style="font-family: 宋体; ">图1-4.微软Visual C++ IDE下处于调试模式的HelloWorld应用程序</div></td></tr></tbody></table><br style="font-family: 宋体; ">　　模拟器可执行文件位置<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　Series 60 1.2 SDK发布版模拟器典型情况下位于下面的位置：<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于Visual C++<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\wins\urel\epoc.exe<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于Borland C++<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\winsb\urel\epoc.exe&nbsp;<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于CodeWarrior<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\winscw\urel\epoc.exe<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　调试版模拟器典型情况下位于：<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于Visual C++<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\wins\udeb\epoc.exe<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于Borland C++<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\winsb\udeb\epoc.exe<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　对于CodeWarrior<br style="font-family: 宋体; "><br style="font-family: 宋体; ">\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\winscw\udeb\epoc.exe<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　精确的<a class="bluekey" href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1936/16936.html" target="_blank" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">路径</a>依赖于你在安装SDK的时候选择的选项。在Series 60 2.x SDK中模拟器的路径将非常类似--例如\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\Series602_0\Epoc32\release\wins\udeb\epoc.exe。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　图1－3显示了Series 60 1.2模拟器。它启动时显示应用程序主菜单为表格视图或列表视图。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　Series 60 2.0模拟器启动的外形类似电话应用程序，你必须通过按下图1－3所示的应用程序按钮导航到应用程序菜单。无论使用哪种版本的Series 60平台，一般把模拟器可执行文件的调试（udeb）版本作为开发项目的默认选项--例如\Epoc32\Release\wins\udeb\epoc.exe。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　<strong style="font-family: 宋体; ">模拟器调试模式</strong><br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　在模拟器的调试模式下运行应用程序的时候，源代码、函数调用堆栈、变量信息等在遇到代码断点的时候会立即显示出来，如图1－4所示。如果应用程序代码没有处在需要用户输入的位置，模拟器窗口本身可能消失了（它被最小化了）。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　从<a class="bluekey" href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/4282/9282.html" target="_blank" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">命令提示符</a>运行模拟器<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　如果需要从命令行运行调试模拟器，只需要打开命令提示符，把当前路径改变到epoc.exe应用程序所在的Series 60 SDK文件夹（例如\<a title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Symbian</a>\6.1\Series60\Epoc32\Release\wins\udeb）并输入下面的内容：<br style="font-family: 宋体; "><br style="font-family: 宋体; ">epoc<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　上面的命令将启动调试模拟器，接着你可以定位并运行自己的应用程序了，但是它并非处于调试模式之中。要使被调试的应用程序运行在模拟器的调试模式之下只能从IDE内部完成。如果要运行发布版模拟器，需要输入：<br style="font-family: 宋体; "><br style="font-family: 宋体; ">epoc -rel<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　<strong style="font-family: 宋体; ">在Visual C++ IDE中运行模拟器</strong><br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　在Visual C++ IDE中你按下Ctrl+F5或从菜单中选择Build|Execute Epoc.exe就可以启动模拟器的调试版本。这样将使模拟器处于非调试模式。作为代替，按下F5或从菜单中选择Build|Start<a class="bluekey" href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/1914/6914.html" target="_blank" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Debug</a>|Go将使模拟器处于调试模式。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　当你第一次运行某个Visual C++项目的模拟器的时候，会出现一个对话框向你询问可执行文件的名称。请导航到SDK的根目录的\Epoc32\Release\wins\udeb文件夹的epoc.exe文件。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　<strong style="font-family: 宋体; ">在Borland C++Builder 6和C++BuilderX IDE中运行模拟器</strong><br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　你可以使用Tools|Mobile Build Tools菜单选项，选择Run Emulator来启动模拟器的调试版本。或者使用Run|Run菜单选项（F9），但是它会引起项目每次都重新建立--而这花费的时间可能很长。使用这个选项的时候，你可能需要在模拟器启动之前终止建立对话框（"Compiling"）。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　如果你在C++BuilderX中运行模拟器，使用Run|Debug&nbsp;<a class="bluekey" href="http://www.itepub.net/html/kaifajingcui/yidongkaifa/2006/0514/3120/8120.html" target="_blank" style="font-family: 宋体; font-size: 12px; color: rgb(31, 58, 135); text-decoration: none; ">Project</a>菜单选项或按下Shift+F9。如果你希望重新建立项目并启动模拟器，选择Run|Run Project或按下F9。<br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　<strong style="font-family: 宋体; ">在CodeWarrior IDE中运行模拟器</strong><br style="font-family: 宋体; "><br style="font-family: 宋体; ">　　选择Project|Run菜单选项或按下Ctrl+F5运行模拟器。按下F5或使用Project|Debug菜单选项使模拟器运行在调试模式。</span></p></span>
<img src ="http://www.cnitblog.com/maolxu/aggbug/64738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 17:30 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/19/64738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ SDK+Symbian开发入门之运行 （二）</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/19/64737.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 08:56:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/19/64737.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_A3BD8AFC5664499883C7721C677DF8C4_5DF42CFA61484EB5AEC0E1B9D3EC7FF1"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="TEXT-ALIGN: left; FONT-SIZE: 12px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">定位和运行应用程序</strong><br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　通过点击模拟器的招牌位图上的光标键的图片，或者使用PC键盘光标（箭头）键导航并选择HelloWorld应用程序。点击"Selection"按钮（在光标控制键的中间）启动应用程序。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　注意<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　没有特定图标的应用程序（在.aif文件中指定）将会被赋予一个默认的图标，它看起来像一片锯齿状拼盘。<span class="Apple-converted-space">&nbsp;</span><br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　在某些SDK/IDE（例如Borland和CodeWarrior的一些版本）中，你建立的应用程序可能位于"Other"文件夹下，而不在主桌面上。如果出现这种情况，请导航并选择Other文件夹，接着通过点击"Selection"按钮打开它。导航并选择HelloWorld应用程序并点击"Selection"按钮调用该应用程序。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/></span></span> <table style="FONT-FAMILY: 宋体" border="0" width="90%" align="center"> <tbody style="FONT-FAMILY: 宋体"> <tr style="FONT-FAMILY: 宋体"> <td style="FONT-FAMILY: 宋体"> <div style="PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: 宋体; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" align="center"><img src="http://www.cnitblog.com/images/cnitblog_com/maolxu/1E575DFF64D8FE724BA08F8DD1BFCF983CCC7CD6.bmp"/><br style="FONT-FAMILY: 宋体"/> 图1－5."HelloWorld"应用程序</div> </td> </tr> </tbody> </table> <br style="FONT-FAMILY: 宋体"/> 　　<strong style="FONT-FAMILY: 宋体">调试应用程序</strong><br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　作为代替，你可以在IDE中使模拟器上运行的应用程序处于调试模式--这个过程验证依赖于使用的IDE。典型情况下，你需要首先在源代码的适当位置设置断点。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　启动处于调试模式的模拟器。由于要调试的是应用程序（本质上是动态链接库DLL），而不是模拟器本身，你需要导航并运行应用程序。该应用程序将会启动，碰到你设置的断点的时候执行会停止。接着你可以使用自己选择的IDE工具逐步执行应用程序的源代码。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　<strong style="FONT-FAMILY: 宋体">更多的IDE帮助</strong><br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　本文没有不同IDE功能的更多介绍，因此如果你要查询更多的IDE帮助信息，可以通过Help菜单选项进行。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　对于微软Visual C++，你可以选择Help|Contents菜单选项，它在与IDE一起安装的MSDN中提供。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　对于Borland C++Builder 6，你可以使用Help菜单选项。你会发现除了标准的Borland帮助文件之外还有一个独立的Help|Borland C++ Mobile Edition Help页面。对于C++BuilderX，你可以选择Help|Help Topics，然后选择Mobile Development。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　对于Metrowerks CodeWarrior，有一个Help|Online Manuals菜单选项，它包含了使用<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS时大量的有价值的信息。<br style="FONT-FAMILY: 宋体"/> <br style="FONT-FAMILY: 宋体"/> 　　还有更多的特定IDE信息可以在线获得--例如到http://msdn.microsoft.com/链接查找Visual C++信息，到http://bdn.borland.com/链接查找Borland C++信息，到http://www.metro-werks.com/MW/Develop/Wireless/链接查找CodeWarrior信息。</div><img src ="http://www.cnitblog.com/maolxu/aggbug/64737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 16:56 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/19/64737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian和C++ SDK开发入门之工具</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/13/64615.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Sat, 13 Mar 2010 04:06:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/13/64615.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_A31BBF1D91E74E48A7B1854D9139A136_F3E53B5D88BB44DF8B4C6972B4EA5774"><p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">开发Series 60项目的时候你可以使用的各种选项总结在表1-1中。<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>、Nokia和开发工具厂商Borland、Metrowerks正在提供更多的选择。但是，好像微软开发工具，尽管它目前可行并被广泛地使用，在可预见的未来无法受到支持。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　在微软、Borland和Metrowerks的多种IDE的功能之间目前有一些值得注意的差别。对后两种开发环境的增强正在进行之中。EMCC软件有限公司把所有的三种厂商的IDE都作为自己开发活动的基础。我们也每天使用命令行工具——并不是因为我们原意，而是由于我们目前只能这样做。这是为目标设备建立程序和自动化通宵编译过程的基本操作。C++BuilderX和CodeWarrior IDE现在可以用于为目标设备建立程序——但并不是所有的基本的建立操作都受到全部IDE的支持。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　在写作本文的时候，开发任何Series 60项目的最容易的和最通用的出发点是定义一对bld.inf和.mmp项目文件。在EMCC软件公司，这些文件用于任何特定IDE项目文件的生成过程，并且可以在任何需要的命令行建立过程中使用。这种方法也是<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>和Nokia在它们的SDK和文档中提供的每个简单的项目目前所采用的方法。在目前情况不断变化的情况下使用专用的IDE是不可行的。各种情况很快就会发生变化，而这正式<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS和Series 60开发人员的真实生活。</span></p> <p style="FONT-FAMILY: 宋体">&nbsp;</p> <p style="FONT-FAMILY: 宋体">在本文的剩余部分中，我们使用HelloWorld示例项目来演示Series 60模拟器的开发、调试和部署过程的所有步骤。</p> <p style="FONT-FAMILY: 宋体">　　我们也提供了示例应用程序需要的其它的所有文件——例如头文件（.h）、源文件（.cpp）和用户界面资源文件（.rss）。</p> <p style="FONT-FAMILY: 宋体">　　你可以使用Series 60模拟器测试该应用程序，或者在某个IDE中启动它，或者从命令行提示符上运行它。但是，在模拟器上调试应用程序必须在IDE内部进行。</p> <p style="FONT-FAMILY: 宋体">　　在模拟器上开发、运行、测试和调试应用程序之后，一般你都希望在目标设备上建立和运行该程序。因此我们还演示了如何为目标设备建立示例应用程序，如何部署它，并在目标Series 60<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>上运行它。</p> <p style="FONT-FAMILY: 宋体">　　Series 60模拟器</p> <p style="FONT-FAMILY: 宋体">　　Series 60应用程序的开发、调试和最初的测试一般都在PC模拟器上进行，该模拟器提供了一种基于微软<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a>的Series 60设备的实现。在大多数情形中你会发现基于模拟器的开发过程与在真实的设备上运行的应用程序的操作是非常相似的；因此你的主要工作在<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>设备可以使用之前就可以进行了。模拟器的精确界面与提供的图形会有很大的不同，它依赖于你使用的目标平台、Series 60的版本和所选择的IDE。此外，还可能添加或删除一些按钮或其它的操作元素以模拟现实的设备的配置。同样，模拟器上可以使用的应用程序也依赖于平台的版本和设备厂商的选择。</p> <p style="FONT-FAMILY: 宋体">　　模拟器和真实的设备之间有些差异无法避免。真实的Series 60设备可能带有<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>附件（例如照相头）和其它特性（例如后台振动）。因此有时候<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>对于开发和测试是必要的。此外，基于PC的模拟器不能精确地模拟精确计时、应用程序性能和内存管理的问题。</p> <p style="FONT-FAMILY: 宋体">　　对于基于PC的开发，编辑/编译/建立周期是基于微软<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a>开发工具集的。但是，与依赖Win32或MFC类库进行链接和建立不同，开发者将依赖于Series 60 SDK安装的头文件和PC格式的类库来进行链接和建立。作为结果的<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Windows CE" href="http://bbs.chinaeda.cn/list.asp?boardid=32">Windows</a>格式的二进制可执行文件就可以在以PC的模拟器上运行了。</p> <p style="FONT-FAMILY: 宋体">　　在开发过程中，特定IDE的项目文件管理着所有的链接和建立细节信息。它同时确保了建立操作的所有输出和其它需要的资源文件（例如应用程序资源文件）都被放到了适当的位置以供在模拟器环境下进行运行和调试。</p> <p style="FONT-FAMILY: 宋体">　　根据图1-2，Series 60显示屏逻辑上被分成三个区域：状态块、主块和控制块。</p> <p style="FONT-FAMILY: 宋体"><br style="FONT-FAMILY: 宋体"/> 图1-2. Series 60模拟器</p> <p style="FONT-FAMILY: 宋体"><br style="FONT-FAMILY: 宋体"/> 　　状态块是屏幕顶部的刻度条（在模拟器上是蓝色的）加上它上面的区域。主块是屏幕中间的，位于状态条和屏幕底部之间的软按键（soft key）标签之间的部分。控制块是紧接着主快，包含了软按键标签。</p> <p style="FONT-FAMILY: 宋体">　　状态块可以显示当前应用程序的信息和设备的一些普通信息（例如信号强度和电池情况）。它在大多数情形中是可视的，但是有时候是隐藏的。例如很多游戏就使用了整个屏幕。</p> <p style="FONT-FAMILY: 宋体">　　主块是屏幕的主要区域，应用程序可以在这儿显示数据。典型情况下，这个区域作为客户端矩形引用，它通常被应用程序的数据显示所填满。</p> <p style="FONT-FAMILY: 宋体">　　控制块占据了屏幕的下部，它显示了与两个软按键相关的标签，并根据需要显示滚动条。与状态块类似，控制块有时候也可以隐藏。在这种情况下，在Series 60中样式指导假定用户可以使用Options菜单（左边的软按键的默认的标签），即使它是不可视的（请参考Series 60 SDK文档提供的“Nokia Series 60游戏UI样式指导”）。</p> <p style="FONT-FAMILY: 宋体">　　控制块下面的两个按钮分别是左和右软按键，用于选择当前关联的Options菜单或标记的操作。四路导航按键可以上下左右滚动，如果按下（点击）中间就可以进行选择。</p> <p style="FONT-FAMILY: 宋体">　　你可以通过PC鼠标或光标按键在显示屏上的对象之间进行导航，从而与模拟器交互操作。我们可以直接地使用鼠标点击来选择文件夹或其它显示的对象，而不需要使用四路导航按键（仅仅在模拟器上可行）。我们可以使用PC键盘进行数据输入，或者通过点击模拟器上的12位键区来输入。因此与模拟器的交互操作是类似于、但并不是完全与使用真实的Series 60一样的——在真实的设备上没有笔输入，因此所有的移动和选择都是通过光标导航完成的。</p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-13 12:06 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/13/64615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian和C++ SDK开发入门之部署</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/13/64614.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Sat, 13 Mar 2010 04:03:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/13/64614.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_01C94C78DD1F408ABFAFB33D1D8C9E93_8CE4FA93A4EC4E3991CC89BB7AD5249C"><p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">传递到目标<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>上的应用程序的形式为<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>安装系统（.sis）文件。.sis文件是一个压缩的存档文件，它包含了安装所需要的所有文件，还包括了安装过程的选项信息。<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>安装系统为把应用程序、数据或配置信息安装到基于<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>操作系统的设备上提供了简单的和一致的用户界面。开发者（或最终用户）安装的组件都包含在.sis文件中。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　我们可以使用Series 60 SDK提供的交互式工具sisar来执行.sis文件的生成工作。为了容易在目标<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>上安装应用程序，sisar把所有的应用程序文件打包到一个.sis文件中。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　制作安装（.sis）文件所有需要的信息都在示例项目HelloWorld中提供了--它们位于\install folder下。在示例项目中我们使用了一个专用的安装包源文件（HelloWorld.pkg）和<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>提供的一个工具makesis.exe。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　建立SIS安装文件</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　在你建立了HelloWorld应用程序的<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="ARM-Linux软件工程师—高级培训班" href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>i发布版之后，你需要把所有的应用程序组件打包到一个安装程序包（.sis）文件之中。打开命令提示符并导航到HelloWorld项目的SDK文件夹。切换到\install folder，接着输入下面内容建立.sis文件：</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">makesis helloworld.pkg</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　成功的建立将会输出类似"Created helloworld.sis"的消息。安装程序包（.sis）文件将建立在\install folder下面。现在你必须它把传输到设备上。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　SIS文件的安装</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">　　你可以在三种潜在的安装选项中作出选择，这依赖于你使用的设备和其它可以使用的工具--例如，你是否能够通过红外线或蓝牙设备访问PC，或访问基于<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>Connect（Nokia PC Suite，或其它设备厂商提供的这类东西）的一些软件：</span></p> <p style="FONT-FAMILY: 宋体">　　· 安装通过调用PC上的.sis文件进行，后续的Series 60设备的应用程序安装过程通过PC与目标设备之间的红外线或蓝牙对话，由软件（例如<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>Connect）建立连接来完成。</p> <p style="FONT-FAMILY: 宋体">　　· 安装通过OBEX（OBject EXchange），经由红外线或蓝牙，从任何设备（例如PC、<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS电话或其它任何可以使用OBEX的设备）把.sis文件传输过去。这个过程可以由Messaging应用程序来管理，它可以截取附加在消息上的文件--当你打开消息的时候，它会在电话上自动启动应用程序安装过程。</p> <p style="FONT-FAMILY: 宋体">　　· 作为选择，.sis文件可以作为电子邮件附件发送。应用程序安装也是通过电话上的Messaging应用程序管理的。当你打开消息的时候，它自动地启动安装程序。</p> <p style="FONT-FAMILY: 宋体">　　前面两种方法依赖于你在开发项目的PC和Series 60设备之间建立连接。典型情况下设备厂商提供了适当的通讯软件，你必须参考连接软件提供的特定指令。</p> <p style="FONT-FAMILY: 宋体">　　在安装之后，.sis文件大幅度简化的版本依然保留在Series 60设备上用于控制应用程序的卸载，如果需要，请使用应用程序"Manager（管理器）"。这个简化的.sis文件仅仅包含卸载应用程序所需要的信息，典型情况下比原始文件小很多。</p> <p style="FONT-FAMILY: 宋体">　　如果.sis文件作为消息附件传递，而且原始消息没有从Messaging应用程序的Inbox文件夹中删除，那么原始的.sis文件也可能存在于设备上。</p> <p style="FONT-FAMILY: 宋体">　　在目标设备上运行</p> <p style="FONT-FAMILY: 宋体">　　把helloworld.sis文件使用上述的方法之一传输到目标<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="硬件设计" href="http://bbs.chinaeda.cn/list.asp?boardid=65">硬件</a>上。在传输之后，你就可以在设备上安装应用程序了。运行应用程序按照"定位和运行应用程序"一节列举的进行。你会确信目标设备上定位和运行的应用程序于模拟器上的是一样的--只有一个小小的差别：应用程序不会位于"Other"文件夹中。</p> <p>&nbsp;</p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-13 12:03 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/13/64614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian入门系列 -- framework</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/13/64613.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Sat, 13 Mar 2010 03:49:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/13/64613.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_221BA77D7C1247FDB2DBC8C03D28F919_468DB62F735949C9AEA864F2858DB504"><p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span class="Apple-converted-space">&nbsp;</span>其实在我看来，<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS之上的MMI编程和MFC类似，都是有个application framework，用户需要的就是在这个基础之上，对类进行继承，对函数进行重载，而framework完成了很多和系统进行交互的工作。</span></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp; This is the second document . on my opinion, there are same a little between MFC and<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS .They all own a application framework on their basic OS. Based on such framework, user only need to make their own derived class ,and reload the virtual functions. and the framework can help u hanle most work interacting with the OS.</p> <p style="FONT-FAMILY: 宋体"><br style="FONT-FAMILY: 宋体"/> ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br style="FONT-FAMILY: 宋体"/> 这是文档中关于编译和运行的资料，我懒得翻译了。还有结合我开发中的问题<br style="FONT-FAMILY: 宋体"/> 做了补充。<br style="FONT-FAMILY: 宋体"/> ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. abld是利用项目文件（appname.mmp)进行编译的，所以，在你的mmp文件改动过后，一定要利用<br style="FONT-FAMILY: 宋体"/> abld makefile vc6<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重新生成VC工程文件，然后才能够利用VC进行app的编译，否则会出错。<br style="FONT-FAMILY: 宋体"/> (手工修改VC的编译、连接设置不起作用，不知为何？）<br style="FONT-FAMILY: 宋体"/></p> <p style="FONT-FAMILY: 宋体"><strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、编译和运行<br style="FONT-FAMILY: 宋体"/></strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Building and running the examples<br style="FONT-FAMILY: 宋体"/> This section explains how to build and run the SDK example applications. All the applications are built and run in the same way. The applications can be built to run on the<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS emulator, or the target device.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Building for the<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a><span class="Apple-converted-space">&nbsp;</span>OS emulator<br style="FONT-FAMILY: 宋体"/> The SDK and the example applications should be installed.<br style="FONT-FAMILY: 宋体"/> To build an application, do the following:<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Create the abld file.<br style="FONT-FAMILY: 宋体"/> In a command window, go into the application''''s top level folder (the one which contains the bld.inf file) e.g. \animation\gui\group and enter the following command:<br style="FONT-FAMILY: 宋体"/> bldmake bldfiles<br style="FONT-FAMILY: 宋体"/> This will create the abld.bat file in the current directory.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Create the Wins build files and build the application.<br style="FONT-FAMILY: 宋体"/> In the application''''s top level folder enter the following command:<br style="FONT-FAMILY: 宋体"/> abld build wins udeb<br style="FONT-FAMILY: 宋体"/> This will create the necessary build files and build the application, including any resource files required. This stage may produce warnings. If it produces errors, a DLL component may not have had its exports frozen. Perform step 3, below.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. If the application has a DLL component, freeze the exports.<br style="FONT-FAMILY: 宋体"/> If an application contains a DLL component this step must be performed, otherwise it can be skipped. In the application''''s top level folder enter the following command：<br style="FONT-FAMILY: 宋体"/> abld freeze<br style="FONT-FAMILY: 宋体"/> This will ensure that the exports are frozen. Then enter the following command (repeated from step 2)：<br style="FONT-FAMILY: 宋体"/> abld build wins udeb<br style="FONT-FAMILY: 宋体"/> This will build against the newly frozen interface..<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. Running the application on the emulator<br style="FONT-FAMILY: 宋体"/> To run the application on the emulator, carry out the following steps:<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1． Run the emulator.<br style="FONT-FAMILY: 宋体"/> From a command window, run the command<br style="FONT-FAMILY: 宋体"/> Epoc<br style="FONT-FAMILY: 宋体"/> to launch the debug emulator, or<br style="FONT-FAMILY: 宋体"/> epoc -rel<br style="FONT-FAMILY: 宋体"/> to launch the release emulator. The emulator window will appear.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2． Find the application folder.<br style="FONT-FAMILY: 宋体"/> When the emulator has started, a set of applications and folders will appear. Find the Other folder.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3． Run the application.<br style="FONT-FAMILY: 宋体"/> Select the Other folder, and then select the relevant application icon. This will run the application.<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. Running the application from Visual C++<br style="FONT-FAMILY: 宋体"/> The emulator can also be run from Microsoft Visual C++. This can be useful when modifying or debugging the application.<br style="FONT-FAMILY: 宋体"/>  Create the Visual C++ workspace and project files.<br style="FONT-FAMILY: 宋体"/> In the application''''s top level folder enter the following command：<br style="FONT-FAMILY: 宋体"/> abld makefile vc6<br style="FONT-FAMILY: 宋体"/> This will create the Visual C++ project files in a subdirectory of the %EPOCROOT%epoc32\Build'''' directory, where %EPOCROOT% is the pathname of the emulator root; e.g. \<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>\6.0\NokiaCPP\<br style="FONT-FAMILY: 宋体"/> （在我使用的siemens SX1中目录为Q:\Siemens\SX1\bin ）<br style="FONT-FAMILY: 宋体"/>  Run Microsoft Visual C++ and open the workspace file<br style="FONT-FAMILY: 宋体"/> The workspace file a pathname of the following form:<br style="FONT-FAMILY: 宋体"/> %EPOCROOT%Epoc32\Build\ApplicationPathname\Group\ApplicationName\Wins\ApplicationName.DSW<br style="FONT-FAMILY: 宋体"/> where:<br style="FONT-FAMILY: 宋体"/> %EPOCROOT% is the pathname of the emulator root; e.g. \<a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="Symbian手机应用开发工程师培训班" href="http://www.chinaeda.com/ke/mob.shtml">Symbian</a>\6.0\NokiaCPP\ （在我使用的siemens SX1中目录为Q:\Siemens\SX1\bin ）<br style="FONT-FAMILY: 宋体"/> ApplicationPathname is the pathname of the example application folder; e.g. \Examples\animation<br style="FONT-FAMILY: 宋体"/> ApplicationName is the name of the example application. e.g. animation<br style="FONT-FAMILY: 宋体"/> So the whole pathname could be, e.g.<br style="FONT-FAMILY: 宋体"/> \Epoc32\Build\Examples\animation\Group\animation\Wins\animation.DSW<br style="FONT-FAMILY: 宋体"/>  Select the Execute item from the Build menu.<br style="FONT-FAMILY: 宋体"/> When the ''''Executable for Debug Session'''' dialog box appears press the command button in the right of the dialog box and select browse from the pop-up menu. Using the browse dialog select the file %EPOCROOT%epoc32\release\wins\udeb\epoc.exe. The emulator will run. You only need to do this once. When you subsequently select execute for this application, the emulator will automatically run.<br style="FONT-FAMILY: 宋体"/> 5 Building for the target device<br style="FONT-FAMILY: 宋体"/> The SDK and the example applications should be installed.<br style="FONT-FAMILY: 宋体"/> To build the applications, do the following:<br style="FONT-FAMILY: 宋体"/> 5.1 Create the abld file.<br style="FONT-FAMILY: 宋体"/> Go into the application''''s top level folder (the one which contains the bld.inf file) e.g. ''''\animation\gui\group'''' and enter the following command:<br style="FONT-FAMILY: 宋体"/> bldmake bldfiles<br style="FONT-FAMILY: 宋体"/> This will create the abld.bat file in the current directory.<br style="FONT-FAMILY: 宋体"/> 5.2 Create the target build files and build the application.<br style="FONT-FAMILY: 宋体"/> In the application''''s top level folder enter one of the following commands, depending upon whether you wish to target the<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="ARM-Linux软件工程师—高级培训班" href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>I or THUMB instructions sets:<br style="FONT-FAMILY: 宋体"/> abld build<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="ARM-Linux软件工程师—高级培训班" href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>i urel<br style="FONT-FAMILY: 宋体"/> abld build thumb urel<br style="FONT-FAMILY: 宋体"/> This will create the necessary build files and build the application, including any resource files required. This stage may produce warnings. If it produces errors, a DLL component may not have had its exports frozen. Perform stage 3, below.<br style="FONT-FAMILY: 宋体"/> 5.3 If the application has a DLL component, freeze the exports.<br style="FONT-FAMILY: 宋体"/> If an application contains a DLL component this step must be performed, otherwise<br style="FONT-FAMILY: 宋体"/> it can be skipped. In the application''''s top level folder enter the following command:<br style="FONT-FAMILY: 宋体"/> abld freeze<br style="FONT-FAMILY: 宋体"/> This will ensure that the exports are frozen. Then enter the following command (repeated from step 2):<br style="FONT-FAMILY: 宋体"/> abld build<span class="Apple-converted-space">&nbsp;</span><a style="FONT-FAMILY: 宋体; COLOR: rgb(31,58,135); TEXT-DECORATION: none" title="ARM-Linux软件工程师—高级培训班" href="http://www.chinaeda.com/ke/gaoji.shtml">ARM</a>i urel<br style="FONT-FAMILY: 宋体"/> abld build thumb urel<br style="FONT-FAMILY: 宋体"/> This will build against the newly frozen interface.</p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-13 11:49 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/13/64613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian入门系列 -- applicatoin对象研究</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/13/64612.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Sat, 13 Mar 2010 03:31:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/13/64612.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_0DBB562212144174A0CA8C458B5E8256_29CE01B98A6345FAA2CC0C2D0661FC63"><p><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="TEXT-ALIGN: left; FONT-SIZE: 12px" class="Apple-style-span">通常我们使用的application framework需要以下几个类：application，document，appui，view，container。每个对象负责不同的功能。这里首先从application对象开始分析。<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Application 分析</span></span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">－－－－－－－－－－－－－－－－－－－－－－－－－</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;继承关系：</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEikApplication --&gt;CApaApplication --&gt;CBase</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;－－－－－－－－－－－－－－－－－－－－－－－－－</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;application对象是整个application和applcation framework交互的基础。同时提供了接口给document和resource file。application对象必须实现的函数是AppDllUid()，这个函数向application framework注册application dll的UID。这个UID是applicationframework用来区分不同application之用。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（【注】application framework是不是利用这个UID向不同的app传送event呢？）</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">application对象另外一个主要的功能是创建document对象，也就是说必须要实现</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">CreateDocumentL()函数，这个函数由Application Framework负责调用。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（【注】这就是application framework编程的好处，有些东西不要管的就不要管）</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;application对象继承自CApaApplication对象，这样就实现了访问application信息</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">函数，如AppFullName()函数提供了app的全名和路径，这样，利用这个函数就能了解到应用被安装到那个目录，从而实现在程序中的目录灵活映射。</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如：可以这样取得目录结构：</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">代码:<br style="FONT-FAMILY: 宋体"/> TFileName appNamePath;</span></p> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">// Get the full name and path of the application<br style="FONT-FAMILY: 宋体"/> appNamePath = CEikonEnv::Static()-&gt;EikAppUi()-&gt;Application()-&gt;AppFullName();</span></p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-13 11:31 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/13/64612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian入门系列 -- document对象分析</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/13/64608.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Sat, 13 Mar 2010 01:00:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/13/64608.html</guid><description><![CDATA[<div id="PublishedByWebStory-[5]1_99F47B44AACD40B9B5D879B1FEC802F9_5376F8BD9CB64909B0B70C2851DA78F6"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="TEXT-ALIGN: left; FONT-SIZE: 12px" class="Apple-style-span"><strong style="FONT-FAMILY: 宋体">【主要作用】</strong></span></span> <p style="FONT-FAMILY: 宋体"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 宋体; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>1) 是app的data model。<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>2) 在基于文件的app中，document提供了对于文件的访问（store/restore）<br style="FONT-FAMILY: 宋体"/> &nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>3) 负责创建AppUI，从而可以提供修改document的基础，CreateAppUiL()负责创建application的appUI对象。</span></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>实际上，document起到了一个中间层（intermediate layer）的作用。负责在appui和app model（engine）以及 file之间建立联系。</p> <p style="FONT-FAMILY: 宋体"><br style="FONT-FAMILY: 宋体"/> 『AppUI』<br style="FONT-FAMILY: 宋体"/> ----------------------- 『Document』<br style="FONT-FAMILY: 宋体"/> |<br style="FONT-FAMILY: 宋体"/> 『model』 &lt;-&gt; 『file』</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><strong style="FONT-FAMILY: 宋体">【Document的管理】</strong></p> <p style="FONT-FAMILY: 宋体">1) OpenFileL()</p> <p style="FONT-FAMILY: 宋体">这个函数的功能和app的资源文件中的TBUF段（segment）密切相关。</p> <p style="FONT-FAMILY: 宋体">RESOURCE TBUF r_default_document_name<br style="FONT-FAMILY: 宋体"/> {<br style="FONT-FAMILY: 宋体"/> buf="";<br style="FONT-FAMILY: 宋体"/> }</p> <p style="FONT-FAMILY: 宋体">这个segment决定了application关联的文件名。这里的文件名连同路径就作为参数传递给了</p> <p style="FONT-FAMILY: 宋体">OpenFileL() 函数。这就使得application在启动的时候能够调用缺省的file，如果这个segment是</p> <p style="FONT-FAMILY: 宋体">空的，那么缺省的document的名字和application的basename相同。这里需要注意的是series60只</p> <p style="FONT-FAMILY: 宋体">允许存在一个缺省的file。</p> <p style="FONT-FAMILY: 宋体">这个函数的返回值是CFileStore*，这是返回给application framework的指针，以方便</p> <p style="FONT-FAMILY: 宋体">application framework把它传递给其他函数。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp; 【注】</strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>注意OpenFileL() 需要三个参数，其中文件名(TDesC&amp; aFilename)和file server session</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>参数(RFs&amp; aFs) 应当是由application framework自动创建的。但是另外一个参数怎么确定的呢？</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>2) NewDocumentL()</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>这个函数是由application framework来调用，用于初始化一个default document file。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体"><span class="Apple-converted-space">&nbsp;</span>【注?】</strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>这个函数是不是在资源文件没有文件名的情况下调用的？如果是这样，那么这个函数应当在OpenFileL()</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>之前被调用？</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp; 【解释】</strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>我在Document函数里面重载了函数NewDocumentL()和OpenFileL()，并分别加上了断点跟踪调试。发现：</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>(#) 如果在资源文件中没有文件名的话，那么这两个函数都不执行。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>(#) 如果在资源文件存在文件名的话，那么首先执行的是OpenFileL()函数，但是这个时候的aOpen参数值是0，表明</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>文件不存在或者文件没有打开。那么接下来调用NewDocumentL()，这个函数负责创建一个新的document file。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>接下来会调用document类的StoreL()函数。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>(#) 在晚上上述的步骤之后，再重新运行这个app，那么启动的时候会调用OpenFileL()函数，这个时候aOpen参数值是1，</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>表明文件存在，那么接下来就调用ReStoreL()函数对文件进行读写。</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp; 【对相关file的管理】</strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>document类提供了两个函数对文件的mode访问和修改。AppFileMode()和SetAppFileMode()。</p> <p style="FONT-FAMILY: 宋体"><br style="FONT-FAMILY: 宋体"/> <strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【对相关file的访问存取】</strong></p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>document类提供了如下函数对file进行访问：<br style="FONT-FAMILY: 宋体"/> SaveL()；StoreL()；RestoreL()；ExternalizeL()；PrintL()；</p> <p style="FONT-FAMILY: 宋体">其中SaveL()会在app退出的时候被调用，用于保存app相关的数据到file中去。</p> <p style="FONT-FAMILY: 宋体">SaveL() --&gt; StoreL();</p> <p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;<strong style="FONT-FAMILY: 宋体">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></strong>而RestoreL()是在app启动的时候调用的，负责把文件的信息保存在document相关的model（engine）中去。</p> <p>&nbsp;</p></div><img src ="http://www.cnitblog.com/maolxu/aggbug/64608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-13 09:00 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/13/64608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从C++过渡到SYMBIAN C++？</title><link>http://www.cnitblog.com/maolxu/archive/2010/03/01/64426.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 01 Mar 2010 00:58:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/03/01/64426.html</guid><description><![CDATA[<div id=PublishedByWebStory-[5]1_6B84429BC6B0493B84229CC9DB0BBC0A_C167EF10AF9A400EB42BF30D717FFA8F>
<div style="LAYOUT-GRID:  15.6pt none" class=Section0>
<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></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">Windows&nbsp;C++</font><font face=宋体>程序员初次接触</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统时可能遇到的问题。我们开发过三个成功版本</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统的经验使我们十分清楚在这个不算丰富稳定的环境中工作什么才是困难的。</font><font face="Times New Roman">Symbian</font><font face=宋体>成功的一个原因是许多手机生产商非常不希望被绑在微软这条贼船上，另一个原因是</font><font face="Times New Roman">Symbian</font><font face=宋体>集成了轻量级、一流的系统，同时又可以提供如此广泛的功能。这里的一些提示也许会对开发成功的</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统应用程序有所帮助。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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.<font face=宋体>文档和资源</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">Windows</font><font face=宋体>程序员来说，他对</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统首先注意到的方面就是相比起微软的高级精良装备来说，</font><font face="Times New Roman">Symbian</font><font face=宋体>开发文档实在是太少了。虽然这种情况正在得到改善，某些</font><font face="Times New Roman">API</font><font face=宋体>类仍然没有相关文档。比如</font><font face="Times New Roman">CEikRichTextEditor</font><font face=宋体>这个类在文档中就没有独立条目。</font><font face="Times New Roman">CRichText</font><font face=宋体>这个类包括了大多数相关功能，被收入了文档，但你可能并不知道何时第一次使用这种控制（参见我们下面关于对象结构的说明）。</font></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">Symbian</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">Symbian</font><font face=宋体>对一些组件，例如</font><font face="Times New Roman">Word</font><font face=宋体>，一样提供了源代码。</font><font face="Times New Roman">API</font><font face=宋体>和例程相结合足以满足大多数程序员的需要。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">6.0</font><font face=宋体>版开始，</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统</font><font face="Times New Roman">95</font><font face=宋体>％的源代码是对其白金合作伙伴项目（</font><font face="Times New Roman">PlatinumPartner&nbsp;Program</font><font face=宋体>，</font><font face="Times New Roman">http://www.symbian.com/partners/part-platnm.html</font><font face=宋体>）成员开放的。这个需要额外付费注册。这个项目的影响之一就是某些老版本开发包的完整源代码不再提供，取而代之的是</font><font face="Times New Roman">Symbian</font><font face=宋体>或者</font><font face="Times New Roman">Nokia</font><font face=宋体>公司一边继续完善文档，一边提供不断扩充的例程。比如随</font><font face="Times New Roman">Series&nbsp;60</font><font face=宋体>提供的文档就有一个名为</font><font face="Times New Roman">&#8220;</font><font face=宋体>如何操作</font><font face="Times New Roman">rich&nbsp;text&#8221;</font><font face=宋体>的独立条目（虽然</font><font face="Times New Roman">CEikRichTextEditor</font><font face=宋体>仍然没有条目）。文档中还有许多其他有用的，写得很好的</font><font face="Times New Roman">&#8220;How&nbsp;to&#8221;</font><font face=宋体>文章。在</font><font face="Times New Roman">Series&nbsp;60</font><font face=宋体>中，文档和例程的结合使用是显而易见的</font><font face="Times New Roman">——</font><font face=宋体>文档中对每一个</font><font face="Times New Roman">Avkon&nbsp;UI</font><font face=宋体>类都直接引用有例程。</font><font face="Times New Roman">Windows</font><font face=宋体>程序员还有一个要习以为常的事情是缺乏有用的外部资源，虽然这种情况正在得到改善。《专业</font><font face="Times New Roman">Symbian</font><font face=宋体>编程》（</font><font face="Times New Roman">&#8216;Professional&nbsp;Symbian&nbsp;Programming&#8217;&nbsp;(PSP)</font><font face=宋体>）包含了许多有用的信息，但是作为快速参考就不太合适，而且它成书于</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统第</font><font face="Times New Roman">5</font><font face=宋体>版的时候</font><font face="Times New Roman">——</font><font face=宋体>新版将于</font><font face="Times New Roman">2003</font><font face=宋体>年早些时候面世。</font><font face="Times New Roman">PSP</font><font face=宋体>还不算过时，但情况有所改变，尤其是在</font><font face="Times New Roman">UI</font><font face=宋体>层次上。有本书叫《</font><font face="Times New Roman">Symbian</font><font face=宋体>设备无线</font><font face="Times New Roman">Java</font><font face=宋体>》（</font><font face="Times New Roman">&#8216;Wireless&nbsp;Java&nbsp;for&nbsp;Symbian&nbsp;Devices&#8217;</font><font face=宋体>）也许更新一些，可对</font><font face="Times New Roman">C++</font><font face=宋体>开发者没什么用处。还有《</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统通讯编程》（</font><font face="Times New Roman">&#8216;Symbian&nbsp;OS&nbsp;Communications&nbsp;Programming&#8217;</font><font face=宋体>）和《</font><font face="Times New Roman">Series&nbsp;60</font><font face=宋体>及</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统编程》（</font><font face="Times New Roman">&#8216;Programming&nbsp;for&nbsp;Series&nbsp;60&nbsp;and&nbsp;Symbian&nbsp;OS&#8217;</font><font face=宋体>）也已上架。更多细节可以在</font><font face="Times New Roman">http://www.symbian.com/books/index.html</font><font face=宋体>找到。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">Q-A</font><font face=宋体>资源确实有助于弥补空白。</font><font face="Times New Roman">Symbian</font><font face=宋体>自己设立了</font><font face="Times New Roman">&#8220;Symbian</font><font face=宋体>开发者网络</font><font face="Times New Roman">&#8221;</font><font face=宋体>，这是一个集论坛、</font><font face="Times New Roman">FAQ</font><font face=宋体>、样例和其它有用信息于一身的网络资源。它的地址是</font><font face="Times New Roman">http://www.symbian.com/developer</font><font face=宋体>。</font><font face="Times New Roman">Nokia</font><font face=宋体>也有一个类似的项目叫做</font><font face="Times New Roman">&#8220;Nokia</font><font face=宋体>论坛</font><font face="Times New Roman">&#8221;</font><font face=宋体>，网址位于</font><font face="Times New Roman">http://www.forum.nokia.com</font><font face=宋体>。到底该去哪里可并不一定，而且你贴出了问题也不一定就会有答案</font><font face="Times New Roman">——</font><font face=宋体>这依赖于你其它的开发伙伴的与人为善。</font><font face="Times New Roman">Symbian</font><font face=宋体>和</font><font face="Times New Roman">Nokia</font><font face=宋体>的内部人员有时的确会出现在这里，但是如果你希望从知道答案的那个人口中得到确切答复，你需要付费注册。</font><font face="Times New Roman">Symbian</font><font face=宋体>的付费注册地址在</font><font face="Times New Roman">http://www.symbian.com/partners/part-servs.html</font><font face=宋体>的</font><font face="Times New Roman">&#8220;Partner&nbsp;Programs&#8221;</font><font face=宋体>中，</font><font face="Times New Roman">Nokia</font><font face=宋体>的则可以从</font><font face="Times New Roman">Nokia</font><font face=宋体>论坛的</font><font face="Times New Roman">&#8220;Developer&nbsp;Support,&nbsp;Technical&nbsp;Case&nbsp;Solving&#8221;</font><font face=宋体>中找到。不过还是先看看免费资源吧：这里有大量有用的最新信息和资源，包括定时的开发包升级。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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.<font face=宋体>对象结构</font><font face="Times New Roman">Symbian</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">list&nbsp;box</font><font face=宋体>）不是一个对象</font><font face="Times New Roman">——</font><font face=宋体>而是四个：列表框对象（</font><font face="Times New Roman">list&nbsp;box&nbsp;object</font><font face=宋体>）、模型（</font><font face="Times New Roman">model</font><font face=宋体>）、视图（</font><font face="Times New Roman">view</font><font face=宋体>）和绘图器（</font><font face="Times New Roman">drawer</font><font face=宋体>）。它们之间的功能划分是可以预期并且很符合逻辑的。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">UI</font><font face=宋体>控制和一个包含处理文本格式化的文本对象。但是对格式化的操作引入了对字符格式化和对段落格式化的更进一步的对象。这些，按照次序，使用了独立的</font><font face="Times New Roman">mask</font><font face=宋体>对象来指示显示了你希望对任何给定调用定位的格式化的</font><font face="Times New Roman">API</font><font face=宋体>调用。所以操作文本显示为黑体还是非黑体，同时还影响到行间距的代码就需要用到</font><font face="Times New Roman">CEikRichTextEditor</font><font face=宋体>、</font><font face="Times New Roman">CRichText</font><font face=宋体>、</font><font face="Times New Roman">TCharFormat</font><font face=宋体>、</font><font face="Times New Roman">TCharFormatMask</font><font face=宋体>、</font><font face="Times New Roman">CParaFormat</font><font face=宋体>和</font><font face="Times New Roman">CparaFormatMask</font><font face=宋体>这几个类。这里有一段这样的代码：</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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'">[Copy&nbsp;to&nbsp;clipboard]CODE:</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'">TCharFormat&nbsp;defaultFormat;</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'">TCharFormatMask&nbsp;formatMask;</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'">formatMask.SetAttrib(EAttFontStrokeWeight);</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'">CRichText*&nbsp;text&nbsp;=&nbsp;iDisplay-&gt;RichText();</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'">text-&gt;Reset();</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'">for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;10;&nbsp;++i)</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></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'">TPtrC&nbsp;boldText&nbsp;=&nbsp;getBoldPiece(i);</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'">TPtrC&nbsp;plainText&nbsp;=&nbsp;getRomanPiece(i);</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></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'">TInt&nbsp;insertPos&nbsp;=&nbsp;text-&gt;DocumentLength();</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'">text-&gt;SetInsertCharFormatL(*iCharFormat,&nbsp;formatMask,&nbsp;insertPos);</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'">text-&gt;InsertL(insertPos,&nbsp;boldText);</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'">text-&gt;CancelInsertCharFormat();</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'">insertPos&nbsp;=&nbsp;text-&gt;DocumentLength();</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'">text-&gt;SetInsertCharFormatL(defaultFormat,&nbsp;formatMask,&nbsp;insertPos);</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'">text-&gt;InsertL(insertPos,&nbsp;plainText);</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'">text-&gt;CancelInsertCharFormat();</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></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'">CParaFormat&nbsp;paraFormat;</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'">TParaFormatMask&nbsp;paraFormatMask;</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'">iDisplay-&gt;RichText()-&gt;GetParaFormatL(&#182;Format,&nbsp;paraFormatMask,</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'">0,&nbsp;iDisplay-&gt;TextLength());</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'">paraFormatMask.ClearAll();</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'">paraFormatMask.SetAttrib(EAttLineSpacing);</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'">paraFormatMask.SetAttrib(EAttLineSpacingControl);</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'">paraFormat.iLineSpacingControl&nbsp;=&nbsp;CParaFormat::ELineSpacingExactlyInTwips;</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'">CGraphicsDevice*&nbsp;screenDevice&nbsp;=&nbsp;iEikonEnv-&gt;ScreenDevice();</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'">TInt&nbsp;paraDelta;</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></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'">TInt&nbsp;lineHeight&nbsp;=&nbsp;screenDevice-&gt;VerticalPixelsToTwips(</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'">iRegularFont-&gt;HeightInPixels()&nbsp;+&nbsp;paraDelta);</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'">paraFormat.iLineSpacingInTwips&nbsp;=&nbsp;lineHeight;</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'">iDisplay-&gt;RichText()-&gt;ApplyParaFormatL(</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'">&#182;Format,&nbsp;paraFormatMask,&nbsp;0,&nbsp;iDisplay-&gt;TextLength());</span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">CTextView</font><font face=宋体>和</font><font face="Times New Roman">CTextLayout</font><font face=宋体>，连同他们的帮助对象一起。当我们想在编辑控制中定位滚动点，以使文本的最后一行可以处于编辑控制底部之上一行的位置，我们就不得不了解到</font><font face="Times New Roman">CTextView</font><font face=宋体>的存在，以及如何获得它，还有关于</font><font face="Times New Roman">CTextView::SetViewL</font><font face=宋体>、</font><font face="Times New Roman">TViewYPosQualifier::SetHotSpot</font><font face=宋体>及</font><font face="Times New Roman">TViewYPosQualifier::SetMakeLineFullyVisible</font><font face=宋体>。他们看起来是这个样子的：</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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'">[Copy&nbsp;to&nbsp;clipboard]CODE:</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'">TInt&nbsp;yPos&nbsp;=&nbsp;iDisplay-&gt;TextView()-&gt;ViewRect().iBr.iY;</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'">TViewYPosQualifier&nbsp;yPosQualifier;</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'">yPosQualifier.SetHotSpot(TViewYPosQualifier::EFViewBottomOfLine);</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'">yPosQualifier.SetMakeLineFullyVisible(</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'">TViewYPosQualifier::EFViewForceLineFullyVisible);</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'">iDisplay-&gt;TextView()-&gt;SetViewL(</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'">iDisplay-&gt;TextLength(),</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'">yPos,</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'">yPosQualifier,</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'">CTextView::EFViewDiscardAllFormat);</span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">API</font><font face=宋体>，试用了各种不同的方法来证明了这一点。</font></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">Symbian</font><font face=宋体>操作系统提供的功能实在太丰富了，理解这一点很重要。一旦你了解了这个领域，你就会对</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统的对象结构是如此明智感激不尽，然后很快你就会发现你能够预知你需要的函数藏在什么地方。如此重复，你会发现我们刚开始的困惑现在已经变成了一种审美享受。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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'">Symbian<font face=宋体>中的串！毫无疑问</font><font face="Times New Roman">Symbian</font><font face=宋体>中对串的实现是经过深思熟虑的，强壮的和经济的。同样无疑的是这代表着一种富贵病。串是通过</font><font face="Times New Roman">Symbian</font><font face=宋体>称之为</font><font face="Times New Roman">&#8220;</font><font face=宋体>描述符</font><font face="Times New Roman">&#8221;</font><font face=宋体>的机制来实现的，跟以下几个类有关：</font><font face="Times New Roman">TDesC</font><font face=宋体>、</font><font face="Times New Roman">TBufCBase</font><font face=宋体>、</font><font face="Times New Roman">TDes</font><font face=宋体>、</font><font face="Times New Roman">TPtrC</font><font face=宋体>、</font><font face="Times New Roman">TBufC</font><font face=宋体>、</font><font face="Times New Roman">HBufC</font><font face=宋体>、</font><font face="Times New Roman">TBuf</font><font face=宋体>和</font><font face="Times New Roman">TPtr</font><font face=宋体>。这还不包括由</font><font face="Times New Roman">TLitC</font><font face=宋体>操纵的直接量，它严格来说还算不上是个描述符。我至今也还没有提到</font><font face="Times New Roman">Unicode</font><font face=宋体>，虽然它显然很受注意。这些类可以使你精确的使用最少量的内存来存储不同类型的串，同时还允许它们</font><font face="Times New Roman">&#8220;</font><font face=宋体>干净</font><font face="Times New Roman">&#8221;</font><font face=宋体>的互相操作。但是每次都要考虑到底使用哪一个实在不是一件有趣的事情，这种情况是无法避免的，因为不同的</font><font face="Times New Roman">API</font><font face=宋体>有不同的参数或返回值。</font></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></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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'">CODE:</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'">_LIT(KBoilerplate,&nbsp;"Hello&nbsp;there,&nbsp;%S");</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'">TPtrC&nbsp;name&nbsp;=&nbsp;GetPointerIntoNameDes&nbsp;criptorWithoutAllocatingAnyMemory();</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'">TPtr&nbsp;finishedProduct&nbsp;=&nbsp;HBufC::NewLC(KBoilerplate().Length()&nbsp;+&nbsp;name.Length())-&gt;Des();</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'">finishedProduct.Format(KBoilerplate(),&nbsp;&amp;name);</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=宋体>这段代码还缺少了一行，在下文会添加并讨论。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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">MFC</font><font face=宋体>串或是</font><font face="Times New Roman">Java</font><font face=宋体>串</font><font face="Times New Roman">——</font><font face=宋体>完全动态的串。</font><font face="Times New Roman">Java</font><font face=宋体>中对于</font><font face="Times New Roman">String</font><font face=宋体>和</font><font face="Times New Roman">StringBuffer</font><font face=宋体>的划分对我们在此讨论的问题几乎没有任何价值。</font><font face="Times New Roman">Symbian</font><font face=宋体>所做的值得赞扬的事就是他们把这些的文档做得很好。但是你真正需要的文档却不会频繁去读它。</font><font face="Times New Roman">Symbian</font><font face=宋体>在开发时考虑的是那些资源有限的机器，不可否认对于某些应用方面和平台来说这是必不可少的。但是就目前来说，一个</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统的</font><font face="Times New Roman">C++</font><font face=宋体>程序员会感觉像那些早期的</font><font face="Times New Roman">IBM&nbsp;PC</font><font face=宋体>程序员，他们在对付的是</font><font face="Times New Roman">Intel</font><font face=宋体>的分段结构，然而</font><font face="Times New Roman">68000</font><font face=宋体>芯片又大又单一的寻址空间使得苹果看起来是个更酷的选择。</font></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0></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'">Symbian<font face=宋体>操作系统的错误处理框架，主要是清洁栈，是个</font><font face="Times New Roman">Windows</font><font face=宋体>程序员不太熟悉的元素。就像描述符一样，它很优雅，</font><font face="Times New Roman">Symbian</font><font face=宋体>宣布它比</font><font face="Times New Roman">C++</font><font face=宋体>语言的异常处理机制有效得多。在一篇叫做《</font><font face="Times New Roman">Symbian</font><font face=宋体>操作系统编程术语》的文章里对此进行了很好的讨论，可以从</font><font face="Times New Roman">http://www.symbian.com</font></span></p>
<br><br><br><br>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">CTIC.<font face=宋体>川科创新</font></span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">&nbsp;</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">3G<font face=宋体>嵌入式技术教育专家</font><font face="Times New Roman">(</font></span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,102,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">学<font face="Times New Roman">3G</font><font face=宋体>送手机</font></span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">)</span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><a href="http://www.ctic.cc/ke/jiuyeban.shtml"><span style="FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>3G<font face=宋体>手机软件工程师</font></span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>培训</span><span style="FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>班</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>送3G<font face=宋体>手机&nbsp;</font></span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>一部</span></a></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><a href="http://www.ctic.cc/"><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; TEXT-DECORATION: none; mso-spacerun: 'yes'" class=15>www.ctic.cc</span></a></span></p>
</div>
<!--endfragment--></div>
<img src ="http://www.cnitblog.com/maolxu/aggbug/64426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-03-01 08:58 <a href="http://www.cnitblog.com/maolxu/archive/2010/03/01/64426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian C++游戏编程 （上）</title><link>http://www.cnitblog.com/maolxu/archive/2010/02/25/64409.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Thu, 25 Feb 2010 13:51:00 GMT</pubDate><guid>http://www.cnitblog.com/maolxu/archive/2010/02/25/64409.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp;介绍1.1&nbsp;S60平台的游戏编程随着S60设备硬件的提高，在其上运行高质量的有些成为了可能。当然也同时存在一些挑战的地方就是游戏需要适应许多不同屏幕的能力。另外还有一些其他的限制如下：-&nbsp;被来电或是短信中断-&nbsp;限制电池的使用，要处理突然断电的情况-&nbsp;内存大小受限-&nbsp;显示屏幕和键盘大小的限制-&nbsp;相对于PC而言有限的CPU处理...&nbsp;&nbsp;<a href='http://www.cnitblog.com/maolxu/archive/2010/02/25/64409.html'>阅读全文</a><img src ="http://www.cnitblog.com/maolxu/aggbug/64409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/maolxu/" target="_blank">Learn</a> 2010-02-25 21:51 <a href="http://www.cnitblog.com/maolxu/archive/2010/02/25/64409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>