解决 Symbian 开发全屏显示问题
2010-02-25 04:37:00 来源:WEB开发网那么就有如下几种方法:
①如果我们知道屏幕尺寸,那么就可以把iAppContainer->ConstructL( );里面的参数改为TRect (0,0,176,208)。
②上面的程序不具有适配性,因为我们把屏幕的宽度和高度写死了。
我们来看Symbian给我们提供的一个方法
ApplicationRect()
TRect ApplicationRect() const;
Description
Gets the total area of the screen available to the application. This includes the space that is available for a toolbar, toolband or title band, if the application requires them.
Return value
TRect The total area of the screen available to the application.
Description写的很明显了,我就不翻译了。这个方法可以获得屏幕的整个尺寸,我们把程序可以改为:
iAppContainer->ConstructL( ApplicationRect() );从而实现程序的全屏显示。
③第三中方法是最笨的方法了,那就是不改变UI所传递的"客户矩形区域"的大小,传递的仍然是ClientRect()。但是到了Container后再采用"亡羊补牢"的做法!把status pane、menu bar等隐藏起来。
而且这种方法也容易出错误,下面是一个同行犯的错误,他在Container类里写入下面代码:
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);
CEikStatusPane* statusp = iEikonEnv->AppUiFactory()->StatusPane();
if(statusp)
statusp->MakeVisible(EFalse);
iEikonEnv->AppUiFactory()->Cba()->MakeVisible(EFalse);
ActivateL();
}
为了使用CEikStatusPane类要加入头文件#include
为了使用CEikButtonGroupContainer类要加入头文件#include
更多精彩
赞助商链接