如何使CTreeCtrl中的某项在编辑状态下,让修改的名称有效?
我已调用m_TreeCtrl->EditLabel(hItem),使hItem处于编辑状态下,我想修改hItem的名称,然后在失去编辑状态后,其名称为修改后的名称。 问题点数:20、回复次数:7Top
1 楼JetLuo(JetLuo)回复于 2006-03-03 12:03:50 得分 5
void CXXTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// Called at exit from Edit Mode
pTVDispInfo = (TV_DISPINFO *)pNMHDR;
if (pTVDispInfo->item.pszText != NULL)
{
pTVDispInfo->item.mask = TVIF_TEXT;
SetItem(&pTVDispInfo->item);
}
*pResult = 0;
}
Top
2 楼BombZhang(我当大哥很久了)回复于 2006-03-03 12:51:40 得分 5
void CTestDlg::OnEndlabeleditTreeschm(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString ssss;
m_Tree.GetEditControl()->GetWindowText(ssss);
HTREEITEM treeitem=m_Tree.GetSelectedItem();
m_Tree.SetItemText(treeitem,ssss);
*pResult = 0;
}Top
3 楼yameng(雅梦)回复于 2006-03-03 13:13:52 得分 2
编辑结束后,会发送LVN_ENDLABELEDIT通知的,所以你只要处理这个通知就可以了。Top
4 楼Mackz(在相互)回复于 2006-03-04 00:36:57 得分 2
void CTestDlg::OnEndlabeleditTreeschm(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 1;
}Top
5 楼zxphxh(天雨)回复于 2006-03-04 16:47:26 得分 0
我又有一个问题:就是在鼠标点击CTreeCtrl中的某项(Item)后,该项处于编辑状态,等待用户修改编辑,然后利用OnEndlabeledit响应把数据保存到文件中去。现在问题是,如果用户并没有修改,也即是项的名称并没有变化,也就不需要执行保存数据操作。如何判定项的名称失去编辑状态时,项的名称没有改变?Top
6 楼BombZhang(我当大哥很久了)回复于 2006-03-05 16:23:48 得分 5
void CTestDlg::OnEndlabeleditTreeschm(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString ssss,ssss2;
m_Tree.GetEditControl()->GetWindowText(ssss);//editlabel中的值
ssss2=m_Tree.GetItemText(m_Tree.GetSelectedItem());//树控件节点上的值
if(ssss==ssss2)
{
//说明项名称没变化
}
else
m_Tree.SetItemText(m_Tree.GetSelectedItem(),ssss);
*pResult = 0;
}
Top
7 楼daiybh()回复于 2006-03-05 16:32:03 得分 1
http://www.cppblog.com/daiybh/archive/2005/09/29/489.htmlTop




