MFC控件积累——CContextMenuManager控件

本文介绍了在MFC应用中如何使用CContextMenuManager控件来创建更美观的弹出菜单。相比CMenu,CContextMenuManager提供了更好的视觉效果。通过CWinAppEx::GetContextMenuManager()获取全局对象,并在CWinAppEx的生命周期内正确初始化和清理。必须在PreLoadState()中加载菜单资源,然后才能使用ShowPopupMenu()或TrackPopupMenu()。ShowPopupMenu和TrackPopupMenu的区别也在文中提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用VS2010或VS2008SP1提供的CMFCxxxx框架时,弹出菜单的调用发生了变化,但与之前使用CMenu产生弹出菜单相同的是都是响应窗口的WM_CONTEXTMENU消息中进行。

2.使用CContextMenuManager产生的弹出菜单比CMenu产生的弹出菜单漂亮。

3.不要继承或者手动实例化CContexMenuManager类,通过CWinAppEx::GetContextMenuManager()方法调用全局的CContextMenuManager对象,但使用要注意:(1)在CWinAppEx::InitInstance()中需要调用CWinAppEx::InitContextMenuManager()来初始化全局对象;(2)在CWinAppEx::ExitInstance()函数中会自动完成全局对象的清理,但如果是CWinApp::ExitInstance()未释放全局对象,就会造成内存泄露;(3)在加载菜单前需要在CWinAppEx::PreLoadState()函数中使用CContextMenuManager::AddMenu()提前加载菜单资源,之后才能调用ShowPopupMenu()或TrackPopupMenu()

4.对于ShowPopupMenu和TrackPopupMenu有如下区别:

  virtual BOOL ShowPopupMenu(
     UINT uiMenuResId,			//用资源ID进行加载,
     int x,
     int y,
     CWnd* pWndOwner,			
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值