zoukankan      html  css  js  c++  java
  • MFC listcontrol添加右键菜单

    //listCtrl追加右键菜单

    //头文件声明
    int displayContextMenu(CPoint SelectPoint, int iFlag);
    enum ListCmdID
    {
     ID_MENU_ENUM_FIRST = WM_USER+10,
     ID_MENU_LISTITEM_DEL_USER,
     ID_MENU_LISTITEM_EDIT_USER,
     ID_MAX_LIST_CMD
    };

    //消息映射

    ON_COMMAND_RANGE(ID_MENU_ENUM_FIRST, ID_MAX_LIST_CMD-1, onContextCmd)

    //函数定义

    void CMylistView::onContextCmd( UINT ID )
    {
     CListCtrl &lc = GetListCtrl();
     switch( ID )
     {
     case ID_MENU_1:
      //操作
      break;
     case ID_MENU_2:
      //操作;
      break;
     case ID_MENU_3:
      //操作;
      break;
     }
    }

    void CMylistView::OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult)
    {
     CListCtrl &lc = GetListCtrl();

     UINT flags;
     CPoint SelectPoint;
     GetCursorPos(&SelectPoint);
     lc.ScreenToClient(&SelectPoint);
     
     int iLine = lc.HitTest( SelectPoint, &flags );
     int iFlag = 0;
     lc.ClientToScreen(&SelectPoint);

     //根据实际情况把菜单格式分类iFlag
     displayContextMenu( SelectPoint,iFlag );
     *pResult = 0;
    }

    int CMylistView::displayContextMenu(CPoint SelectPoint, WORD wShowFlag )
    {
     CListCtrl &lc = GetListCtrl();
     CPoint pt( SelectPoint );
     lc.ScreenToClient(&pt);
     UINT flags;
     CMenu menu;
     int iLine = lc.HitTest( pt, &flags);

     //check click on item or not
     bool bOnItem = (flags & TVHT_ONITEM) != 0;   
     VERIFY(menu.CreatePopupMenu());

     VERIFY(menu.AppendMenu(MF_STRING, ID_MENU_LISTITEM_ADD, _T("例如")));
     VERIFY(menu.AppendMenu(MF_STRING, ID_MENU_TREEITEM_DEL,  _T("例如")));
     VERIFY(menu.AppendMenu(MF_SEPARATOR));
     VERIFY(menu.AppendMenu(MF_STRING, ID_MENU_TREEITEM_EDIT,  _T("例如")));

     //不可用并且变灰
     menu.EnableMenuItem( ID_MENU_LISTITEM_ADD, MF_GRAYED | MF_DISABLED );
     menu.EnableMenuItem( ID_MENU_TREEITEM_DEL, MF_GRAYED | MF_DISABLED );
     menu.EnableMenuItem( ID_MENU_TREEITEM_EDIT, MF_GRAYED | MF_DISABLED );
     
     if( wShowFlag & 0x04 )
     {
      menu.EnableMenuItem( ID_MENU_LISTITEM_ADD, MF_ENABLED );
     }
     if( wShowFlag & 0x02 )
     {
      menu.EnableMenuItem( ID_MENU_TREEITEM_DEL, MF_ENABLED );
     }
     if( wShowFlag & 0x01 )
     {
      menu.EnableMenuItem( ID_MENU_TREEITEM_EDIT, MF_ENABLED );
     }
     if(menu.GetMenuItemCount() > 0 && bOnItem )
     {
      menu.TrackPopupMenu(  TPM_RIGHTBUTTON , SelectPoint.x, SelectPoint.y, this);
     }
     return 0;
    }

  • 相关阅读:
    SQLalchemy 字段类型
    爬虫学习
    Linux了解一下
    django-rest-framework
    vue相关理论知识
    Django认证系统
    Form组件
    JS之AJAX
    Django之中间件
    Django之ORM
  • 原文地址:https://www.cnblogs.com/yanhuofenhuang/p/3469412.html
Copyright © 2011-2022 走看看