wxWidgets加速键(热键)

本文介绍了如何在wxWidgets中定义和使用加速键,包括直接在菜单项中定义加速键和使用wxAcceleratorEntry对象创建加速键表两种方法。文中详细解释了各种合法的加速键组合及其在不同平台上的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:http://forums.wxwidgets.org/viewtopic.php?f=32&t=24779&sid=fbaec3bf10eda383c4c5ecc952b576ff

加速键是为了实现通过某种组合键来快速执行菜单命令.加速键的处理是在所有的键盘事件(包括字符事件)之后.标准的加速键包括Ctrl+ O用来打开一个文件,Ctrl+V用来把剪贴板上的数据粘贴到应用程序中等.最简单的定义加速键的方法是在菜单项定义函数中使用下面的代码: 



menu->Append(wxID_COPY, wxT("Copy\tCtrl+C")); 



wxWidgets把"\t"后面的内容翻译为加速键增加到菜单的加速键表中.在上面的例子中,用户按Ctrl+C组合键的效果和用户选择这个菜单的效果是完全一样的. 

你可以使用Ctrl,Alt和Shift以及它们的各种组合,然后加一个+号或者-号再跟一个字符或者功能键,比如下面的这些加速键都是合法的加速键: Ctrl+B, G, Shift-Alt-K, F9, Ctrl+F3, Esc 和Del. 在你的加速键定义中可以使用下面的名字: Del, Back, Ins, Insert, Enter, Return, PgUp, PgDn, Left, Right, Up, Down, Home, End, Space, Tab, Esc和 Escape. 这些命令是大小写无关的(你想怎样使用大小写都可以). 

注意在Mac OSX平台上,一个定义为Ctrl的加速键实际上代表的是Command键. 

另外一种设置加速键的方法是使用wxAcceleratorEntry对象定义一个加速键表,然后使用wxWindow:: SetAcceleratorTable函数将其和某个窗口绑定.每一个wxAcceleratorEntry的记录是由一个修饰键比特位值和一个字符或者功能键以及一个窗口标识符组成的,如下所示: 


wxAcceleratorEntry entries[4]; 
entries[0].Set(wxACCEL_CTRL, (int) 'N', wxID_NEW); 
entries[1].Set(wxACCEL_CTRL, (int) 'X', wxID_EXIT); 
entries[2].Set(wxACCEL_SHIFT, (int) 'A', wxID_ABOUT); 
entries[3].Set(wxACCEL_NORMAL, WXK_DELETE, wxID_CUT); 
wxAcceleratorTable accel(4, entries); 
frame->SetAcceleratorTable(accel); 



你可以同时使用多个加速键表,也可以混合使用菜单项加速键和加速键表,如果你想给一个菜单项指定多个加速键,这将是非常有用的,因为你不可能在一个菜单项中指定多个加速键. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值