【问题标题】:Win32 C++ Assign/Change Accelerator Key For MenuItem While RunningWin32 C++ 在运行时为 MenuItem 分配/更改加速键
【发布时间】:2013-02-11 00:59:33
【问题描述】:

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

【问题讨论】:

  • 我还没有和他们合作过,但是this example 可能会很方便。

标签: c++ winapi mfc key accelerator


【解决方案1】:

您需要管理自己的快捷键表。

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

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

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

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多