如何使用SendMessage更新_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更新机制。此外,我以前的帖子在此处在此

最新更新