重写这两个函数
void CXXDlg::OnTvnBeginlabeleditTree(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
m_objEdit=TreeView_GetEditControl(m_objTree);
*pResult = 0;
}
void CXXDlg::OnTvnEndlabeleditTree(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
TCHAR Text[256];
::GetWindowTextW(m_objEdit, Text, 256);
m_objTree.SetItemText(m_objTree.GetSelectedItem(),Text);
*pResult = 0;
}
通过CTreeCtrl::EditLabel来启动编辑窗口
BOOL CXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_F2)//按F2可以开始修改节点标签
{
m_objTree.EditLabel(m_objTree.GetSelectedItem());
return TRUE;
}
if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
{
UINT nID = GetFocus()->GetDlgCtrlID();
NextDlgCtrl();
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}