如何使用 SendMessage UPDATE_COMMAND_UI

问题描述

我想在某些事件中启用/禁用菜单项,什么是独立于 UPDATE_COMMAND_UI 处理程序的,所以,我没有 CCmdUI 对象,所以,我想发送一条消息,什么调用处理程序。我试过这个:

    SendMessage(WM_COMMAND,CN_UPDATE_COMMAND_UI,ID_VIEW_SyntaxHIGHLIGHT);

这样好吗?如果没有,正确的方法是什么?谢谢。

解决方法

不,这不正确。您需要转到类视图,然后转到事件选项卡并添加一个 ON_UPDATE_COMMAND_UI 处理程序。

在实现中,您可以调用 pCmdUI->Enable() 和/或 pCmdUI->SetCheck()pCmdUI->SetRadio(),具体取决于您希望 UI 项具有的功能。这种机制的伟大之处在于,您不需要在每次可能影响 UI 项的启用/检查/无线电状态的操作之后调用某种说 UpdateUIItems() 函数,而是框架调用处理程序,而您的应用程序正在进入空闲状态。当然,评估上述条件的代码必须尽可能快。不要在那里执行冗长的操作。尝试在这样的处理程序(例如 Beep(1000,25))中播放一个简短的声音以查看它们被调用的频率。必须在 ON_COMMAND 处理程序中创建、读取或修改数据。在 ON_UPDATE_COMMAND_UI 处理程序中,您只需将 UI 项的状态告诉框架即可。

检查UI Update Mechanism。另外,我以前的帖子herehere