WEB开发网
开发学院手机开发Symbian 开发 解决 Symbian 开发全屏显示问题 阅读

解决 Symbian 开发全屏显示问题

 2010-02-25 04:37:00 来源:WEB开发网   
核心提示:其中iEikonEnv->AppUiFactory()是在Symbian中获取UI实例常用的方法,这和MFC是一样,你千万不能new一个CTestScreenAppUi出来,因为他们是由框架调用的,我们并不知道何时调用,但是因为他是在Container类里调用这两个方法,也就是说ClientRect()获取&qu

其中iEikonEnv->AppUiFactory()是在Symbian中获取UI实例常用的方法,这和MFC是一样,你千万不能new一个CTestScreenAppUi出来,因为他们是由框架调用的,我们并不知道何时调用。

但是因为他是在Container类里调用这两个方法,也就是说ClientRect()获取"矩形区域"之后程序才设置status pane、Cba为不可见!所以当然也没什么用,程序仍然无法全屏显示。

所以说即使你在UI类里写下面的代码,但因为代码是在获取"矩形区域"之后才设置status pane、Cba为不可见,程序仍然无法全屏显示!

void CTestScreenAppUi::ConstructL()

{

BaseConstructL();

iAppContainer = new (ELeave) CTestScreenContainer;

iAppContainer->SetMopParent( this );

iAppContainer->ConstructL( ClientRect() );

//在获取"矩形区域"后设置status pane、Cba为不见

CEikStatusPane* statusp = StatusPane();

if(statusp)

statusp->MakeVisible(EFalse);

Cba()->MakeVisible(EFalse);

AddToStackL( iAppContainer );

}

所以千万记住:如果要通过设置status pane、Cba为不可见的方法获得全屏,千万要在获取"矩形区域"之前设置!

④上面集中方法都是通过在UI类设置"矩形区域"的大小,或者通过设置status pane、Cba不可见隐式改变"矩形区域"的大小实现全屏的。

这里我们介绍一种在Container类里,在UI设置完"矩形区域"后再改变屏幕为全屏显示的方法。void CTestScreenContainer::ConstructL(const TRect& aRect)

{

CreateWindowL();

iLabel = new (ELeave) CEikLabel;

iLabel->SetContainerWindowL( *this );

iLabel->SetTextL( _L("Example View") );

iToDoLabel = new (ELeave) CEikLabel;

iToDoLabel->SetContainerWindowL( *this );

iToDoLabel->SetTextL( _L("Add Your controls here") );

SetRect(aRect);

SetExtentToWholeScreen();

ActivateL();

}

但是要千万记得:SetExtentToWholeScreen()一定要在SetRect(aRect)之后调用才有效果。这点很容易理解, 因为如果SetExtentToWholeScreen()改变屏幕为全屏后,再调用SetRect(aRect)又把屏幕尺寸设置为UI里传递的"矩形区域"的大小了。

上一页  1 2 3 

Tags:解决 Symbian 开发

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