CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.EnableMenuItem(ID_FILEOP,MF_GRAYED);//这样写可以使有菜单id的项变灰,可是弹出菜单却没有id,该如何使一个弹出菜单变灰呢?比如那个菜单的题目是"删除文件"。
CPoint point;
GetCursorPos(&point);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
menu.LoadMenu(IDR_MENU1);
menu.EnableMenuItem(ID_FILEOP,MF_GRAYED);//这样写可以使有菜单id的项变灰,可是弹出菜单却没有id,该如何使一个弹出菜单变灰呢?比如那个菜单的题目是"删除文件"。
CPoint point;
GetCursorPos(&point);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
ON_UPDATE_COMMAND_UI(ID, OnUpdate)OnUpdate()
{
pCmdUI->Enable( FALSE);//参数为FALSE时菜单不可用,变灰
}
有一个弹出菜单,比如第一项是“打开”,第二项是“删除”,在第二项“删除”菜单里我又选中了“弹出”状态,加入了“删除一个文件”“删除多个文件”。现在我想在一个程序里弹出这个菜单时,让“删除”这一项不可用,“打开”的可以做到禁用,因为它不是弹出状态,有ID,可以menu.EnableMenuItem(ID_FILEOPEN,MF_GRAYED);但是“删除”不一样,因为在设计菜单时,只要选中“弹出”状态,这个菜单就没有ID了,该怎么做呢?上边朋友说的,menu.EnableMenuItem(1,MF_GRAYED);也不行!
希望大家帮助下,菜鸟问题一个,谢谢
MF_BYPOSITION是根据位置来的
CMenu menu;
menu.LoadMenu(IDR_MENU1);//这个IDR_MENU1是我自己通过资源编辑器新建的
menu.EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION);
CPoint point;
GetCursorPos(&point);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
那个弹出菜单就没有ID啊,你说的那个也不成啊!~~
用menu.GetSubMenu(0)->EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION);// menu的第一个菜单项的第二个子项变灰
若要更里层的菜单项变灰,可不断用menu.GetSubMenu()->GetSubMenu()->...->EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION);
万分感谢!再次感谢!
问题解决了!!