Win32 C ++在运行时为MenuItem分配/更改加速键

时间:2013-02-11 00:59:34

标签: c++ winapi mfc key accelerator

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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