WEB开发网
开发学院手机开发Symbian 开发 基于控件的传统symbian OS架构之调试小结 阅读

基于控件的传统symbian OS架构之调试小结

 2010-05-31 20:07:00 来源:WEB开发网   
核心提示:之前写过一个关于symbian常用程序架构的帖子,不过当时是在简单的看了看书本的条件下写的,基于控件的传统symbian OS架构之调试小结,仅仅是当时做的一个笔记而已,并没有多少自己的感想体会在里面,否则容器中的两个Label控件不会显示,它们分别是:void Draw(const TRect& aRect) con

之前写过一个关于symbian常用程序架构的帖子,不过当时是在简单的看了看书本的条件下写的,仅仅是当时做的一个笔记而已,并没有多少自己的感想体会在里面。当然现在也不能就对传统的symbian os架构很了解了,因为毕竟没有做太多深入的研究试验,仅仅是根据自己的想法做了几个小程序而已。

从四个小程序上来分析:

一、在屏幕上显示两个Label

这是最最基本的了。

关键的就是创建一个容器Container(实际上就是一个拥有窗口的复合控件而已)和一个UI其中Container继承自控件基类 CCoeControl,而UI继承自CAknAppUi,这都是必须的。另外,如果Container里的控件,比如编辑框想接收用户事件的话,那么 Container同时还要继承?????????因为我的容器里面只有两个Label,所以也就不需要继承这个类了。

(1)先看容器类Container的内容:

因为容器Container里包含两个Label,一定要注意,将两个Label 的指针设为Container类的私有成员变量即:

private:

CEikLabel* iLabel;

CEikLabel* iToDoLabel;

当然这是在Container类的头文件里声明的。

然后就是看Container的四个方法,这四个都需要我们重写,否则容器中的两个Label控件不会显示。它们分别是:

void Draw(const TRect& aRect) const;

virtual CCoeControl* ComponentControl(TInt aIndex) const;

virtual TInt CountComponentControls() const;

void SizeChanged();

在本例中,我是这样重写这四个方法的:

CCoeControl* CHelloWorldBasicAppView::ComponentControl(TInt aIndex) const

{

switch(aIndex)

{

case 0:

return iLabel;

case 1:

return iToDoLabel;

default:

return NULL;

}

}

获取容器中每个控件的指针。

void CHelloWorldBasicAppView::SizeChanged()

{

//设置标签的位置

iLabel->SetExtent( TPoint(10,10), iLabel->MinimumSize() );

iToDoLabel->SetExtent( TPoint(10,100), iToDoLabel->MinimumSize() );

}

1 2 3 4 5 6  下一页

Tags:基于 控件 传统

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