将变灰的菜单项激活,其实现方法是通过调用 CMenu::EnableMenuItem函数来实现,
该函数用法如下:
UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable);
其中参数“nIDEnableItem”为菜单项的ID号,用于指定被操作的菜单项;参数
“nEnable”为动作参数,用于说明要对被指定的菜单进行何种操作,其取值为
MF_DISABLED、MF_ENABLED、或MF_GRAYED 与 MF_BYCOMMAND 或MF_BYPOSITION的
“或运算”,其各取值常量的含义为:
MF_DISABLED:表示用命令ID拾取菜单项,为缺省
MF_ENABLED:在当前菜单中用基于零的偏移量来拾取菜单项。
MF_GRAYED:用户对菜单不可用
MF_BYCOMMAND:用户对菜单可用
MF_BYPOSITION:用户对菜单不可用,并且菜单以灰色显示
从上面的介绍可以知道,只要在调用EnableMenuItem函数时,将其参数"nEnable"
的值设置为MF_BYCOMMAND|MF_ENABLED,即可将指定的菜单项激活。
程序实现如下:
void CMyView::OnRButtonDown(UINT nFlags,CPoint point)
{
CScrollView::OnRButtonDown(nFlags,point);
CMenu* menu,*popup; menu=new CMenu();
//装入菜单资源
menu->LoadMenu(IDR_POPUPMENU);
popup=menu->GetSubMenu();
UINT nEnable;
nEnable=MF_BYCOMMAND|MF_GRAYED;
if(your test){
nEnable=MF_BYCOMMAND|MF_ENABLED;
}
pupup->EnableMenuItem(ID_YOUR_ID,nEnable);
//显示菜单
ClientToScreen(&point); popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
delete menu;
}