文件管理右键重命名

在这里插入图片描述
CTreeCtrl树控件在很多时候都可以用得到,

首先加上树形控件的两个通知消息:
TVN_BEGINLABELEDIT,
TVN_ENDLABELEDIT,在响应函数中添加这两个消息的响应函数

void CFileView::OnTvnBeginLabelEditTree(NMHDR* pNMHDR, LRESULT* pResult)
{
     
   LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
  TV_ITEM* ptvItem = &pTVDispInfo->item;
 
// 获取修改后的名称
CString LabelStr = ptvItem->pszText;
 
// 对新输入的名称作一些限制
if(LabelStr == "")
{
     
   return;
}
 
// 设置新名称
HTREEITEM curItem = ptvItem->hitem;
if(curItem)
{
     
//treeCtrl 是CTreeCtrl的一个对象 
   treeCtrl.SetItemText(curItem, LabelStr);
}
}

添加一个“重命名”的菜单或者按钮,在其响应函数中加上下面几句代码,就可以实现重命名了

void CFileView::OnTreeRename()
{
     
    HTREEITEM hSltItem = treeCtrl.GetFirstSelectedItem();
   if(hSltItem)
{
     
   CEdit* pLabelEdit = treeCtrl.EditLabel(hSltItem);
   ASSERT(pLabelEdit != NULL);
}
}

还需要注意一点,需要将树控件的树形设置能够编辑,就是要有TVS_EDITLABELS这个属性

// 创建视图
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_EDITLABELS;

你可能感兴趣的:(MFC)