主题:[讨论]如何为动态创建的菜单添加“快捷键”?
天天学习
[专家分:4570] 发布于 2008-05-22 11:44:00
我用AppendMenu等一些API命令向窗体已有的菜单中增加了一个项目,可以正常使用。但就是不知道如何为这个菜单项配上一个快捷键(比如Ctrl+S,不是类似&S的),请高手指点一下,谢谢!
回复列表 (共1个回复)
沙发
tanchuhan [专家分:15140] 发布于 2008-05-22 16:18:00
菜单上的快捷键只是显示的文本而已,例如"&New\tCtrl+N"
真正的快捷键处理是通过TranslateAccelerator()这个函数把按键消息通过快捷键表翻译为相应的WM_COMMAND消息,发到消息处理过程的.
例如上面的菜单项ID为ID_NEW,则相应的快捷键表里面是这样的:"N", ID_NEW, VIRTKEY, CONTROL
单击菜单项,窗口收到的消息为(WM_COMMAND, MAKEWPARAM(ID_NEW, 0), NULL), 同理,按下快捷键时,调用TranslateAccelerator()后在函数内部也会发条同样的消息到窗口.
另外,后者是需要手工实现的,所以你不实现的话,如果你菜单上显示什么Ctrl+S之类的,按下这些键都没反应的.
当然,VB把这些细节帮你隐藏了,所以你看起来是自动的(或者说菜单上显示什么快捷键,就自动有此快捷键功能)
我来回复