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

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

 2010-05-31 20:07:00 来源:WEB开发网   
核心提示:SetContainerWindowL(*this);,表示将这两个控件显示在那个窗口上,基于控件的传统symbian OS架构之调试小结(3),而参数表示的是容器Container,而不是一个 Rwindow,然后在子控件中就可以访问父控件或其他子控件,父控件中也可以访问子控件,这实际上是调用的是CcoeContro
SetContainerWindowL(*this);,表示将这两个控件显示在那个窗口上,而参数表示的是容器Container,而不是一个 Rwindow,这实际上是调用的是CcoeControl中的方法:

通过看这个函数原型就知道了没有必要非要传递一个Rwindow实例,我们也可以传递一个拥有窗口的容器,而在这里容器Container就是一个拥有窗口的CCoeControl实例,因为我们调用了方法CreateWindowL();

然后设置我们创建的窗口的显示范围SetRect(aRect);,一般是全屏,当然我们也可以设置一个TRect实例,比如:TRect(TPoint(0,0),TSize(100,100)),但是这种情况下,就会看到,我们程序的窗口没有占满整个屏幕,也就是说,仅有TRect(TPoint(0,0),TSize(100,100))的区域来显示我们的程序,而屏幕上剩余的范围还会显示原来的,这样子就比较奇怪,比较难看了。

最后激活窗口ActivateL();也就是说调用容器的Draw()、SizeChanged()等函数,从而开始绘制窗口。

最后就是容器Container类的析构函数:

CHelloWorldBasicAppView::~CHelloWorldBasicAppView( )

{

if(iLabel)

{

delete iLabel;

iLabel=NULL;

}

if(iToDoLabel)

{

delete iToDoLabel;

iToDoLabel=NULL;

}

}

这个析构函数的主要作用是销毁我们容器中创建的两个Label实例iLabel和iToDoLabel。

(2)看UI的内容

其实主要就是UI的ConstructL()方法和析构函数,之所以有析构函数,因为实际上UI也是一个C类。

void CHelloWorldBasicAppUi::ConstructL()

{

BaseConstructL();

iAppView = CHelloWorldBasicAppView::NewL(ClientRect());

iAppView->SetMopParent( this );

AddToStackL(iAppView);

}

首先创建UI的框架即调用方法BaseConstructL();,然后创建容器Container实例,实际上就是这里的iAppView。

接下来的的SetMopParent( this );和AddToStackL(iAppView);在本例中并不是必须的:

SetMopParent( this );是为了设置父控件用的。据网友pan讲:通过这个方法可以设置控件之间的父子关系,然后在子控件中就可以访问父控件或其他子控件,父控件中也可以访问子控件。需要注意的就是要讲这个方法和SetContainerWindowL()区分开。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:基于 控件 传统

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