据我所理解的UPDATE_COMMAND_UI只有在点击上级菜单的时候才会执行,哪有什么办法可以手动更新它么,不使用菜单的ID强制更新的办法
我现在的问题是
我我菜单是工程-》建立工程\管理工程这样的
开始都是禁用的,当我点击了建立工程,期间我将管理工程在UPDATE_COMMAND_UI之中的参数设置成了TURE可是它还是不会调用UPDATE_COMMAND_UI来更新,这样就造成了我在再次点击工程这个母菜单之前我的管理工程的快捷键失效。
也参考了前人的提问还是没有找到
至于send message IDL_UPDATE_COMMAND_UI 也无法理解到底怎么使用
各位达人速速救命呀
其次问个题外的问题
如何获得当前用户windows的空白的填充色,如果有别人换了颜色,偶的程序自己绘制的对话筐就回变得很难看哦。。
我现在的问题是
我我菜单是工程-》建立工程\管理工程这样的
开始都是禁用的,当我点击了建立工程,期间我将管理工程在UPDATE_COMMAND_UI之中的参数设置成了TURE可是它还是不会调用UPDATE_COMMAND_UI来更新,这样就造成了我在再次点击工程这个母菜单之前我的管理工程的快捷键失效。
也参考了前人的提问还是没有找到
至于send message IDL_UPDATE_COMMAND_UI 也无法理解到底怎么使用
各位达人速速救命呀
其次问个题外的问题
如何获得当前用户windows的空白的填充色,如果有别人换了颜色,偶的程序自己绘制的对话筐就回变得很难看哦。。
===啥意思???
to:happyparrot
期间我将管理工程在UPDATE_COMMAND_UI之中的参数设置成了TURE可是它还是不会调用UPDATE_COMMAND_UI来更新,
===啥意思???
if (note)
{
pCmdUI->Enable(ture);
}
else
{
pCmdUI->Enable(false);
}
中的note的值设置成ture;to:cnzdgs
在修改完菜单后调用DrawMenuBar。
我也试过了这个函数不知道为什么我这里DrawMenuBar是不带参数的,搜索出来的使用和MSDN上面的也是带HWND hWnd 参数的,不知道如何使用,请说仔细点可以么to:laiyiling and jameshooo
UPDATE_COMMAND_UI并不是点击时才执行的。它是在Main framework空闲时就会处理菜单、工具栏等元素的状态更新。
我这里貌似只有工具栏会自动更新,菜单,我的这个2级菜单似乎要我点击到上级菜单在它显示前才会调用UPDATE_COMMAND_UI
我将断点打在UPDATE_COMMAND_UI之中没有进入,只有我点击了上级菜单才会进入
过程也就是这样的
开始(管理工程禁用)-》点击工程菜单之下的建立工程(此时管理工程还是禁用的)——》执行建立工程(其中将note改成了ture),这个时候管理工程在后台还是禁用的,所以我的快捷键还是无法使用的,只有在我再次点击到“工程”这个母菜单的时候才进入管理工程的UPDATE_COMMAND_UI才能把它改成可用的。
我现在使用的办法AfxGetMainWnd()->GetMenu()->EnableMenuItem(ID_OPERATION,MF_BYCOMMAND|MF_ENABLED); 来强制改成可用,但是我觉得这样“暴力”的办法很不舒服,MFC既然有 UPDATE_COMMAND_UI来管理菜单,应该对应的措施把。to:Mackz
thank you
和你一样是强制菜单显示出来AfxGetMainWnd()->GetMenu()->EnableMenuItem(ID_OPERATION,MF_BYCOMMAND ¦MF_ENABLED); 但是在我们的界面上的菜单栏还是灰色的,这时我们必须
将鼠标放到用的菜单栏上才显示为活动的(黑色),其实这时再在强制显示出的代码后面加上AfxGetMainWnd()->DrawMenuBar();就可以了,也就是让窗体刷新一下。我也是个菜鸟,说的不好,别骂我。