【问题标题】:MFC-SDI application with Visual Studio 2010: New keyboard shortcut not working带有 Visual Studio 2010 的 MFC-SDI 应用程序:新的键盘快捷键不起作用
【发布时间】:2012-04-20 10:37:33
【问题描述】:

我想在 Visual Studio 2010 中为 MFC SDI 应用程序添加键盘快捷方式。这是我要做的:

  1. 将所需密钥作为虚拟密钥添加到加速器资源(例如,ID 为 ID_NEWGAME 的 VK_SPACE)
  2. 将 COMMAND 的事件处理程序连接到 CMyGameView 类中的 ID_NEWGAME
  3. 使用调试器尝试在事件处理程序内停止进行测试

结果:当我按下空格键时程序没有反应。

然而,在 Visual Studio 6.0 中,相同的过程按预期工作。

我错过了什么?

【问题讨论】:

  • 您在使用新的 MFC 类吗?这可能与this unanswered question of mine中的问题相同
  • @MikMik - 请参阅下面的答案。我认为这是同样的问题。
  • @Redeye:对。这是同样的问题。令我烦恼的是菜单也可以自定义,但是如果您在代码中添加新菜单,它们不会被注册表中的菜单覆盖。加速器也应该可以做到这一点。我知道,新的和用户自定义的可能会有冲突,但是什么时候没有冲突呢?

标签: visual-studio-2010 mfc


【解决方案1】:

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

【讨论】:

  • 谢谢。我添加了您的解决方案 theApp.GetKeyboardManager()->ResetAll();到 CMyGameApp::InitInstance() 并且它有效。我会出现什么样的副作用?
  • 用户无法有效地自定义加速器。我的意思是,用户所做的任何自定义都将在他们下次运行程序时撤消。
猜你喜欢
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多