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

Posted

技术标签:

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

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

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

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

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

我错过了什么?

【问题讨论】:

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

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

【讨论】:

谢谢。我添加了您的解决方案 theApp.GetKeyboardManager()->ResetAll();到 CMyGameApp::InitInstance() 并且它有效。我会出现什么样的副作用? 用户无法有效地自定义加速器。我的意思是,用户所做的任何自定义都将在他们下次运行程序时撤消。

以上是关于带有 Visual Studio 2010 的 MFC-SDI 应用程序:新的键盘快捷键不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 安装

带有 SQL 的 Visual Studio 2010 探查器

使用带有 C#、Visual Studio 2010 的 PhoneNumbers.dll 验证电话号码

无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口

带有 SQL Server 2008 和 Office 2007 的 Visual Studio 2010 的正确安装顺序?

在 Visual Studio 2010 (utility.obj) 中使用带有 VC++ 的 QuickFix 时出错