【发布时间】:2013-02-11 00:59:33
【问题描述】:
我想为在 C++ 中运行时没有加速键的菜单项分配加速键,并且能够更改它。我浏览了文档和 MSDN,但我不清楚如何做到这一点。
【问题讨论】:
-
我还没有和他们合作过,但是this example 可能会很方便。
标签: c++ winapi mfc key accelerator
我想为在 C++ 中运行时没有加速键的菜单项分配加速键,并且能够更改它。我浏览了文档和 MSDN,但我不清楚如何做到这一点。
【问题讨论】:
标签: c++ winapi mfc key accelerator
您需要管理自己的快捷键表。
您可以从 ACCEL 结构数组创建资源表,填充它们并将其传递给 CreateAcceleratorTable。或者,您可以通过 LoadAccelerators 从资源中加载它们。这为您提供了 HACCEL 句柄。在您的主消息循环中,在 TranslateAccelerator 调用中使用此 HACCEL 句柄。
当需要编辑加速器时,如果您周围没有 ACCEL 数组,请使用 HACCEL 句柄调用 CopyAcceleratorTable 以取回 ACCEL 数组。根据需要编辑此数组,然后使用 CreateAcceleratorTable 重新创建一个新的 HACCEL 句柄并删除旧的句柄。在下一次更改之前使用这个新的加速键句柄。
您的 WndProc 将获得这些加速器的消息。在消息处理程序中调用菜单操作处理程序的实现。
【讨论】: