树控件里选中,右键,弹出快捷菜单
怎么做?

解决方案 »

  1.   

    响应NM_RCLICK
    CMenu Menu;
    POINT point;
    GetCursorPos(&point);
    Menu.LoadMenu(IDR_GTMENU);
    Menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,point.x,point.y,this);
      

  2.   

    CMenu menu;
    menu.LoadMenu(IDR_PopMenu);
    CMenu* pMenu;
    pMenu=menu.GetSubMenu(0);
    pMenu->Track.....
    pMenu->DestroyMenu();
      

  3.   

    对了,
    GetCursorPos(&point)取得点后不能直接使用否则与我们想的不一样。
    ClientToScreen()
    ScreenToClient(),不知道是那个函数你试一下,假如你看不到菜单有可能是位置的问题,马上用另外一个函数即可
      

  4.   

    用TreeCtrl的成员函数HitTest得到当前点击的是那一项,然后根椐情况进行显示不同的菜单 POINT CurPoint;
    HTREEITEM CurItem;

    GetCursorPos(&CurPoint);
    m_wndGameTree.ScreenToClient(&CurPoint);
    CurItem=m_wndGameTree.HitTest(CurPoint);
    if(CurItem){
    m_wndGameTree.SelectItem(CurItem);
    CMenu GTMenu;
    CMenu* pPopupMenu;
    POINT point;
    GetCursorPos(&point);

    GTMenu.LoadMenu(IDR_GTMENU);
    pPopupMenu=GTMenu.GetSubMenu(0);

    pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,point.x,point.y,this);

    }
    以上是我以前用到的代码...仅供参考
      

  5.   

    你可以用GetItemText或GetItemData来判断CurItem的值呀...
      

  6.   

    在右键响应的函数里
             // 选中某项
    LPPOINT  m_rPoint = new POINT() ;
    GetCursorPos(m_rPoint);
    CRect recttree;
    m_chatertree.GetWindowRect(&recttree);
    CPoint m_in;
    m_in.x=m_rPoint->x-recttree.left;
    m_in.y=m_rPoint->y-recttree.top;
    delete m_rPoint;
    HTREEITEM  m_rItem;
             m_rItem=m_chatertree.HitTest(m_in);
    m_chatertree.SetItemState(m_rItem,TVIS_SELECTED,NULL);         //检查是否选正确
    if(m_rItem == NULL || m_rItem == TVI_ROOT)
    {
    return;
    }         // 弹出菜单
    LPPOINT lpoint=new tagPOINT;
             ::GetCursorPos(lpoint);//得到鼠标位置
             CMenu menu;
             menu.CreatePopupMenu();//声明一个弹出式菜单         
             menu.AppendMenu(MF_STRING,WM_DELETE, "删除");说明:WM_DELETE是自定义的消息,要添加响应函数
      

  7.   

    楼主结贴吧...
    我还差166就进top100了..
      

  8.   

    为什么我的GetSubMenu(0)的返回值为空