哪个更适合 MFC 应用程序热键或加速器?

Posted

技术标签:

【中文标题】哪个更适合 MFC 应用程序热键或加速器?【英文标题】:Which is better for MFC application hot key or Accelerator? 【发布时间】:2015-06-18 04:42:49 【问题描述】:

我们有 MFC 应用程序,它有大约 10 个图像按钮,我们要为其提供快捷键。快捷方式将是可定制的。我已经使用ON_WM_HOTKEY() 消息使用热键实现了快捷方式(目前没有自定义)。

通过 Goolge 搜索后,我有点困惑。例如,this 问题表明热键对于操作系统是全局的,加速器对于应用程序是全局的。

我应该在我的应用程序中使用哪一个。我的快捷键就像 Ctrl + Shift + A,并且可以自定义。

其次,将它们保存在哪里。是否通常将快捷方式存储在 Windows 注册表中?

【问题讨论】:

【参考方案1】:

通过RegisterHotKey(或 MFC 中的等效项)添加的热键绝对是系统全局的,除非您特别希望用户能够从任何地方触发它们,否则您不应使用它们来触发程序中的功能。

(例如,您的应用程序可能是一个屏幕截图应用程序,因此从外部触发一个函数是有意义的)

虽然您通常应该使用加速键来为工具栏按钮等添加键盘绑定。

您将它们存储在哪里取决于您 - 我会说您应该将它们存储在您存储应用程序其余配置数据的任何位置。

【讨论】:

它们不是工具栏按钮,按钮在子视图中。加速器是否实用可定制? 不管它们是工具栏按钮还是其他类型的按钮 - 除非您希望用户能够从您使用加速器的系统中的任何位置激活它们。您可以使用CreateAcceleratorTable 动态创建快捷键表。 谢谢,这很有用。 +1【参考方案2】:

加速键和热键的区别在于提供的链接状态;只要在应用程序具有焦点时按下注册的组合键(正常行为),就会注册加速键按下。但是,如果您想注册一个即使用户在您的应用程序处于后台时使用另一个应用程序也能工作的组合键;去热键。通常使用它的应用程序是剪贴板管理器、屏幕抓取器和启动器。

我建议将配置存储在注册表中,但是您也可以使用存储在用户配置文件目录中的配置文件。

【讨论】:

以上是关于哪个更适合 MFC 应用程序热键或加速器?的主要内容,如果未能解决你的问题,请参考以下文章

对界面编程来说c++的mfc,qt和c#的winform,wpf哪个应用多?学哪个好?

哪个更适合 Java 开发托管:Aptana?谷歌应用引擎?切片主机?

MFC 控件添加热键

哪个更适合使用,vector 或 arraylist? [复制]

哪个更适合使用,vector 或 arraylist? [复制]

MFC 如何使窗口 置顶