概述
概要
*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用户界面控件设计(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复