我的工程中有一个CTreeView,想让用户可以编辑节点的名称。
    标准方式(单击显示CEdit),但现在用户想用右键菜单
选择“编辑”后,再显示CEdit,请问该怎么做?
    (我试着在CTreeView中向父类发beginedit消息,却不知道
树控件的ID)
     请大家帮帮忙啦。

解决方案 »

  1.   

    我的工程中有一个CTreeView,想让用户可以编辑节点的名称。
        以前用标准方式(单击显示CEdit),但现在用户想用右键菜单
    选择“编辑”后,再显示CEdit,请问该怎么做?
        (我试着在CTreeView中向父类发beginedit消息,却不知道
    树控件的ID)
         请大家帮帮忙啦。
      

  2.   

    1.在Tree的Style中选Edit label,2.编辑节点用CEdit* EditLabel(HTREEITEM hItem);// The pointer to my tree control.
    extern CTreeCtrl* pmyTreeCtrl;// Make sure the focus is set to the tree control.
    pmyTreeCtrl->SetFocus();// Show the edit control on the label of the root item.
    CEdit* pmyEdit = pmyTreeCtrl->EditLabel(pmyTreeCtrl->GetRootItem());
    ASSERT(pmyEdit != NULL);
    3.响应TVN_ENDLABELEDIT。void CXXXDlg::OnNotifyTreeEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;

    if(!pTVDispInfo) return; TVITEM* ptvItem = &pTVDispInfo->item; if(ptvItem->mask & TVIF_TEXT)
    { } *pResult = 0;
    }
      

  3.   

    不需要太复杂的方法:::SendMessage(GetParent()->GetSafeHwnd(), WM_BEGINEDIT, NULL, NULL);就可以了ps 楼上的朋友,是来蹭分的吧?拷贝东西谁不会?关键是下次拷些有用的过来,知道吗?
      

  4.   

    to fzd999(花差花差) WM_BEGINEDIT 我从来没有用过, 在msdn中也没有查到。怎么使用,还望指教。我的代码确实是拷贝的,但是从我自己写的程序中拷贝的,因为以前实现过类似功能。我发现你来了时间不长,但长分很快,我也很是佩服。我希望大家一起在csdn这个健康的环境中共同提高。
      

  5.   

    to fzd999(花差花差) : WM_BEGINEDIT 没找到这个消息啊。to osborn(SEANX):你的方法很管用。我以前没有SetFocus,现在
    我正在调试,好像有时候得到的pmyEdit为空。如果解决不了再
    请教你。
                      希望有天能成为你那样的高手。