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;
    }

  • 相关阅读:
    拉格朗日乘子基本概念
    "模式识别与机器学习"读书笔记——2.3(2)
    [raw]人工智能方向调查
    Android !No Launcher activity found!错误
    [raw]ubuntu在当前目录右键打开终端
    Android, 读取大型文件报错
    Blueman Ubuntu的蓝牙管理器
    VMware下Ubuntu8.04 方向键失效的解决方法
    无线中间人攻击初探
    【经验】短接 Flash 解决二次量产金士顿 DTI G2 4GB U盘(群联PS225139)问题
  • 原文地址:https://www.cnblogs.com/yanhuofenhuang/p/3469412.html
Copyright © 2011-2022 走看看