WEB开发网
开发学院手机开发Symbian 开发 如何从 C++ 过渡到 SYMBIAN C++? 阅读

如何从 C++ 过渡到 SYMBIAN C++?

 2010-03-01 17:41:00 来源:WEB开发网   
核心提示:TViewYPosQualifier yPosQualifier;yPosQualifier.SetHotSpot(TViewYPosQualifier::EFViewBottomOfLine);yPosQualifier.SetMakeLineFullyVisible(TViewYPosQualifier::EFVi

TViewYPosQualifier yPosQualifier;

yPosQualifier.SetHotSpot(TViewYPosQualifier::EFViewBottomOfLine);

yPosQualifier.SetMakeLineFullyVisible(

TViewYPosQualifier::EFViewForceLineFullyVisible);

iDisplay->TextView()->SetViewL(

iDisplay->TextLength(),

yPos,

yPosQualifier,

CTextView::EFViewDiscardAllFormat);

谁会想得到呢?我们的一位同事就是不相信这是就此可行的惟一途径,但是他通过利用许多(各种各样的)存在于各个类之中的各种API,试用了各种不同的方法来证明了这一点。

我们正在描述的这种复杂性其实是因为Symbian操作系统提供的功能实在太丰富了,理解这一点很重要。一旦你了解了这个领域,你就会对Symbian操作系统的对象结构是如此明智感激不尽,然后很快你就会发现你能够预知你需要的函数藏在什么地方。如此重复,你会发现我们刚开始的困惑现在已经变成了一种审美享受。

4.串

Symbian中的串!毫无疑问Symbian中对串的实现是经过深思熟虑的,强壮的和经济的。同样无疑的是这代表着一种富贵病。串是通过Symbian称之为“描述符”的机制来实现的,跟以下几个类有关:TDesC、TBufCBase、TDes、TPtrC、TBufC、HBufC、TBuf和TPtr。这还不包括由TLitC操纵的直接量,它严格来说还算不上是个描述符。我至今也还没有提到Unicode,虽然它显然很受注意。这些类可以使你精确的使用最少量的内存来存储不同类型的串,同时还允许它们“干净”的互相操作。但是每次都要考虑到底使用哪一个实在不是一件有趣的事情,这种情况是无法避免的,因为不同的API有不同的参数或返回值。

这里有个小例子把一个名字转化为样本消息:

CODE:

_LIT(KBoilerplate, "Hello there, %S");

TPtrC name = GetPointerIntoNameDes criptorWithoutAllocatingAnyMemory();

TPtr finishedProduct = HBufC::NewLC(KBoilerplate().Length() + name.Length())->Des();

finishedProduct.Format(KBoilerplate(), &name);

// 这段代码还缺少了一行,在下文会添加并讨论。

根本没有哪个类提供类似于MFC串或是Java串——完全动态的串。Java中对于String和StringBuffer的划分对我们在此讨论的问题几乎没有任何价值。Symbian所做的值得赞扬的事就是他们把这些的文档做得很好。但是你真正需要的文档却不会频繁去读它。Symbian在开发时考虑的是那些资源有限的机器,不可否认对于某些应用方面和平台来说这是必不可少的。但是就目前来说,一个Symbian操作系统的C++程序员会感觉像那些早期的IBM PC程序员,他们在对付的是Intel的分段结构,然而68000芯片又大又单一的寻址空间使得苹果看起来是个更酷的选择。

5.清洁栈及错误处理

Symbian操作系统的错误处理框架,主要是清洁栈,是个Windows程序员不太熟悉的元素。就像描述符一样,它很优雅,Symbian宣布它比C++语言的异常处理机制有效得多。

上一页  1 2 3 4 

Tags:如何 过渡 SYMBIAN

编辑录入:coldstar [复制链接] [打 印]
赞助商链接