我想在一些事件中启用/禁用菜单项,它独立于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更新机制。此外,我以前的帖子在此处和在此。