Visual studio 2010 使用Visual Studio 2010的MFC-SDI应用程序:新的键盘快捷键不起作用

Visual studio 2010 使用Visual Studio 2010的MFC-SDI应用程序:新的键盘快捷键不起作用,visual-studio-2010,mfc,Visual Studio 2010,Mfc,我想在VisualStudio2010中向MFCSDI应用程序添加键盘快捷键。以下是我的工作: 将所需密钥作为虚拟密钥添加到Accelerator Ressource(例如,ID为的VK_空间\u NEWGAME) 将命令的事件处理程序连接到类CMyGameView中的ID_NEWGAME 通过使用调试器尝试在事件处理程序内部停止进行测试 结果:当我按下空格键时,程序没有反应 然而,在VisualStudio6.0中,相同的过程与预期的一样有效 我遗漏了什么?我有一种预感,您遇到了一个我也遇到过

我想在VisualStudio2010中向MFCSDI应用程序添加键盘快捷键。以下是我的工作:

  • 将所需密钥作为虚拟密钥添加到Accelerator Ressource(例如,ID为的VK_空间\u NEWGAME)
  • 将命令的事件处理程序连接到类CMyGameView中的ID_NEWGAME
  • 通过使用调试器尝试在事件处理程序内部停止进行测试
  • 结果:当我按下空格键时,程序没有反应

    然而,在VisualStudio6.0中,相同的过程与预期的一样有效


    我遗漏了什么?

    我有一种预感,您遇到了一个我也遇到过的问题-当您使用最新版本的MFC创建SDI应用程序时,默认情况下,应用程序会在运行时从注册表加载加速器表,从而覆盖您在资源表中指定的任何内容。我在前一个帖子中发布了一个解决方案,我认为它与您看到的是相同的。希望有帮助。

    您正在使用新的MFC类吗?这可能与@MikMik中的问题相同-请参阅下面我的答案。“我想这是同一个问题。@Redeye:对。这是同样的问题。让我头疼的是,菜单也可以自定义,但如果在代码中添加新菜单,它们不会被注册表中的菜单覆盖。同样的情况也应该适用于加速器。我知道,新的和用户定制的可能会有冲突,但是如果没有冲突,谢谢。我将您的解决方案添加到app.GetKeyboardManager()->ResetAll();到CMyGameApp::InitInstance(),它就可以工作了。我需要期待什么样的副作用?用户无法有效地定制加速器。我的意思是,用户所做的任何自定义都将在下次运行程序时撤消。