感谢。1。怎么对在DialogBase的TreeView控件里
2。“动态”删除 添加结点;
3。怎样在Tree控件里右键弹出菜单。
有什么类或者例子?

解决方案 »

  1.   

    首先要新建一个类MyTree,派生自CTreeCtrl
    //编辑TreeCtrl的标题
    void MyTree::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here

    *pResult = 0;
    }void MyTree::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here

    *pResult = TRUE;
    }//响应鼠标右键的菜单void MyTree::OnContextMenu(CWnd* pWnd, CPoint point) 
    {
        UINT uFlags;
        CPoint ptTree = point;
        this->ScreenToClient(&ptTree);
        HTREEITEM htItem = this->HitTest(ptTree, &uFlags);    if ((htItem != NULL) && (uFlags & TVHT_ONITEM)) {
    CMenu menu;
    menu.LoadMenu(IDR_TREE_POP);
    menu.GetSubMenu(0)
    ->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
    point.x, point.y,this);
    this->SetItemState(htItem, 0, TVIS_DROPHILITED);
            } if (m_pOldSel != NULL) {
    this->Select(m_pOldSel, TVGN_DROPHILITE);
    m_pOldSel = NULL;
            }
    }void MyTree::OnRButtonDown(UINT nFlags, CPoint point) 
    {
    SetFocus();
                   UINT uFlags;
    HTREEITEM htItem = this->HitTest(point, &uFlags);
    this->SelectItem(htItem);
    }//插入Item
    void MyTree::OnTreeInsert() 
    {
    HTREEITEM hItem=GetSelectedItem( ), hcItem=InsertItem (_T("New Item"),2,1, hItem);


    Expand(hItem, TVE_EXPAND);
    SelectItem(hcItem);
    }
      

  2.   

    请问lxas(八云) ,为什么只能“双击右键”才能弹出菜单??  有什么办法可以只是单击右键?谢谢!
      

  3.   

    在OnRButtonDown函数中不要调用基类CTreeCtrl的OnRButtonDown函数就可以不用双击了。:)