TranslateAccelerator和Disabled菜单项

时间:2013-03-04 00:07:53

标签: c++ winapi menu accelerator

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

根据Microsoft's documentation

  

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

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

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

0 个答案:

没有答案