MFC "Hidden" 或 "Default" 功能键加速器?

MFC "Hidden" or "Default" Function Key Accelerators?

我有一个非常普通的 MFC SDI 应用程序。

我最近开始使用新的 MFC 功能包(例如 CMFCToolbar)中的东西,在所有这些更改之后,我发现键盘快捷键出现一些无法解释的行为。

似乎某些资源 ID 具有功能键快捷方式(如 F6),但我无法了解其工作原理或如何禁用它。

例如,如果我将鼠标悬停在工具栏 ID_ABC 上,我会看到如下工具提示:

ABC (F2) 做 ABC 动作

我在加速器 table 中的任何地方都看不到 VK_F2,或者根本看不到任何地方。我也无法在解决方案的任何地方找到 (F2)。这一切对我来说似乎很奇怪。按 F2 确实会做 ABC。

如果我删除整个加速器 table,这似乎是 "fix" 的问题,但当然我没有加速器。一旦我重新添加任何加速器,问题就会再次出现。

通常,当我运行进入这些东西时,我似乎是我自己,问题的原因通常是"far away",有点像在某个随机函数后登陆错误的内存访问,并说 "why am I here"??

但是如果有人知道这件事,谢谢!

只需查看应用程序资源文件中的加速器 table。是的,许多标准命令确实分配有加速键(例如,Ctlr+S 映射到文件保存命令)。您可以删除不需要的命令(单独删除,而不是整个加速器table)。应用程序 "remembering" 旧加速器 table 分配(或不使用新加速器)可能是由于将这些保存在注册表中。去那里删除你的应用程序的 "Workspace" 树,然后重新测试。

菜单项标签也必须包含快捷方式,以制表符分隔(例如 File &Open\tCtlr+O)。状态栏提示和工具提示由字符串资源创建,具有与菜单或工具栏项相同的 ID。您可以在菜单编辑器或字符串 Table 编辑器中 create/edit 这些。两项以换行符分隔。