狀態面板

如何只保留導航面板,隱藏標題面板,上下文面板 在資源文件中修改: 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; Members Defined 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
發佈了17 篇原創文章 · 獲贊 1 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章