【问题标题】:MFC "Hidden" or "Default" Function Key Accelerators?MFC“隐藏”或“默认”功能键加速器?
【发布时间】:2017-03-08 21:55:09
【问题描述】:

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

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

似乎某些资源 ID 具有功能键快捷键(如 F6),但我不知道它是如何工作的,或者如何禁用它。

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

ABC (F2) 做ABC动作

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

如果我删除整个加速器表,那似乎“解决”了问题,但当然我没有加速器。一旦我添加任何加速器,问题就会再次出现。

通常,当我遇到这些事情时,我似乎是一个人,问题的原因通常是“遥远”,有点像在一次糟糕的内存访问后登陆某个随机函数,然后说, “为什么我在这里”??

但如果有人对此有所了解,谢谢!

【问题讨论】:

    标签: c++ mfc mfc-feature-pack acceleratorkey


    【解决方案1】:

    只需查看应用程序资源文件中的加速键表即可。是的,许多标准命令确实分配了加速键(例如 Ctlr+S 映射到文件保存命令)。您可以删除不需要的命令(单独删除,而不是整个快捷键表)。应用程序“记住”旧的加速器表分配(或不使用新的)可能是由于将它们保存在注册表中。去那里删除您的应用程序的“工作区”树,然后重新测试。

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

    【讨论】:

    • 来自问题:“我在加速器表中的任何地方都看不到 VK_F2”
    • 为了将来参考,注册表项是问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2014-04-19
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多