实现热键的功能
来源:互联网 发布:网络运营常见面试题 编辑:程序博客网 时间:2024/05/22 00:35
程序在按下option后弹出功能菜单,有5项,
我要实现在功能菜单出现后,按下1、2、3、4、5按键时分别调用这5项。
我想到了两个可行的方案
1. 使用CAknPopupList
Popup List在外观上跟菜单很像,因此你完全可以定制一个Popup List,在用户按左软键时弹出,选择某项时撤消。
SDK中的"/Series60Ex/popuplist"示例程序讲了CAknPopupList的用法。
2. 调整控件在控件堆栈中的优先级
在把控件加入到控件堆栈中时指定一个比较高的优先级,这样的话无论有什么按键都会先交给它处理。例如:
void CMyAppUi::ConstructL()
{
...
AddToStackL( iAppContainer,ECoeStackPriorityDialog );
...
}
在弹出菜单时系统会调用DynInitMenuPaneL(),在这个函数时你可以标明菜单已经弹出来了
void CMyAppUi::DynInitMenuPaneL(...)
{
...
iPopup = ETrue;
...
}
而AppUi处理完菜单命令之后可以认为菜单已经撤消了
void CMyAppUi::HandleCommandL(...)
{
iPopup = EFalse;
...
}
在控件的OfferKeyEventL()里处理按键
void CMyContainer::OfferKeyEventL(...)
{
if(!iMyAppUi->Popup()) // 如果菜单未弹出则不处理
{
return EKeyWasNotConsumed
}
if(aType == EEventKey)
{
// 如果用户在菜单弹出时按了"1"
if(aKeyEvent.iCode=='1')
{
// 模拟按键,撤消菜单
TRawEvent key;
key.Set(TRawEvent::EKeyDown, 165);
iCoeEnv->WsSession().SimulateRawEvent(key);
User::After(500000); // 延迟一小会儿
// 处理菜单命令
iMyAppUi->HandleCommandL(...);
return EKeyWasConsumed;
}
}
return EKeyWasNotConsumed;
}
- 实现热键的功能
- c#实现热键功能
- 在PB中实现热键功能的方法
- 程序热键的实现
- 程序热键的实现
- 热键的实现
- WPF的热键实现
- 用JavaScript实现WEB热键功能
- 在PB中实现系统热键功能
- VC全局热键的实现
- Qt 全局热键的实现
- windowsSDK实现 屏幕实时监控 热键截图 功能
- 在PB中实现热键的方法
- 实现一个热键注册编辑的类
- 实现一个热键注册编辑的类
- 程序中使用热键的实现
- 在PB中实现热键的方法
- 实现gnome桌面的全局热键
- 近10年最强的50本计算机图书名单
- 从裸跑开始
- ARM中断寄存器详解
- 在RFT中关闭所有IE浏览器窗口的3种方法
- 最简单的Windows XP上安装MoinMoin方法
- 实现热键的功能
- Oracle10g的ORA-3136错误
- 别了,SUN,别了,我的太阳。永远不别的朋友,java
- 分析C语言的声明
- Linux 上网设置
- 周五,风大,冷
- 下周查找资料
- 问题
- 网络工程