MFC 应用程序热键和加速器哪个更好?

Which is better for MFC application hot key or Accelerator?

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

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

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

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

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

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

通常情况下,您应该使用快捷键为工具栏按钮等添加键盘绑定

存储它们的位置由您决定 - 我会说您应该将它们存储在存储应用程序配置数据其余部分的任何位置。

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

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