我在对话框上加了一个树型控件,用一个按钮对树进行添加节点。
pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE)
m_hItemCurr = pTree->GetSelectedItem();
m_hItemBook=pTree->InsertItem(str,0,0,m_hItemCurr,m_hItemBook);
大概就是这样添加的。
我的问题:
1.我用VC中的资源编辑器在树控件的属性中把“编辑卷标”勾上后,每个插入的节点都可以编辑名字了。但无法保存。比如插入时默认名字是“分类”。改成“计算机”。但选择别的节点时又会变回“分类”。
2.再有就是不知道怎么保存这个动态添加的树。能让程序下次启动时重新载入上次已经建立的树。
3.我想让每个节点都保存一个文件的路径,就是类似点击节点后打开一个文件这样的功能。看到有的朋友说使用数据库。不知道有没有不用数据库的方法。一个节点只能存储额外的4字节的信息吗?
对MFC还很不了解。找了很多关于树型控件的资料但大多都没涉及到保存。希望高手能多给点详细的解决思路
6 个解决方案
#1
自顶一下吧
#3
我有实例
很简单的
已经学会了
很简单的
已经学会了
#4
CStringArray csa;
GetDirectFile(UPDATADATE_DIRECT,csa);
static CImageList m_Image;
m_Image.Create(16,16,ILC_COLOR|ILC_MASK,3,1);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_Mend.SetImageList(&m_Image,TVSIL_NORMAL);
DWORD dwStyles=GetWindowLong(m_Mend.m_hWnd,GWL_STYLE);
dwStyles=dwStyles|TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;;
SetWindowLong(m_Mend.m_hWnd,GWL_STYLE,dwStyles);
HTREEITEM hRoot,hCur;
TV_INSERTSTRUCT ti;
ti.hParent=TVI_ROOT;
ti.hInsertAfter=TVI_LAST;
ti.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
ti.item.lParam=0;
ti.item.iImage=0;
ti.item.iSelectedImage=1;
ti.item.pszText="更新文件列表";
hRoot=m_Mend.InsertItem(&ti);
for(int i=2;i<csa.GetSize();i++)
{
CString psz;
psz=csa.GetAt(i);
ti.hParent=hRoot;
ti.item.iImage=2;
ti.item.iSelectedImage=2;
ti.item.pszText=psz.GetBuffer(0);
ti.item.lParam=i-1;
hCur=m_Mend.InsertItem(&ti);
}
GetDirectFile(UPDATADATE_DIRECT,csa);
static CImageList m_Image;
m_Image.Create(16,16,ILC_COLOR|ILC_MASK,3,1);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_Mend.SetImageList(&m_Image,TVSIL_NORMAL);
DWORD dwStyles=GetWindowLong(m_Mend.m_hWnd,GWL_STYLE);
dwStyles=dwStyles|TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;;
SetWindowLong(m_Mend.m_hWnd,GWL_STYLE,dwStyles);
HTREEITEM hRoot,hCur;
TV_INSERTSTRUCT ti;
ti.hParent=TVI_ROOT;
ti.hInsertAfter=TVI_LAST;
ti.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
ti.item.lParam=0;
ti.item.iImage=0;
ti.item.iSelectedImage=1;
ti.item.pszText="更新文件列表";
hRoot=m_Mend.InsertItem(&ti);
for(int i=2;i<csa.GetSize();i++)
{
CString psz;
psz=csa.GetAt(i);
ti.hParent=hRoot;
ti.item.iImage=2;
ti.item.iSelectedImage=2;
ti.item.pszText=psz.GetBuffer(0);
ti.item.lParam=i-1;
hCur=m_Mend.InsertItem(&ti);
}
#5
[img=http://s2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=a1609042088096e6bc23232587a2908aaaf78be4f474123f2c097fc7a7fbac3403003ad161d12db3eaad8e6fe90aac03c2f1bb720c1a0f551bd96a2f3659a2602cf3f00f058bba69aa28c30ca70d17e9e6a4ea51][/img]
效果如上
效果如上
#6
这位朋友能和你交流一下吗?想具体请教你一下。能留下个联系方式吗
#1
自顶一下吧
#2
#3
我有实例
很简单的
已经学会了
很简单的
已经学会了
#4
CStringArray csa;
GetDirectFile(UPDATADATE_DIRECT,csa);
static CImageList m_Image;
m_Image.Create(16,16,ILC_COLOR|ILC_MASK,3,1);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_Mend.SetImageList(&m_Image,TVSIL_NORMAL);
DWORD dwStyles=GetWindowLong(m_Mend.m_hWnd,GWL_STYLE);
dwStyles=dwStyles|TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;;
SetWindowLong(m_Mend.m_hWnd,GWL_STYLE,dwStyles);
HTREEITEM hRoot,hCur;
TV_INSERTSTRUCT ti;
ti.hParent=TVI_ROOT;
ti.hInsertAfter=TVI_LAST;
ti.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
ti.item.lParam=0;
ti.item.iImage=0;
ti.item.iSelectedImage=1;
ti.item.pszText="更新文件列表";
hRoot=m_Mend.InsertItem(&ti);
for(int i=2;i<csa.GetSize();i++)
{
CString psz;
psz=csa.GetAt(i);
ti.hParent=hRoot;
ti.item.iImage=2;
ti.item.iSelectedImage=2;
ti.item.pszText=psz.GetBuffer(0);
ti.item.lParam=i-1;
hCur=m_Mend.InsertItem(&ti);
}
GetDirectFile(UPDATADATE_DIRECT,csa);
static CImageList m_Image;
m_Image.Create(16,16,ILC_COLOR|ILC_MASK,3,1);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_Mend.SetImageList(&m_Image,TVSIL_NORMAL);
DWORD dwStyles=GetWindowLong(m_Mend.m_hWnd,GWL_STYLE);
dwStyles=dwStyles|TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;;
SetWindowLong(m_Mend.m_hWnd,GWL_STYLE,dwStyles);
HTREEITEM hRoot,hCur;
TV_INSERTSTRUCT ti;
ti.hParent=TVI_ROOT;
ti.hInsertAfter=TVI_LAST;
ti.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
ti.item.lParam=0;
ti.item.iImage=0;
ti.item.iSelectedImage=1;
ti.item.pszText="更新文件列表";
hRoot=m_Mend.InsertItem(&ti);
for(int i=2;i<csa.GetSize();i++)
{
CString psz;
psz=csa.GetAt(i);
ti.hParent=hRoot;
ti.item.iImage=2;
ti.item.iSelectedImage=2;
ti.item.pszText=psz.GetBuffer(0);
ti.item.lParam=i-1;
hCur=m_Mend.InsertItem(&ti);
}
#5
[img=http://s2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=a1609042088096e6bc23232587a2908aaaf78be4f474123f2c097fc7a7fbac3403003ad161d12db3eaad8e6fe90aac03c2f1bb720c1a0f551bd96a2f3659a2602cf3f00f058bba69aa28c30ca70d17e9e6a4ea51][/img]
效果如上
效果如上
#6
这位朋友能和你交流一下吗?想具体请教你一下。能留下个联系方式吗