RT. 谢谢

解决方案 »

  1.   

    CTreeCtrl的右键响应消息NM_RCLICK的处理函数中:POINT   point; 
    GetCursorPos(&point); 
    youtreectrl.ScreenToClient(&point); CMenu menu;
    menu.LoadMenu(IDR_YOUR_MENU);
    CMenu *pPopUp=menu.GetSubMenu(0);
    pPopUp->TrackPopupMenu(TPM_HORIZONTAL,point.x,point.y,this);
      

  2.   

    //MFC对话框工程,添加一个菜单
    //该菜单的ID为IDR_MENU1
    void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult)
    {
    CMenu menu;
    BOOL bRet = menu.LoadMenu(IDR_MENU1);
    CMenu *pM = menu.GetSubMenu(0); //pM值为空CPoint pt;
    GetCursorPos(&pt);
    pM->TrackPopUpMenu(TPM_LEFTALIGN, pt.x, pt.y, this);*PResult = 0;
    }
      

  3.   

    CMenu *pM = menu.GetSubMenu(0); //pM值为空
      

  4.   

    menu.LoadMenu(IDR_MENU1);
    你要确定你的资源里有IDR_MENU1这个Menu
      

  5.   

    =================
    有的,通过Insert-->Resource-->Menu插入一个菜单BOOL bRet = menu.LoadMenu(IDR_MENU1);
    返回TRUE但是 CMenu *pM = menu.GetSubMenu(0); //pM值为空
      

  6.   

    你插入的菜单里有创建菜单项吗?
    如果没创建菜单项,GetSubMenu就会返回null了
      

  7.   

    Insert-->Resource-->Menu-->New默认生成一个Menu资源,IDR_Menu1添加菜单,系统自动生成默认的ID
    ID_MENUITEM32722和ID_MENUITEM32723File
    ---Open 没有选择类生成向导。
      

  8.   

    #define ID_TEST1 1001
    #define ID_TEST2 1002
    #define ID_TEST3 1003CTreeCTrl m_tree; //给Tree Control控件绑定一个变量//初始化
    BOOL CxxDlg::OnInitDialog()
    {
    m_tree.ModifyStyle(NULL, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);
    HTREEITEM hItem = m_tree.Insert("root", NULL, NULL);
    int i,j;
    CString strtmp;for (i=0; i<4; i++)
    {
    HTREEITEM hSubItem = m_tree.Insert("item", NULL, NULL, hItem);
    for (j = 0; j <3; j++)
    {
    strtmp.Format("%d %d",  i, j);
    m_tree.Insert(strtmp, NULL, NULL, hSubItem);
    }
    }
    }//左键单击 Tree Control 控件
    void CxxDlg::OnSelectedTree1(NMHDR * pNMHDR, LRESULT * PResult)
    {
    //获取已选择的节点
    NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;
    HTREEITEM hItem = m_tree.GetSelectedItem();
    CString strText = m_tree.GetItemText(hItem);
    MessageBox(strText);*PResult = 0;
    }//右键单击 Tree Control 控件
    void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult)
    {
    //动态加载菜单
    CMenu menuSetPara;
    menuSetPara.CreatePopupMenu();
    menuSetPara.AppendMenu(MF_STRING, ID_TEST1, "新增");
    menuSetPara.AppendMenu(MF_STRING, ID_TEST2, "修改");
    menuSetPara.AppendMenu(MF_STRING, ID_TEST3, "删除");CPoint pt;
    GetCursorPos(&pt);
    menuSetPara.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
    menuSetPara.DestroyMenu();//获取已选择的节点
    NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;
    HTREEITEM hItem = m_tree.GetSelectedItem();
    CString strText = m_tree.GetItemText(hItem);
    MessageBox(strText);//获取选择的菜单项目(新增/修改/删除)*PResult = 0;
    }
      

  9.   

    可以用:
    void CLeftView::OnContextMenu(CWnd* pWnd, CPoint point) 
      

  10.   

    和一般的右键菜单实现没有本质区别
    http://apps.hi.baidu.com/share/detail/33188606