基于控件的传统symbian OS架构之调试小结
2010-05-31 20:07:00 来源:WEB开发网private:
CEikLabel* iLabel;
CEikLabel* iToDoLabel;
CHelloWorldBasicAppView2* iAppView2;//多了复合控件iAppView2这个私有成员变量。
因为iAppView的容器类多了一个新的子控件,即iAppView2,所以这个类的ConstructL()、SizeChanged()、 CountComponentControls()、ComponentControl()以及析构函数~ChelloWorldBasicAppView都需要修改,如下:
void CHelloWorldBasicAppView::ConstructL(const TRect& aRect)
{
// Create a window for this application view
CreateWindowL();//复合控件创建窗口
iLabel=new(ELeave) CEikLabel;
iLabel->SetContainerWindowL(*this);//将不拥有窗口的控件和窗口关联
iLabel->SetTextL(_L("iLabel"));
iLabel->SetUnderlining(ETrue);
iToDoLabel=new(ELeave) CEikLabel;
iToDoLabel->SetContainerWindowL(*this);
iToDoLabel->SetTextL(_L("iToDoLabel"));
//多了下面两行代码
iAppView2=CHelloWorldBasicAppView2::NewL(TRect(TPo int(0,100),TSize(200,200)));
iAppView2->SetContainerWindowL(*this);
// Set the windows size
SetRect(aRect);
// Activate the window, which makes it ready to be drawn
ActivateL();
}
????????????????????????????????????
void CHelloWorldBasicAppView::SizeChanged()
{
//设置控件的位置
iLabel->SetExtent( TPoint(10,10), iLabel->MinimumSize() );
iToDoLabel->SetExtent( TPoint(10,30), iToDoLabel->MinimumSize() );
//多了下面一行代码,TPoint(10,60)相对于窗口左上角
iAppView2->SetExtent( TPoint(10,60), iToDoLabel->MinimumSize() );
}
???????????????????????????????????????????
TInt CHelloWorldBasicAppView::CountComponentControls() const
{
return 3;
}
返回是3,不是4(虽然复合控件有两个子控件)。
更多精彩
赞助商链接