zoukankan      html  css  js  c++  java
  • 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菜单效果差强人意,遇到问题只要你肯搜,大多数还是能够解决的。

  • 相关阅读:
    Django--form验证及错误处理
    Django--form保存用户输入内容
    Django--static静态文件引用
    Django--ajax
    Django--form基础
    Django--cookie&session
    Django--缓存
    Django--中间件
    oracle——session
    oracle——DDL
  • 原文地址:https://www.cnblogs.com/myitm/p/2139143.html
Copyright © 2011-2022 走看看