﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Learn 3G-随笔分类-Symbian</title><link>http://www.cppblog.com/maolxu/category/13131.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 17 Apr 2010 12:18:10 GMT</lastBuildDate><pubDate>Sat, 17 Apr 2010 12:18:10 GMT</pubDate><ttl>60</ttl><item><title>Symbian平台智能手机突破一亿</title><link>http://www.cppblog.com/maolxu/archive/2010/04/15/112654.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Thu, 15 Apr 2010 05:14:00 GMT</pubDate><guid>http://www.cppblog.com/maolxu/archive/2010/04/15/112654.html</guid><wfw:comment>http://www.cppblog.com/maolxu/comments/112654.html</wfw:comment><comments>http://www.cppblog.com/maolxu/archive/2010/04/15/112654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maolxu/comments/commentRss/112654.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maolxu/services/trackbacks/112654.html</trackback:ping><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=#0000ff>Symbian</font></u></a>公司周四宣布，全球使用其操作系统的智能手机已经突破1亿大关，目前全球有250多个网络运营商的客户采用了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统手机。</font></p>
<p><font face=Arial>　　近几个月来智能手机的增长浪潮推动了<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统手机的增长。第三季度共销出了1300万部<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>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=#0000ff>Symbian</font></u></a>手机的功能改进和较低的格，全球<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>操作系统手机的出货数量创下新高。</font></p>
<p><font face=Arial>　　<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>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=#0000ff>Symbian</font></u></a>公司发言人称：最近几个月来，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>Symbian</font></u></a>手机在美国市场获得高速增长。特别是近几周来，由于Cingular无线公司向用户推荐诺基亚E62手机，<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>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=#0000ff>Symbian</font></u></a>公司最大股东、其他股东有爱立信公司、索尼爱立信公司、松下移动通讯公司、西门子公司和三星电子公司，它们分别拥有较小的股权。其他手机制造商则需要<a title=Symbian手机应用开发工程师培训班 href="http://www.chinaeda.com/ke/mob.shtml"><u><font color=#0000ff>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.cppblog.com/maolxu/aggbug/112654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maolxu/" target="_blank">Learn</a> 2010-04-15 13:14 <a href="http://www.cppblog.com/maolxu/archive/2010/04/15/112654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian与uiq开发教程</title><link>http://www.cppblog.com/maolxu/archive/2010/03/26/110587.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 26 Mar 2010 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/maolxu/archive/2010/03/26/110587.html</guid><wfw:comment>http://www.cppblog.com/maolxu/comments/110587.html</wfw:comment><comments>http://www.cppblog.com/maolxu/archive/2010/03/26/110587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maolxu/comments/commentRss/110587.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maolxu/services/trackbacks/110587.html</trackback:ping><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.cppblog.com/maolxu/archive/2010/03/26/110587.html'>阅读全文</a><img src ="http://www.cppblog.com/maolxu/aggbug/110587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maolxu/" target="_blank">Learn</a> 2010-03-26 13:57 <a href="http://www.cppblog.com/maolxu/archive/2010/03/26/110587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian游戏编程入门 (二)</title><link>http://www.cppblog.com/maolxu/archive/2010/03/19/110119.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Fri, 19 Mar 2010 09:54:00 GMT</pubDate><guid>http://www.cppblog.com/maolxu/archive/2010/03/19/110119.html</guid><wfw:comment>http://www.cppblog.com/maolxu/comments/110119.html</wfw:comment><comments>http://www.cppblog.com/maolxu/archive/2010/03/19/110119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maolxu/comments/commentRss/110119.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maolxu/services/trackbacks/110119.html</trackback:ping><description><![CDATA[<span  style="font-family: 宋体; 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>
<img src ="http://www.cppblog.com/maolxu/aggbug/110119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maolxu/" target="_blank">Learn</a> 2010-03-19 17:54 <a href="http://www.cppblog.com/maolxu/archive/2010/03/19/110119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从C++过渡到SYMBIAN C++？</title><link>http://www.cppblog.com/maolxu/archive/2010/03/01/108639.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Mon, 01 Mar 2010 00:58:00 GMT</pubDate><guid>http://www.cppblog.com/maolxu/archive/2010/03/01/108639.html</guid><wfw:comment>http://www.cppblog.com/maolxu/comments/108639.html</wfw:comment><comments>http://www.cppblog.com/maolxu/archive/2010/03/01/108639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maolxu/comments/commentRss/108639.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maolxu/services/trackbacks/108639.html</trackback:ping><description><![CDATA[<div id=PublishedByWebStory-[5]1_2238D08B01C84DC29467584FC0AEBEBE_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<br><br><br><br><br></p>
<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.川科创新</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嵌入式技术教育专家</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">(</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,102,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">学</span><span style="FONT-FAMILY: 'Times New Roman'; COLOR: rgb(255,102,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">3G</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,102,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">送手机</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">)</span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><a href="http://www.ctic.cc/ke/jiuyeban.shtml"><u><span style="FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3G</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">手机软件工程师培训</span><span style="FONT-FAMILY: 'Times New Roman'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">班</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">&nbsp;现热招中&nbsp;报名即&nbsp;</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(255,0,0); FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">送3G手机&nbsp;</span><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">一部</span></u></a></span><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><a href="http://www.ctic.cc/"><span style="FONT-FAMILY: '宋体'; COLOR: rgb(31,58,135); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><u>www.ctic.cc</u></span></a></span></p>
<!--endfragment--></font></span></div>
<!--endfragment--></div>
<img src ="http://www.cppblog.com/maolxu/aggbug/108639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maolxu/" target="_blank">Learn</a> 2010-03-01 08:58 <a href="http://www.cppblog.com/maolxu/archive/2010/03/01/108639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian(俄罗斯方块)</title><link>http://www.cppblog.com/maolxu/archive/2010/02/25/108390.html</link><dc:creator>Learn</dc:creator><author>Learn</author><pubDate>Thu, 25 Feb 2010 01:26:00 GMT</pubDate><guid>http://www.cppblog.com/maolxu/archive/2010/02/25/108390.html</guid><wfw:comment>http://www.cppblog.com/maolxu/comments/108390.html</wfw:comment><comments>http://www.cppblog.com/maolxu/archive/2010/02/25/108390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maolxu/comments/commentRss/108390.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maolxu/services/trackbacks/108390.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">第一个程序是series60 SDK自带的hello world程序，在group目录下将有下面的工程文件，bld.inf、s60test.mmp、及由bldmake生成的abld.bat文件，有关编译的命令可以查看相关资料。</p>
<p style="TEXT-INDENT: 2em">第一个程序是series60 SDK自带的hello world程序，在group目录下将有下面的工程文件，bld.inf、s60test.mmp、及由bldmake生成的abld.bat文件，有关编译的命令可以查看相关资料。</p>
<p style="TEXT-INDENT: 2em">Groupstep1.rss是资源文件，在我们的例子中包含软键盘的定义（R_AVKON_SOFTKEYS_OPTIONS_EXIT-右边的选择键及左边的退出键）和选择菜单，还可以在后面加更多的资源.</p>
<p style="TEXT-INDENT: 2em">Groupstep1.pkg描述如何去创建*.sis文件，*.sis是可以安装在手机中的文件。</p>
<p style="TEXT-INDENT: 2em">inc和src包含程序的源代码，hello world在SDK中有详细的描述，我在这里主要讲一些主要的。</p>
<p style="TEXT-INDENT: 2em">不像windows和UNIX程序，symbian程序没有带main()函数，可以像动态链接被系统装载，像其他每个动态链接它有e32dll函数，但是必须被迅速归还。</p>
<p style="TEXT-INDENT: 2em">GLDEF_C TInt E32Dll(TDllReason /*aReason*/)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">return KErrNone;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">系统调用newapplication()函数得到新的CApaapplication对象，</p>
<p style="TEXT-INDENT: 2em">EXPORT_C CApaApplication* NewApplication()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">return (new CS60TestApplication);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">在avkon(for series60)中返回一个CAknapplication子类的对象，在这个例子中是在s60testapplication.cpp实现的CS60testapplication，在每次执行中下面两个函数必须重载，第一个，在AppDllUid将返回该程序唯一的UID,我们例子中的UID不会出现在实际发布的程序中.</p>
<p style="TEXT-INDENT: 2em">第二个函数是创建CApaDocument类对象的CreateDocumentL函数，</p>
<p style="TEXT-INDENT: 2em">CApaDocument* CS60TestApplication::CreateDocumentL()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">CApaDocument* document = CS60TestDocument::NewL(*this);</p>
<p style="TEXT-INDENT: 2em">return document;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">TUid CS60TestApplication::AppDllUid() const</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">return KUidS60TestApp;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">在我们的例子中是CAknDocument的继承类CS60TestDocument</p>
<p style="TEXT-INDENT: 2em">class CS60TestDocument : public CAknDocument</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">public:</p>
<p style="TEXT-INDENT: 2em">static CS60TestDocument* NewL(CEikApplication&amp; aApp);</p>
<p style="TEXT-INDENT: 2em">static CS60TestDocument* NewLC(CEikApplication&amp; aApp);</p>
<p style="TEXT-INDENT: 2em">~CS60TestDocument();</p>
<p style="TEXT-INDENT: 2em">CS60TestAppUi *iAppUi;</p>
<p style="TEXT-INDENT: 2em">public: // from CAknDocument</p>
<p style="TEXT-INDENT: 2em">CEikAppUi* CreateAppUiL();</p>
<p style="TEXT-INDENT: 2em">private:</p>
<p style="TEXT-INDENT: 2em">void ConstructL();</p>
<p style="TEXT-INDENT: 2em">CS60TestDocument(CEikApplication&amp; aApp);</p>
<p style="TEXT-INDENT: 2em">};要重载CreateAppUil，此函数是用来建立用户接口响应对象的,</p>
<p style="TEXT-INDENT: 2em">CEikAppUi *CS60TestDocument::CreateAppUiL()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iAppUi=new(ELeave) CS60TestAppUi(this);</p>
<p style="TEXT-INDENT: 2em">return iAppUi;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">在我们的例子中这是由类CS60TestAppUi实现的，在该类中ConstructL函数首先调用BaseConstructL函数进行初始化，从资源中装载软键盘和菜单定义，</p>
<p style="TEXT-INDENT: 2em">void CS60TestAppUi::ConstructL()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">BaseConstructL();</p>
<p style="TEXT-INDENT: 2em">iAppView=CS60TestAppView::NewL(ClientRect(), iDoc);</p>
<p style="TEXT-INDENT: 2em">AddToStackL(iAppView);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">接下来我们将创建类CS60TestAppView的对象，这个类是CCoeControl的继承类，</p>
<p style="TEXT-INDENT: 2em">class CS60TestAppView : public CCoeControl</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">..........</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">CCoeControl对象将控制哪个在屏幕中描绘，我们的ClientRect()控制将填充状态栏与软键盘间的空间，把它改成ApplicationRect()将控制全屏，AddToStackL接受来自键盘的反应，AppUi对象同样接受来自菜单的反应，当用户选择了菜单命令HandleCommandL将调用相应的命令代码，将完成结束命令和"Hello"命令显示一段文本。</p>
<p style="TEXT-INDENT: 2em">void CS60TestAppUi::HandleCommandL(TInt aCommand)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">switch(aCommand)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">case EEikCmdExit:</p>
<p style="TEXT-INDENT: 2em">case EAknSoftkeyExit:</p>
<p style="TEXT-INDENT: 2em">Exit();</p>
<p style="TEXT-INDENT: 2em">break;</p>
<p style="TEXT-INDENT: 2em">case ES60TestHell</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">_LIT(message, "Hello!");</p>
<p style="TEXT-INDENT: 2em">CAknInformationNote *informationNote=new(ELeave) CAknInformationNote;</p>
<p style="TEXT-INDENT: 2em">informationNote-&gt;ExecuteLD(message);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">break;</p>
<p style="TEXT-INDENT: 2em">default:</p>
<p style="TEXT-INDENT: 2em">Panic(ES60TestBasicUi);</p>
<p style="TEXT-INDENT: 2em">break;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">Draw函数是我们在CS60TestAppView唯一重载的函数，它将当我们的视图需重画时被调用，在本例中我们将显示在（176*144）的区域中，定义字符串将用到TBuf类。</p>
<p style="TEXT-INDENT: 2em">在这一步中我将加入游戏需要的数据结构。</p>
<p style="TEXT-INDENT: 2em">这里我们又加入了两个类TBlock和TGrid,这两个类没有特定的数据类型，它们是T型类，TBlock指向一个单个的俄罗斯方块（由四个小方块组成），TGrid指向已由(20*10)小方块填充的格子。在document类中，iGrid包含当前面板，iCurrBlock包含正在下落的方块，iBlockPos是正在下落方块的位置。</p>
<p style="TEXT-INDENT: 2em">本例加的主要是比特的位操作，symbian OS特殊之处是用了TFixedArray类，它象普通的类被利用，但是内部会有下标检查，当在TFixedArray中下标是20时不会有内存溢出而是抛出错误。</p>
<p style="TEXT-INDENT: 2em">第三步：加入用户接口</p>
<p style="TEXT-INDENT: 2em">这一步我们将加入用户接口来测试第二步中加入的数据结构，我们可以用方向键移动方块到想要的位置然后用OK来固定方块（因为刚开始方块在顶部，先按向下的方向键，才能看到方块），玩家可以旋转方块。</p>
<p style="TEXT-INDENT: 2em">首先用CS60TestAppView::Draw函数画背板，</p>
<p style="TEXT-INDENT: 2em">void CS60TestAppView::Draw(const TRect&amp; /*aRect*/) const</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">CWindowGc &amp;gc=SystemGc();</p>
<p style="TEXT-INDENT: 2em">TRect rect=Rect();</p>
<p style="TEXT-INDENT: 2em">gc.Clear(rect);</p>
<p style="TEXT-INDENT: 2em">int i, j;</p>
<p style="TEXT-INDENT: 2em">TFixedArray&lt;TInt8, KGridX&gt; arr;</p>
<p style="TEXT-INDENT: 2em">gc.SetPenColor(TRgb(0));</p>
<p style="TEXT-INDENT: 2em">gc.SetBrushStyle(CWindowGc::ESolidBrush);</p>
<p style="TEXT-INDENT: 2em">for (i=0; i&lt;=KGridY; i++)</p>
<p style="TEXT-INDENT: 2em">gc.DrawLine(TPoint(KBoardOffset, KBoardOffset+KCellSize*i),</p>
<p style="TEXT-INDENT: 2em">TPoint(KBoardOffset+KGridX*KCellSize, KBoardOffset+KCellSize*i));</p>
<p style="TEXT-INDENT: 2em">for (i=0; i&lt;=KGridX; i++)</p>
<p style="TEXT-INDENT: 2em">gc.DrawLine(TPoint(KBoardOffset+KCellSize*i, KBoardOffset),</p>
<p style="TEXT-INDENT: 2em">TPoint(KBoardOffset+KCellSize*i, KBoardOffset+KGridY*KCellSize));</p>
<p style="TEXT-INDENT: 2em">for (i=0; i&lt;KGridY; i++)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;GetRowContent(i, arr);</p>
<p style="TEXT-INDENT: 2em">for (j=0; j&lt;KGridX; j++)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">gc.SetBrushColor(KColors[arr[j]]);</p>
<p style="TEXT-INDENT: 2em">if (arr[j])</p>
<p style="TEXT-INDENT: 2em">gc.DrawRect(TRect(KBoardOffset+KCellSize*j, KBoardOffset+KCellSize*i,</p>
<p style="TEXT-INDENT: 2em">KBoardOffset+KCellSize*(j+1)+1, KBoardOffset+KCellSize*(i+1)+1));</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">我们用TGrid获得方块类型，用DrawLine和DrawRect来画背板，用SetPenColor来控制边框和线条的颜色，用SetBrushStyle/SetBrushColor来控制背板小方块的颜色，所以CWindowGc的方法可以查看SDK帮助文件。</p>
<p style="TEXT-INDENT: 2em">我们需要对每个按键起作用，每次按键产生一个事件，该事件首先送给CS60TestAppView处理,将压到AddStackL栈顶部，缺省执行是返回EKeyWasNoConsumed,接下来此事件将送给CS60TestAppUi处理，在这个类中将用HandlKeyEventL来处理对应的按键.</p>
<p style="TEXT-INDENT: 2em">KeyResponse CS60TestAppUi::HandleKeyEventL(const TKeyEvent &amp;aKeyEvent,</p>
<p style="TEXT-INDENT: 2em">TEventCode aType)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (aType==EEventKey)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode==EKeyUpArrow)</p>
<p style="TEXT-INDENT: 2em">if (iDoc-&gt;iBlockPos.iY&gt;0)</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;MoveBlock(iDoc-&gt;iBlockPos-TPoint(0, 1));</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode==EKeyDownArrow)</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;MoveBlock(iDoc-&gt;iBlockPos+TPoint(0, 1));</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode==EKeyLeftArrow)</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;MoveBlock(iDoc-&gt;iBlockPos-TPoint(1, 0));</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode==EKeyRightArrow)</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;MoveBlock(iDoc-&gt;iBlockPos+TPoint(1, 0));</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode==EKeyDevice3)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (iDoc-&gt;FixBlock())</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;NewBlock();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode=='1')</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;RotateBlock(-1);</p>
<p style="TEXT-INDENT: 2em">if (aKeyEvent.iCode=='0' || aKeyEvent.iCode=='3')</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;RotateBlock(1);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">return EKeyWasNotConsumed;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">但方格有变化时，我们将重画屏幕，CS60TestAppUi::UpdateBroad里的DrawDeferred来刷新整个屏幕。</p>
<p style="TEXT-INDENT: 2em">好的设计是对每个按键都用EKeyWasConsumed来响应，我们会用EKeyWasNotConsumed来处理一些无用的按键。</p>
<p style="TEXT-INDENT: 2em">最后在菜单里假如"new game"选项.</p>
<p style="TEXT-INDENT: 2em">MENU_ITEM {command = ES60TestNewGame; txt = "New Game";}</p>
<p style="TEXT-INDENT: 2em">当前游戏还不是一个有趣的游戏，用户可以移动方块到他想要的地方，这样就很无聊，这一步我们将加入游戏引擎，它将使方块自由下落。</p>
<p style="TEXT-INDENT: 2em">这个引擎类是CTimer类的继承类CS60TestEngine,我将用After(iInterval)将引擎挂起一段时间，至少要隔iInterval微秒后，再运行CS60TestEngine::RunL,如果用一个循环延迟时间来取代CTimer,这样将要中断主线程，不能接收按键事件和显示菜单。</p>
<p style="TEXT-INDENT: 2em">CTimer是一个需激活对象，我们用CActiveScheduler::Add(this)将它加入时间表队列。</p>
<p style="TEXT-INDENT: 2em">void CS60TestEngine::ConstructL()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">CTimer::ConstructL();</p>
<p style="TEXT-INDENT: 2em">CActiveScheduler::Add(this);</p>
<p style="TEXT-INDENT: 2em">After(iInterval);</p>
<p style="TEXT-INDENT: 2em">iState=ERunning;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">但用户重新玩游戏，将先用Cancel()来结束，在隔一定时间后重新开始.</p>
<p style="TEXT-INDENT: 2em">void CS60TestEngine::Reset()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (iState==ERunning)</p>
<p style="TEXT-INDENT: 2em">Cancel();</p>
<p style="TEXT-INDENT: 2em">iState=ERunning;</p>
<p style="TEXT-INDENT: 2em">After(iInterval);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">在RunL里，方块延一条线下坠，但它不能再下坠时我们将固定此方块，再产生新的方块，</p>
<p style="TEXT-INDENT: 2em">void CS60TestEngine::RunL()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (!iDoc-&gt;MoveBlock(iDoc-&gt;iBlockPos+TPoint(0, 1)))</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (!iDoc-&gt;FixBlock())</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">// Game over</p>
<p style="TEXT-INDENT: 2em">TBuf&lt;64&gt; message;</p>
<p style="TEXT-INDENT: 2em">CEikonEnv::Static()-&gt;ReadResource(message, R_NOTE_GAME_OVER);</p>
<p style="TEXT-INDENT: 2em">CAknInformationNote *informationNote=new(ELeave) CAknInformationNote;</p>
<p style="TEXT-INDENT: 2em">informationNote-&gt;ExecuteLD(message);</p>
<p style="TEXT-INDENT: 2em">iState=EGameOver;</p>
<p style="TEXT-INDENT: 2em">return;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;CheckRows();</p>
<p style="TEXT-INDENT: 2em">if (iDoc-&gt;iLevel&lt;=(iDoc-&gt;iLines/10))</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iInterval*=3;</p>
<p style="TEXT-INDENT: 2em">iInterval/=4;</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;iLevel++;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">iDoc-&gt;NewBlock();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">iBeginTime.HomeTime();</p>
<p style="TEXT-INDENT: 2em">After(iInterval);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">但不能再放方块时，我们将结束游戏，并显示一段文字</p>
<p style="TEXT-INDENT: 2em">CEikonEnv::Static()-&gt;ReadResource(message, R_NOTE_GAME_OVER)</p>
<p style="TEXT-INDENT: 2em">结束游戏引擎</p>
<p style="TEXT-INDENT: 2em">iState=EGameOver。</p>
<p style="TEXT-INDENT: 2em">我们将在资源文件中加载"game over",这样我们只要翻译资源文件就可将游戏翻译成不同的语言，s60test.rss在加入TBUF型字符串</p>
<p style="TEXT-INDENT: 2em">RESOURCE TBUF32 r_note_game_over</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">buf = "Game Over";</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">Build 将其建成s60test..rsg文件，在这个文件中R_NOTE_GAME_OVER定义成ID,通过</p>
<p style="TEXT-INDENT: 2em">CEikonEnv::Static()-&gt;ReadResource(message, R_NOTE_GAME_OVER)</p>
<p style="TEXT-INDENT: 2em">来加载"game over"</p>
<p style="TEXT-INDENT: 2em">第五步</p>
<p style="TEXT-INDENT: 2em">我们已经基本完成游戏，但是在几个方面还要改进。</p>
<p style="TEXT-INDENT: 2em">第一个是用户打开其它程序或打开菜单，游戏仍在继续，当他回来继续玩的时候，游戏可能已经结束了，为避免这样因此我们应加入暂停的功能。</p>
<p style="TEXT-INDENT: 2em">暂停/停止暂停的功能用户将会在暂停的时候用到，这时将要修改选择的菜单，TechPause/TechUnPause将会被用户切换到其他程序或菜单（不改变菜单选项）时调用，</p>
<p style="TEXT-INDENT: 2em">void TechPause() { iTechPauseRef++; DoPause(); }</p>
<p style="TEXT-INDENT: 2em">void TechUnpause() { iTechPauseRef--; DoPause(); }</p>
<p style="TEXT-INDENT: 2em">这两个都参考了计数器，调用两次TechPause,将调用两次TechUnPause来停止暂停游戏，这是以前老版本游戏的用法，本游戏不是这样的</p>
<p style="TEXT-INDENT: 2em">void CS60TestAppView::FocusChanged(TDrawNow aDrawNow)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (IsFocused())</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (!iFocus)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iFocus=true;</p>
<p style="TEXT-INDENT: 2em">iEngine-&gt;TechUnpause();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">} else</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (iFocus)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iFocus=false;</p>
<p style="TEXT-INDENT: 2em">iEngine-&gt;TechPause();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">如果在DoPause里进行暂停和停止暂停，在暂停是我们要计算暂停多长时间，并结束计数器，</p>
<p style="TEXT-INDENT: 2em">void CS60TestEngine::DoPause()</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">__ASSERT_ALWAYS(iPauseRef&gt;=0 &amp;&amp; iTechPauseRef&gt;=0, Panic(ES60TestAssert));</p>
<p style="TEXT-INDENT: 2em">if (iPauseRef==0 &amp;&amp; iTechPauseRef==0)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (iState==EPaused)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">int ms=iPauseTime.MicroSecondsFrom(iBeginTime).Int64().GetTInt();</p>
<p style="TEXT-INDENT: 2em">if (ms&lt;0 || ms&gt;iInterval)</p>
<p style="TEXT-INDENT: 2em">ms=0;</p>
<p style="TEXT-INDENT: 2em">iState=ERunning;</p>
<p style="TEXT-INDENT: 2em">After(iInterval-ms);</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">} else</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">if (iState==ERunning)</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">iState=EPaused;</p>
<p style="TEXT-INDENT: 2em">iPauseTime.HomeTime();</p>
<p style="TEXT-INDENT: 2em">Cancel();</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">在停止暂停时我们同样要一个计数器来计算剩余的时间。</p>
<p style="TEXT-INDENT: 2em">我们调用TechPause/TechUnPause CS60TestAppView::FocusChanged时是我们打开其他程序或菜单也就是我们的焦点不在此游戏上是，而Pause/UnPause CS60TestAppUi::HandleCommandL在菜单选项里选择的。</p>
<p style="TEXT-INDENT: 2em">当用户从菜单里选择"pause"后，我们应将菜单改成"unpause"转态，这是通过CS60TestAppUi::DynInitMenuPaneL来实现的，每次显示菜单是都会执行它。因此我们在资源文件中设定相对应的字符串。</p>
<p style="TEXT-INDENT: 2em">RESOURCE TBUF16 r_menu_pause_title</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">buf = "Pause";</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">RESOURCE TBUF16 r_menu_unpause_title</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">buf = "Unpause";</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">另外我们还在背景里加了一副图片，</p>
<p style="TEXT-INDENT: 2em">图片在symbian OS中被存为*.mbm文件，是从*.bmp文件在build过程时制作过来的，在mmp文件加入</p>
<p style="TEXT-INDENT: 2em">START BITMAP S60Test.mbm</p>
<p style="TEXT-INDENT: 2em">HEADER</p>
<p style="TEXT-INDENT: 2em">TARGETPATH systemappsstep5</p>
<p style="TEXT-INDENT: 2em">SOURCEPATH .. itmaps</p>
<p style="TEXT-INDENT: 2em">SOURCE c12 tlo.bmp</p>
<p style="TEXT-INDENT: 2em">END</p>
<p style="TEXT-INDENT: 2em">就可以了，一个*.mmp文件可以包含几个*.bmp文件</p>
<p style="TEXT-INDENT: 2em">在本例中s60test.mmp将包含一个bmp文件，图片前面的c12表示是12bit(4096色)来节省空间，你也可以用C16(65536色),build也可以创建另外一个文件s60test.mbg,它将包含所有*.mbm文件的ID,在我们的文件就一个，所以它的ID是EMbmS60testTLO,</p>
<p style="TEXT-INDENT: 2em">iBackground=CEikonEnv::Static()-&gt;CreateBitmapL(iPathName, EMbmS60testTlo);</p>
<p style="TEXT-INDENT: 2em">来装载背景图片，</p>
<p style="TEXT-INDENT: 2em">我们的游戏需要一个很好的图标和名字，这些都可以通过AIF文件实现,主要就是在资源文件S60testaif.rss中定义AIF_DA<wbr></wbr>TA数据,</p>
<p style="TEXT-INDENT: 2em">#include &lt;aiftool.rh&gt;</p>
<p style="TEXT-INDENT: 2em">RESOURCE AIF_DA<wbr></wbr>TA</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">app_uid=0x04545FF6;</p>
<p style="TEXT-INDENT: 2em">caption_list=</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">CAPTION</p>
<p style="TEXT-INDENT: 2em">{</p>
<p style="TEXT-INDENT: 2em">co<wbr></wbr>de = ELangEnglish;</p>
<p style="TEXT-INDENT: 2em">caption = "Tetris";</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">};</p>
<p style="TEXT-INDENT: 2em">num_icons=2;</p>
<p style="TEXT-INDENT: 2em">embeddability=KAppNotEmbeddable;</p>
<p style="TEXT-INDENT: 2em">newfile=KAppDoesNotSupportNewFile;</p>
<p style="TEXT-INDENT: 2em">}</p>
<p style="TEXT-INDENT: 2em">// End of File</p>
<p style="TEXT-INDENT: 2em">除了这个文件我们还需要四张图片，44*44bitmap,44*44bitmask,44*23bitmap,44*23bitmask,图片用不同的颜色，可以辨别什么时候用的什么图片，AIF文件需要在*.mmp文件里通过AIF命令引用</p>
<p style="TEXT-INDENT: 2em">AIF Step6.aif ..Aif S60TestAif.rss</p>
<p style="TEXT-INDENT: 2em">c12 Icon.bmp IconMask.bmp IconSmall.bmp IconSmallMask.bmp</p>
<p style="TEXT-INDENT: 2em"><br><br></p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em"></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span>CTIC.<font face=宋体>川科创新</font></span><span> </span><span>3G<font face=宋体>嵌入式技术教育专家</font><font face="Times New Roman">(</font></span><span>学<font face="Times New Roman">3G</font><font face=宋体>送手机</font></span><span>)</span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><a href="http://www.ctic.cc/ke/jiuyeban.shtml"><u><font color=#0066cc><span class=15>3G<font face=PMingLiU>手机软件工程师</font></span><span class=15>培训</span><span class=15>班</span><span class=15> 现热招中 报名即 </span><span class=15>送3G<font face=宋体>手机 </font></span><span class=15>一部</span></font></u></a></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span><font face="Times New Roman">400-702-8828&nbsp;&nbsp;</font></span><span><a href="http://www.ctic.cc/"><span class=15><u><font color=#0066cc>www.ctic.cc</font></u></span></a></span></p>
<img src ="http://www.cppblog.com/maolxu/aggbug/108390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maolxu/" target="_blank">Learn</a> 2010-02-25 09:26 <a href="http://www.cppblog.com/maolxu/archive/2010/02/25/108390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>