S60使用者介面控制項設計(一)

來源:互聯網
上載者:User

概要
*UI控制項
 - 控制項棧
 - 按鍵事件流
*預定義控制項
 - Menu(菜單)
 - Dialog(對話方塊)
 - Note(通知對話方塊)
 - Query(輸入對話方塊)
 - Editor(編輯器)
 - Form(表單)

UI
*控制項的作用是
 - 為使用者顯示資訊
 - 對按鍵事件做出響應
*從CCoeControl繼承

控制項棧
*控制項棧處理不同控制項間的按鍵事件流
*由AppUi所有
*控制項需要註冊到控制項棧來獲得按鍵事件
 - CCoeAppUi::AddToStackL(...)
  @註冊到控制項棧
 - CCoeAppUi::RemoveFromStack(...)
  @取消與控制項棧的註冊
 - CCoeControl::OfferKeyEventL(...)
  @重寫CCoeCoontrol衍生類別來獲得按鍵事件

 
控制項棧-樣本
*與控制項棧註冊
 void CMyAppUi::ConstructL()
 {
  BaseConstructL();
  iAppContainer = CMyContainer::NewL(ClientRect());
  AddToStackL(iAppContainer);
 }
*與控制項棧取消註冊
 CMyAppUi::~CMyAppUi()
 {
  if(iAppView)
  {
   RemoveFromStack(iAppContainer);
   delete iAppView;
  }
 }
*接收按鍵事件
TKeyResponse CMyContainer::OfferKeyEVentL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
 TKeyRespose ret = EKeyWasNotConsumed;

 if(aType == EEventKey)
 {
  switch(aKeyEvent.iCode)
  {
   case EKeyLeftArrow;
   // 將球左移
   ...
   ret = EKeyWasConsumed;
   break;
   ...
  }
 }
 
 return ret;
}

 

事件流
*控制項棧中往往有多個控制項
*控制項根據AddToStackL()的參數按照優先順序高低(高者先接收)來接收事件
 - 軟健:ECoeStackPriorityCba(=60)
 - 對話方塊:ECoeStackPriorityDialog(=50)
 - 菜單:ECoeStackPriorityMenu(=10)
 - 其他控制項預設值:ECoeStackPriorityDefault(=0)
*相同優先順序的控制項按照註冊的順序來接收事件
*如果控制項對某個事件不關注,則返回EKeyWasNotConsumed,該值將傳遞至其他的控制項
*控制項如果處理事件則返回EKeyWasConsumed

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.