我是靠谱客的博主 无聊汉堡,最近开发中收集的这篇文章主要介绍S60用户界面控件设计(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概要
*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

最后

以上就是无聊汉堡为你收集整理的S60用户界面控件设计(一)的全部内容,希望文章能够帮你解决S60用户界面控件设计(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部