Win 程序员如何过度到Symbian程序员?

http://tech.ddvip.com   2008年06月15日    社区交流

内容摘要:本文讨论了当一个典型的Windows C++程序员初次接触Symbian操作系统时可能遇到的问题。我们开发过三个成功版本Symbian操作系统的经验使我们十分清楚在这个不算丰富稳定的环境中工作什么才是困难的。

  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(&paraFormat, paraFormatMask,0, iDisplay->TextLength());paraFormatMask.ClearAll();paraFormatMask.SetAttrib(EAttLineSpacing);paraFormatMask.SetAttrib(EAttLineSpacingControl);paraFormat.iLineSpacingControl = CParaFormat::ELineSpacingExactlyInTwips;CGraphicsDevice* screenDevice = iEikonEnv->ScreenDevice();TInt paraDelta;……

责编:豆豆技术应用

正在加载评论...