WEB开发网
开发学院手机开发Symbian 开发 Symbian OS 控件开发之 CCoeControl 阅读

Symbian OS 控件开发之 CCoeControl

 2010-03-07 19:41:00 来源:WEB开发网   
核心提示:CCoeControl是所有控件的基类,它封装了一个控件的基本属性和功能,Symbian OS 控件开发之 CCoeControl,编写简单控件涉及到的函数主要有以下三类:初始化、绘图及用户输入处理,下面是一个简单控件的声明, CONE为每个GUI应用程序提供一个CWindowGc实例作为控件的缺省图形上下文,它由CC

CCoeControl是所有控件的基类,它封装了一个控件的基本属性和功能。编写简单控件涉及到的函数主要有以下三类:初始化、绘图及用户输入处理。下面是一个简单控件的声明。

class CSimpleControl : public CCoeControl

{

public:

void ConstuctL(const TRect& aRect);

~CSimpleControl();

private:

void Draw(const TRect& aRect) const;

TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);

};

初始化:控件的初始化包括三个主要内容:创建控件窗口,设置控件大小及激活控件。控件的默认大小为0 x 0,因此必须设置大小,否则将不可见。因此这三个步骤必不可少。初始化一般在第二阶段构造函数ConstructL()完成。

void CSimpleControl::ContructL(const TRect& aRect)

{

CreateWindowL();

SetRect(aRect);

ActivateL();

}

绘图:直接决定控件外观的函数是Draw()函数。

void CSimpleControl::Draw(const TRect& aRect) const

{

CWindowGc& gc = SystemGc();

gc.SetPenStyle(CGraphicsContext::ENullPen);

gc.SetPenColor(KRgbRed);

gc.SetBrushColor(KRgbDarkBlue);

gc.SetBrushStyle(CGraphicsContext::ESolidBrush);

gc.DrawRect(aRect);

}

在这段代码中,首先调用SystemGc()获取图形上下文,SystemGc()是CCoeControl的一个成员函数;然后设置相应的图形上下文项;最后调用绘图函数DrawRect()画一个矩形。

所有的绘图都是通过图形上下文(graphics context,GC)来完成的。在Symbian OS中,定义了一个抽象类CGraphicsContext来统一图形上下文的接口,为设备无关的绘图提供了丰富的API。派生类CWindowGc和CFbsBitGc则具体实现了这些API。我们可以直接使用CFbsBitGc来绘图,但不推荐使用这种方式。在实际编程时,应用程序应该使用CWindowGc通过窗口服务器来进行绘图。CWindowGc的绘图请求在窗口服务器的客户端缓冲区上进行缓存,这样可以一次性向窗口服务器提交多个绘图请求以提高绘图效率。 CONE为每个GUI应用程序提供一个CWindowGc实例作为控件的缺省图形上下文,它由CConEnv创建,并且可以使用CCoeControl::SystemGc()来进行访问。

1 2 3 4  下一页

Tags:Symbian OS 控件

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