Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3355151
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2009-04-15 09:26:52

要想使Symbian C++程序实现全屏幕显示,有以下几个方法。

遮盖系统窗口

使用一个简单的方法,就可以使我们的控件或者控件容器扩展到全屏幕区域,个方法可以应用在即便没有全屏幕视图的视图框架里。那么这个方法就是,CCoeControl::SetExtentToWholeScreen(),你可以在CMyView::ConstructL函数中,ActivateL()函数之前进行调用。请看示范代码:

void CMyView::ConstructL(const TRect& aRect)
  {
  // Create a window for this application view
  CreateWindowL();

  // Set the window size
  SetRect(aRect);

  // This view is a full-screen view.
  SetExtentToWholeScreen();

  // Activate the window, which makes it ready to be drawn
  ActivateL();
  }

SetExtentToWholeScreen()函数在支持皮肤的S60(从S60第二版之后,如图所示)应用程序中,并不推荐使用。不过,因为全屏幕的应用程序并不需要什么特别的皮肤支持,所以实际上来讲并不会产生太大的问题。

Image:FullscreenExample.png

隐藏

屏幕上方的状态窗口和下方的功能键窗口都可以被隐藏,我们可以用这样的方法实现应用程序的全屏化处理。下面的代码可以应用在AppUi层来将状态窗口(status pane)隐藏起来。

#include  
 #include 
 StatusPane()->MakeVisible(EFalse);

而屏幕下方的窗口,可以在AppUi层调用 Cba()->MakeVisible(EFalse);函数来进行隐藏。执行了这个函数之后,程序默认的将不会再生成响应命令。如果要想使程序默认的左右发挥作用,那么我们将不得不自己手动处理按键事件,这样的操作要在HandleKeyEventL()函数中进行:

TKeyResponse  CMyAppUi::HandleKeyEventL(
  const TKeyEvent& aKeyEvent,TEventCode aType)
  {
  // Left or right softkey pressed
  if (aType==EEventKeyDown && 
   (aKeyEvent.iScanCode == EStdKeyDevice0 || 
   aKeyEvent.iScanCode == EStdKeyDevice1))    
   {
   Cba()->MakeVisible(ETrue);
   }
  else
   {
   Cba()->MakeVisible(EFalse);   
   }

  return EKeyWasNotConsumed;
  }

有了上述办法,我们就可以将应用程序设置为全屏幕显示了

阅读(250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~