3

在我的应用程序中,我根据上下文启用/禁用菜单项 - 如果文本区域有焦点,我禁用会与导航键冲突的加速器(例如 Ctrl-Left/Right)。

根据微软的文档

如果加速器与菜单项具有相同的标识符并且菜单项是灰色或禁用的,则加速器被禁用并且不会生成 WM_COMMAND 或 WM_SYSCOMMAND 消息。

但是,如果关联的菜单加速器仍在加速器表中,则 TranslateAccelerator 仍然返回 true,尽管没有调度任何消息(因此“吃掉”键盘事件)。

我想知道是否有办法确定 TranslateAccelerator 是否真的发送了消息?我试图避免每次启用或禁用菜单项时重建加速器表。

4

0 回答 0