菜单的状态为什么不能更新? 我是用对话框,上面加了一个List控件,当鼠标右击时,弹出菜单,我使用的是TrackPopupMenu函数弹出的。我想让某个菜单项在不同的情况下显示不同的状态,但是我是用Enable函数,菜单项却没有改变,请问这是怎么会事,我该怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 popmenu.EnableMenuItem(ID_CUT, MF_BYCOMMAND|MF_GRAYED); 下面的链接是微软的知识库文章,解决了这个问题http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q242/5/77.asp&NoWebContent=1 确实是不好使啊就是这样popmenu.EnableMenuItem(ID_CUT, MF_BYCOMMAND|MF_GRAYED);也不行的popmenu.EnableMenuItem(ID_CUT, MF_BYCOMMAND|MF_DISABLED);也不行啊 如果你每次都重新LoadMenu,要用变量记录Enable状态,并在LoadMenu之后,PopupMenu之前,设置状态如果只在初始化时LoadMenu一次,应该没问题 对于对话框的菜单响应ON_UPDATE_COMMAND_UI消息,请添加下面代码:void CxxxDlg::UpdateMenu(CMenu *pMenu){ CCmdUI cmdUI; cmdUI.m_nIndexMax = pMenu->GetMenuItemCount(); for(UINT n = 0; n < cmdUI.m_nIndexMax; ++n) { CMenu* pSubMenu = pMenu->GetSubMenu(n); if(pSubMenu == NULL) { cmdUI.m_nIndex = n; cmdUI.m_nID = pMenu->GetMenuItemID(n); cmdUI.m_pMenu = pMenu; cmdUI.DoUpdate(this, FALSE); } else { UpdateMenu(pSubMenu); } }}afx void OnInitMenuPopup(CMenu *pPopupMenu, UINT, BOOL);ON_WM_INITMENUPOPUP()void CxxxDlg::OnInitMenuPoup(CMenu *pPopupMenu, UINT, BOOL){UpdateMenu(pPopupMenu);} 函数定义问题 高分求教求教在VC单文档程序(SDI)中显示摄像头采集到的视频的方法 求助CListCtrl 如何设定每一行的高度 一个一定要请教的问题 一个简单的问题! 关于VC程序编译的问题。 急!!在线等待!怎样能够将常用的非bmp图片比较快的读取到内存并按指定长宽像素放到CBitmap或HBITMAP变量中? 为什么会有内存泄漏? mfc是不是过时了? 一个关于HWND的小问题!谢谢! ★★最近在网上看到用以下代码来连接数据库,但连接后又如何操作数据库呢?如读,写等..... ListCtrl表格的形式的问题,再线等,急!
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q242/5/77.asp&NoWebContent=1
就是这样popmenu.EnableMenuItem(ID_CUT, MF_BYCOMMAND|MF_GRAYED);
也不行的
popmenu.EnableMenuItem(ID_CUT, MF_BYCOMMAND|MF_DISABLED);也不行啊
要用变量记录Enable状态,并在LoadMenu之后,PopupMenu之前,设置状态如果只在初始化时LoadMenu一次,应该没问题
void CxxxDlg::UpdateMenu(CMenu *pMenu)
{
CCmdUI cmdUI;
cmdUI.m_nIndexMax = pMenu->GetMenuItemCount();
for(UINT n = 0; n < cmdUI.m_nIndexMax; ++n)
{
CMenu* pSubMenu = pMenu->GetSubMenu(n);
if(pSubMenu == NULL)
{
cmdUI.m_nIndex = n;
cmdUI.m_nID = pMenu->GetMenuItemID(n);
cmdUI.m_pMenu = pMenu;
cmdUI.DoUpdate(this, FALSE);
}
else
{
UpdateMenu(pSubMenu);
}
}
}afx void OnInitMenuPopup(CMenu *pPopupMenu, UINT, BOOL);ON_WM_INITMENUPOPUP()void CxxxDlg::OnInitMenuPoup(CMenu *pPopupMenu, UINT, BOOL)
{
UpdateMenu(pPopupMenu);
}