状态面板

来源:互联网 发布:java并发编程实战 编辑:程序博客网 时间:2024/04/27 19:53
如何只保留导航面板,隐藏标题面板,上下文面板在资源文件中修改:RESOURCE EIK_APP_INFO{menubar = r_menubar;status_pane = r_status_pane_small; //R_AVKON_STATUS_PANE_LAYOUT_SMALL;cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;}RESOURCE STATUS_PANE_APP_MODEL r_status_pane_small{layout = R_AVKON_STATUS_PANE_LAYOUT_SMALL;}即可。面板分为状态面板、主面板和软键面板。其中以针对状态面板的操作为主。状态面板分为下列子面板:标题面板、上下文面板、导航面板、信号面板、电池面板和通用指示符面板。要操作状态面板,首先应该通过CEikStatusPane* CAknAppUi::StatusPane()得到状态面板的指针。CEikStatusPane提供了对状态面板进行操作的各种方法:class CEikStatusPane : public CEikStatusPaneBase, public MCoeForegroundObserver;MembersDefined in CEikStatusPane: ApplyCurrentSettingsL(), HandleResourceChange(), MakeVisible(), NewL(), SetDimmed(), SetFaded(), ~CEikStatusPane()Inherited from CBase: operator new()Inherited from CEikStatusPaneBase: ContainerControlL(), ControlL(), Current(), GetShapeL(), IsDimmed(), IsFaded(), IsVisible(), PaneCapabilities(), PaneRectL(), ReduceRect(), SetFlags(), SetObserver(), SwapControlL(), SwitchLayoutL(), TPaneCapabilities, WindowGroup()Inherited from MCoeForegroundObserver: HandleGainingForeground(), HandleLosingForeground()1.可见性操作 CEikStatusPane* statusPane = StatusPane(); if (statusPane->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_EMPTY) { statusPane->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_EMPTY); } else { statusPane->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); }CurrentLayoutResId()返回当前布局的资源ID,关于资源ID的定义可参照,有以下几种, R_AVKON_STATUS_PANE_LAYOUT_IDLE,R_AVKON_STATUS_PANE_LAYOUT_USUAL, R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE, R_AVKON_STATUS_PANE_LAYOUT_EMPTY等。SwitchLayoutL()把状态面板的布局更改为指定的资源ID。注意,不应使用CEikStatusPane的IsVisible()和MakeVisible()来检查和设置面板的可见性,因为它们同时会隐藏电话拨入图标。在对状态面板的子面板操作时,需要通过下面方法得到子面板(以更改标题面板文本为例):TUid titlePaneUid;titlePaneUid.iUid = EEikStatusPaneUidTitle;CEikStatusPane* statusPane = StatusPane();CEikStatusPaneBase::TPaneCapabilities subPane = statusPane->PaneCapabilities(titlePaneUid);if (subPane.IsPresent() && subPane.IsAppOwned()){ CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(titlePaneUid); HBufC* titleText = StringLoader::LoadLC(R_HEWB_TITLE_TEXT); titlePane->SetTextL(*titleText); CleanupStack::PopAndDestroy(titleText);}要得到子面板,需要实现准备好子面板的ID,它们定义在中,有下列几种: EEikStatusPaneUidSignal(信号面板),EEikStatusPaneUidBattery(电池面板), EEikStatusPaneUidContext(上下文面板),EEikStatusPaneUidTitle(标题面板), EEikStatusPaneUidNavi(导航面板),EEikStatusPaneUidIndic, EEikStatusPaneUidMessage,EEikStatusPaneUidClock。TPaneCapabilities PaneCapabilities(TPaneId aPaneId)方法获取子面板的相关信息。TPaneCapabilities 是CEikStatusPaneBase的嵌套类,有IsPresent(),IsAppOwned(),IsInCurrentLayout()等方法。IsPresent()检查标题面板是否存在;IsAppOwned()检查面板是否能被应用程序更改;IsCurrentLayout()检测面板是否为当前面板布局的一部分。一旦确定了面板存在并可修改,调用CCoeControl* CEikStatusPaneBase::ControlL(TPaneId aPaneId)得到子面板的指针,然后即可对其进行操作。关于标题面板和上下文面板的操作均较简单,可参照SDK中CAknTitlePane和 CAknContextPane。比较复杂的是导航面板,将另文介绍。 原文地址 http://hi.baidu.com/richiechyi/blog/item/f4bd13a4032e1bf39152ee6d.html 转载自:http://blog.sina.com.cn/s/blog_448367c90100a9ve.html 状态面板(Status Pane) Symbian S60应用程序窗口的标准面板由状态面板、主面板和控制面板组成。http://blog.csdn.net/dycwahaha/archive/2008/09/09/2906375.aspx 1、状态面板组成 状态面板占据了屏幕区域的顶部,用于显示与当前应用程序和设备自身状态有关的信息。分别有下列子面板组成:标题面板(Title pane)。 上下文面板(Context pane)。 导航面板(Navi pane)。 信号面板(Signal pane)。 电池面板(Battery pane)。 通用指示器面板(Universal indicator pane)。 下列子面板的内容可以在应用程序中修改:标题面板(Title pane):默认显示应用程序的名字。可以更改为显示自定义文本,或显示一幅位图图像。 上下文面板(Context pane):默认显示系统指定的应用程序图标,可以根据需要更改为其他图标。 导航面板(Navi pane):导航面板的主要用途是显示与应用程序的当前状态有关的信息,以及说明当前显示的是哪个视图。此外,还可以使用它在应用程序内导航(切换视图)。导航面板默认为空白,可以根据需要用选项卡、导航标签、图像、指示器或文件夹结构指示符修饰它。 2、状态面板可见性和尺寸2.1、更改状态面板可见性 为了修改状态面板,需要获得状态面板句柄。在AppUi和View中都有获得句柄的方法StatusPane()。CEikStatusPane* statusPane = StatusPane();本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dycwahaha/archive/2008/09/09/2906375.aspx
原创粉丝点击