wxWidgets加速键(热键)

原文链接: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); 



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

你可能感兴趣的:(C/C++,wxWidgets)