您的位置:首页 > 其它

MFC中tree control

2013-09-27 09:11 239 查看
一、添加节点:

HTREEITEM hitem=m_tree.InsertItem(_T("root"), NULL, NULL);

for(int i=0; i<4; i++)
{
HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);
}


HTREEITEM hitem=m_tree.InsertItem(_T("root"), NULL, NULL);//添加根节点root,root就是节点的标题

for(int i=0; i<4; i++)
{
HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);
}


for(int i=0; i<4; i++)

{

HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);

}

插入四个子节点,其父节点句柄为hitem,子节点的标题为subitem

m_tree.ModifyStyle(NULL, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);//在初始化函数BOOL CTree_ctlDlg::OnInitDialog()中,设定控件树的样式

二、删除节点:

HTREEITEM hitem;
hitem=m_tree.GetSelectedItem();//获取选中项节点的句柄
//m_tree.SelectItem(hitem);
CString strname;
strname=m_tree.GetItemText(hitem);//获取该句柄节点的标题
if(hitem != NULL)//若获取句柄成功,弹出提示框
{
::MessageBoxA(NULL, (LPCSTR)("selected"), (LPCSTR)("Tips"), MB_OK);
}
m_tree.DeleteItem(hitem);//删除该节点


三、为选中项添加子节点:

HTREEITEM hitem;
hitem=m_tree.GetSelectedItem();//获取选中节点的句柄
HTREEITEM subitem=NULL;//定义一个新句柄并初始化,用来保存新增子节点的句柄
subitem=m_tree.InsertItem(_T("sub+1"), NULL, NULL, hitem);//为hitem的节点添加子节点,标题为sub+1


四、修改MFC生成的exe文件的图标

最终生成的可执行文件的图标已经在构造函数中自动指定。要想改变图标,需要在构造函数中修改以下语句:

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//指定的图标

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

五、树形控件节点添加图标

树节点需要图标时, 必须先创建一个CImageList类的对象(在.h中创建public类型), 并为其添加多个图像组成

一个图像序列,然后调用SetImageList函数为树形控件设置图像序列,再用InsetItem函数插入节点时传入所需图像

在图像序列中的索引即可。

例子如下所示:

HICON hicon[3];//图标句柄数组
HTREEITEM hRoot;
HTREEITEM hCataItem;
HTREEITEM hArtItem;

hicon[0]=theApp.LoadIconW(IDI_WEB_ICON);//加载三个图标,并将它们的句柄保存到数组中
hicon[1]=theApp.LoadIconW(IDI_CATALOG_ICON);
hicon[2]=theApp.LoadIconW(IDI_ARTICLE_ICON);

//CImageList m_imageList;
m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);//创建图像序列对象

for(int i=0; i<3;i++)
{
m_imageList.Add(hicon[i]);//将三个图标添加到图像序列
}

m_webtree.SetImageList(&m_imageList, TVSIL_NORMAL);//为树形控件设置图像序列

hRoot=m_webtree.InsertItem(_T("鸡啄米"), 0, 0);//插入根节点,标题为鸡啄米,第二个参数0表示根节点的图标在图像列表中的索引,
[/code]
//第三个参数0表示根节点在选中的图标在图像列表中的索引


InsetItem函数的原型为:
HTREEITEM InsetItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsetAfter=TVI_LAST);

参数lpszItem为新节点的标签文本字符串的指针, 参数nImage为新节点的图标在树形控件图像序列中的索引

参数nSelectedImage为新节点被选中时的图标在图像列表中的索引,参数hParent为插入节点的父节点的句柄,

参数hInsertAfter为新节点的前一个节点的句柄,即新节点将被插入到hInsertAfter节点之后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: