MFC 如何确定 ON_UPDATE_COMMAND_UI 是用于菜单栏还是工具栏?

问题描述

我有一个案例,我希望菜单使用 ON_UPDATE_COMMAND_UI 设置对项目的检查;但是,在工具栏上,我将使用下拉工具栏,因此我只想选择正确的工具栏项目而不更改其选中状态。

如何确定 ON_UPDATE_COMMAND_UI 调用是针对菜单栏还是工具栏?

解决方法

您可以检查处理程序给定的 CCmdUI 参数的 m_pMenu member;如果为菜单项调用了例程,那将是一个有效的 CMenu* 指针;如果不是,它将是 NULL:

void CMyClass::OnUpdateHandler(CCmdUI *pCmdUI)
{
   if (!pCmdUI->m_pMenu) {
       // NOT for a menu
   }
   else {
       // For a menu
   }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...