如何使用 SendMessage UPDATE_COMMAND_UI

How to UPDATE_COMMAND_UI with SendMessage

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

    SendMessage(WM_COMMAND, CN_UPDATE_COMMAND_UI, ID_VIEW_SYNTAXHIGHLIGHT);

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

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

在实现中,您可以调用 pCmdUI->Enable() and/or pCmdUI->SetCheck()pCmdUI->SetRadio(),具体取决于您希望 UI 项目具有的功能。这种机制的优点在于你不需要在每次可能影响 UI 项的 enable/check/radio 状态的操作后调用某种函数,比如 UpdateUIItems() 函数,相反,当您的应用程序进入空闲状态时,框架会调用处理程序。当然,评估上述条件的代码必须尽可能快。不要在那里进行长时间的操作。尝试在这样的处理程序中播放一段简短的声音(例如 Beep(1000,25)),看看它们被调用的频率。必须在 ON_COMMAND 处理程序中创建、读取或修改数据。在 ON_UPDATE_COMMAND_UI 处理程序中,您必须只告诉框架 UI 项的状态。

检查UI Update Mechanism. Also, my older posts here and