0

我想为在 C++ 中运行时没有加速键的菜单项分配加速键并能够更改它。我浏览了文档和 MSDN,但我不清楚如何做到这一点。

4

1 回答 1

2

您需要管理自己的加速器表。

您可以从 ACCEL 结构数组创建资源表,填充它们并将其传递给 CreateAcceleratorTable。或者您可以通过 LoadAccelerators 从资源中加载它们。这为您提供了 HACCEL 句柄。在您的主消息循环中,在 TranslateAccelerator 调用中使用此 HACCEL 句柄。

当需要编辑加速器时,如果您不再拥有 ACCEL 数组,请使用 HACCEL 句柄调用 CopyAcceleratorTable 以取回 ACCEL 数组。根据需要编辑此数组,然后使用 CreateAcceleratorTable 重新创建一个新的 HACCEL 句柄并删除旧的句柄。在下一次更改之前,请将此新句柄用于加速器。

您的 WndProc 将获得这些加速器的消息。在消息处理程序中调用菜单操作处理程序的实现。

于 2013-02-11T07:11:08.220 回答