Windows C 程式员如何过度到Symbian C ?

2008-02-23 05:28:01来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  Symbian OS C for Windows C programmers
  Andy Weinstein, Degel Software Ltd
  Version 1.0, Oct 2002

  1.简介
  本文讨论了当一个典型的Windows C 程式员初次接触Symbian操作系统时可能碰到的问题。我们研发过三个成功版本Symbian操作系统的经验使我们十分清楚在这个不算丰富稳定的环境中工作什么才是困难的。Symbian成功的一个原因是许多手机生产商很不希望被绑在微软这条贼船上,另一个原因是Symbian整合了轻量级、一流的系统,同时又能够提供如此广泛的功能。这里的一些提示也许会对研发成功的Symbian操作系统应用程式有所帮助。

  2.文档和资源。
  对于一个普通的Windows程式员来说,他对Symbian操作系统首先注意到的方面就是相比起微软的高级精良装备来说,Symbian研发文档实在是太少了。虽然这种情况正在得到改善,某些API类仍然没有相关文档。比如CEikRichTextEditor这个类在文档中就没有单独条目。CRichText这个类包括了大多数相关功能,被收入了文档,但您可能并不知道何时第一次使用这种控制(参见我们下面关于对象结构的说明)。

  相对花费大量的人力物力去完善文档,更简便的方法基于这样一种事实:Symbian提供了大量的源代码(虽然还不是整个操作系统)和例程。程式员无需猜测许多API的行为——他们只要看看执行情况。要是这样还不够,Symbian对一些组件,例如Word,相同提供了源代码。API和例程相结合足以满足大多数程式员的需要。

  从6.0版开始,Symbian操作系统95%的源代码是对其白金合作伙伴项目(Platinum
Partner Program,http://www.symbian.com/partners/part-platnm.html)成员开放的。这个需要额外付费注册。这个项目的影响之一就是某些老版本研发包的完整源代码不再提供,取而代之的是Symbian或Nokia公司一边继续完善文档,一边提供不断扩充的例程。比如随Series 60提供的文档就有一个名为“如何操作rich text”的单独条目(虽然CEikRichTextEditor仍然没有条目)。
文档中更有许多其他有用的,写得很好的“How to”文章。在Series 60中,文档和例程的结合使用是显而易见的——文档中对每一个Avkon UI类都直接引用有例程。

  Windows程式员更有一个要习以为常的事情是缺乏有用的外部资源,虽然这种情况正在得到改善。《专业Symbian编程》(‘Professional Symbian Programming’ (PSP))包含了许多有用的信息,但是作为快速参考就不太合适,而且他成书于Symbian操作系统第5版的时候——新版将于2003年早些时候面世。PSP还不算过时,但情况有所改变,尤其是在UI层次上。有本书叫《Symbian设备无线Java》(‘Wireless Java for Symbian Devices’)也许更新一些,可对C 研发者没什么用处。更有《Symbian操作系统通讯编程》(‘Symbian OS Communications Programming’)和《Series 60及Symbian操作系统编程》(‘Programming for Series 60 and Symbian OS’)也已上架。更多细节能够在http://www.symbian.com/books/index.html找到。
  在线文档和Q-A资源确实有助于弥补空白。Symbian自己设立了“Symbian研发者网络”,这是个集论坛、FAQ、样例和其他有用信息于一身的网络资源。他的地址是http://www.symbian.com/developer。Nokia也有一个类似的项目叫做“Nokia论坛”,网址位于http://www.forum.nokia.com。到底该去哪里可并不一定,而且您贴出了问题也不一定就会有答案——这依赖于您其他的研发伙伴的和人为善。Symbian和Nokia的内部人员有时的确会出现在这里,但是假如您希望从知道答案的那个人口中得到确切答复,您需要付费注册。Symbian的付费注册地址在http://www.symbian.com/partners/part-servs.html的“Partner Programs”中,Nokia的则能够从Nokia论坛的“Developer Support, Technical Case Solving”中找到。但是还是先看看免费资源吧:这里有大量有用的最新信息和资源,包括定时的研发包升级。

  3.对象结构。
  Symbian操作系统有一个需要花费时间来熟悉的方面在于他很强大的对象结构。例如,一个列表框(list box)不是个对象——而是四个:列表框对象(list box object)、模型(model)、视图(view)和绘图器(drawer)。他们之间的功能划分是能够预期并且很符合逻辑的。

  编辑控制就复杂的多。乍一看上去,他似乎只有两个主要对象:UI控制和一个包含处理文本格式化的文本对象。但是对格式化的操作引入了对字符格式化和对段落格式化的更进一步的对象。这些,按照次序,使用了单独的mask对象来指示显示了您希望对任何给定调用定位的格式化的API调用。所以操作文本显示为黑体还是非黑体,同时还影响到行间距的代码就需要用到CEikRichTextEditor、CRichText、TCharFormat、TCharFormatMask、CParaFormat和CparaFormatMask这几个类。

这里有一段这样的代码:
TCharFormat defaultFormat;
TCharFormatMask formatMask;
formatMask.SetAttrib(EAttFontStrokeWeight);
CRichText* text = iDisplay->RichText();
text->Reset();
for (int i = 0; i < 10; i)
{
TPtrC boldText = getBoldPiece(i);
TPtrC plainText = getRomanPiece(i);
...
TInt insertPos = text->DocumentLength();
text->SetInsertCharFormatL(*iCharFormat, formatMask, insertPos);
text->InsertL(insertPos, boldText);
text->CancelInsertCharFormat();
insertPos = text->DocumentLength();
text->SetInsertCharFormatL(defaultFormat, formatMask, insertPos);
text->InsertL(insertPos, plainText);
text->CancelInsertCharFormat();
}
CParaFormat paraFormat;
TParaFormatMask paraFormatMask;
iDisplay->RichText()->GetParaFormatL(¶Format, paraFormatMask,
0, iDisplay->TextLength());
paraFormatMask.ClearAll();
paraFormatMask.SetAttrib(EAttLineSpacing);
paraFormatMask.SetAttrib(EAttLineSpacingControl);
paraFormat.iLineSpacingControl = CParaFormat::ELineSpacingExactlyInTwips;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 使用C 构建嵌入式研发框架

下一篇: 安森美推出时钟和数据管理IC