请问怎样给TreeView控件中的结点重命名? 如题,要求不用MFC 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刚刚察看了一下MSDN,CreateWindow函数貌似只能创建如下窗体:BUTTON,COMBOBOX,EDIT,LISTBOX,MDICLIENT,RichEdit,RICHEDIT_CLASS,SCROLLBAR,STATIC里面没有树啊!请问如果不用MFC你的这个树是怎么创建的呢? TVITEM item; item.hItem = hItem; item.mask = TVIF_TEXT; item.pszText = "aaaaaaaaa"; SendMessage(hWndTree, TVM_SETITEM, 0, (LPARAM)&item); goodboyws(深夜不眠者):不是这样的,我的意思是选择重命名菜单后,像windows给文件重命名那样直接获取新命名重命名 HWND hEdit = ::SendMessage(hWndEdit, TVM_EDITLABEL, 0, (LPARAM)hItem); ......case WM_NOTIFY:{ LPNMTVDISPINFO pTVDispInfo = (LPNMTVDISPINFO)lParam; if (pTVDispInfo->hdr.code == TVN_ENDLABELEDIT) { //判断文本是否合法, 如果不是用在对话框里,直接return TRUE 或 FALSE if (pTVDispInfo->item.pszText...) SetWindowLong(hDlg, DWL_MSGRESULT, TRUE);//合法 else SetWindowLong(hDlg, DWL_MSGRESULT, FALSE); }} 谢谢goodboyws(深夜不眠者),我用了你给的代码,但是总是不能获取到新命名,pTVDispInfo->item.pszText总是为"",我的代码和你的差不多,也同样不能获取新命名,pszText也总是为""。请问这可能是什么原因造成的,我的代码如下:case WM_NOTIFY:{ HWND hwndEditCtrl; hwndEditCtrl = TreeView_GetEditControl( hTreeWnd ); switch(pnmh->code) { case TVN_ENDLABELEDIT: { TV_DISPINFO FAR * lpTVDisp = NULL; lpTVDisp = (TV_DISPINFO FAR *)lParam; if ( strcmp( lpTVDisp->item.pszText,"")==0) break; CallReNameFunc( hTreeWnd,lpTVDisp->item.pszText); } break; }} 如何在视频画面上用鼠标画矩形框 VC++中如何将一个CString字符串转化为数字?(该字符串由数字和特殊字符组成). 还是PostThreadMessage的问题 我VC++.NET的调试输出窗口不见了! winsock编程应包括些什么头文件和库? CPoint数组函数参数传递问题,在线啊,急!应该很简单 关于状态栏的问题(在线等) Socket问题,高手来看 请问用能些API函数组合能较好的锁住和释放一个全局数组? 关于用CDC打印的问题,大家快帮忙 请问如何在VC中添加一个派生自COject类的子类呢? 求落在任意多边形内的一点?
BUTTON,COMBOBOX,EDIT,LISTBOX,MDICLIENT,RichEdit,RICHEDIT_CLASS,SCROLLBAR,STATIC
里面没有树啊!请问如果不用MFC你的这个树是怎么创建的呢?
TVITEM item;
item.hItem = hItem;
item.mask = TVIF_TEXT;
item.pszText = "aaaaaaaaa";
SendMessage(hWndTree, TVM_SETITEM, 0, (LPARAM)&item);
不是这样的,我的意思是选择重命名菜单后,像windows给文件重命名那样直接获取新命名重命名
case WM_NOTIFY:
{
LPNMTVDISPINFO pTVDispInfo = (LPNMTVDISPINFO)lParam;
if (pTVDispInfo->hdr.code == TVN_ENDLABELEDIT)
{
//判断文本是否合法, 如果不是用在对话框里,直接return TRUE 或 FALSE
if (pTVDispInfo->item.pszText...)
SetWindowLong(hDlg, DWL_MSGRESULT, TRUE);//合法
else
SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);
}
}
{
HWND hwndEditCtrl;
hwndEditCtrl = TreeView_GetEditControl( hTreeWnd );
switch(pnmh->code)
{
case TVN_ENDLABELEDIT:
{
TV_DISPINFO FAR * lpTVDisp = NULL;
lpTVDisp = (TV_DISPINFO FAR *)lParam;
if ( strcmp( lpTVDisp->item.pszText,"")==0)
break;
CallReNameFunc( hTreeWnd,lpTVDisp->item.pszText);
}
break;
}
}