CContextMenuManager菜单使用(转)

 今天看到论坛上有人在问上下文菜单管理器类CContextMenuManager的问题,记得做过,但是忘了,忙里偷闲记下来,免得下次又忘了...

       CContextMenuManager和CMenu同样是继承于CObject,请看这里。不过菜单画得比CMenu好看多了,因此很多人愿意使用它。如何使用大家MSDN就是了。

       但是,假如你觉得不想创建一个CContextMenuManager类来管理你的菜单。其实,还有一个方法:CWinAppEx还有这么一个方法,CContextMenuManager类型,你想增加菜单的话,

theApp.GetContextMenuManager()->AddMenu(L"Menu", IDR_MENU1); 

 
 

       其实就是使用CContextMenuManager的方法了。假如你的菜单还没有初始化,还要调用CWinApp::InitContextMenuManager方法进行初始化。

       在使用这个菜单的时候我遇到一个问题,就是当想要把菜单某项变灰。一开始我用以前像CMenu那样的方法去解决,但是不见效果。后来在MSDN论坛里边找到了解决方法。调用ON_UPDATE_COMMAND_UI宏来更新属性窗口的对象ID,使用OnUpdateContextFirst方法即可。

theApp.GetContextMenuManager()->AddMenu(L"Menu", IDR_MENU1);       

 头文件afx_msg void OnUpdateContextFirst(CCmdUI *pCmdUI);       

源文件 

 ON_UPDATE_COMMAND_UI(ID_VOD_MENU_UNPUBLISH, &CXXXDlg::OnUpdateContextFirst) 

void CXXXDlg::OnUpdateContextFirst(CCmdUI *pCmdUI)

  { pCmdUI->Enable( m_bEnable );// m_bEnable让你觉得菜单项是否Disabled 

  }

假如你想Disabled某项   

m_bEnable=FALSE;   

HMENU hMenu=theApp.GetContextMenuManager()->GetMenuById(IDR_MENU1);   

EnableMenuItem( hMenu, 1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);   

theApp.GetContextMenuManager()->ShowPopupMenu(IDR_MENU1, point.x, point.y, this, TRUE); 

OK,其实就这么一个小问题。CContextMenuManager菜单效果差强人意,遇到问题只要你肯搜,大多数还是能够解决的。

转载于:https://www.cnblogs.com/myitm/archive/2011/08/15/2139143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值