我有一个非常正常的MFC SDI应用程序。
我最近开始使用新MFC功能包(例如CMFCToolbar)中的内容,经过所有这些更改后,我在键盘快捷键中看到了一些无法解释的行为。
似乎某些资源ID具有功能键快捷键(如F6),但我无法了解其工作原理或如何禁用它。
例如,如果我将鼠标悬停在工具栏中的ID_ABC上,我会看到如下工具提示:
ABC(F2) 做ABC行动
我没有在加速器表中的任何地方看到VK_F2,或者在任何地方都看不到。我也无法在解决方案中找到(F2)任何地方。这一切对我来说都很奇怪。按F2确实可以做ABC。
如果我删除整个加速器表,那么似乎"修复"问题,但当然我没有加速器。一旦我添加任何加速器,问题就会重新出现。
通常情况下,当我遇到这些事情时,我似乎独自一人,而且问题的原因通常是“远远地”#34;有点像在一个记忆力不好后登陆一些随机函数访问,说,"为什么我在这里" ??
但如果有人对此有所了解,谢谢!
答案 0 :(得分:2)
只需查看应用程序资源文件中的加速器表即可。是的,许多标准命令都指定了加速键(例如,Ctlr + S映射到文件保存命令)。您可以删除不需要的命令(单独,而不是整个加速器表)。应用程序"记住"旧的加速器表分配(或不使用新的加速器表)可能是由于将这些保存在注册表中。去那里删除"工作区"树为您的应用程序,然后重新测试。
菜单项标签也必须包含快捷方式,并以标签分隔(例如File &Open\tCtlr+O
)。状态栏提示和工具提示由字符串资源创建,其ID与菜单或工具栏项相同。您可以在菜单编辑器或字符串表编辑器中创建/编辑它们。这两个项目由换行符分隔。