首先是头文件,内容如下:

#include <tchar.h>
#include "..\CommonFiles\CmnHdr.h"
#include <Windows.h>
#include <WindowsX.h>
#include <CommCtrl.h>
#include "resource.h" #pragma comment (lib,"comctl32.lib") BOOL InitTreeViewImageLists(HWND hwndTV); //该函数主要用于向TreeView控件中添加图片 HTREEITEM InitTreeCtrl(HWND hwnd,PTSTR pszCaption,int nLevel);//该函数向TreeView控件中添加内容

以下是实现函数:

#include "InitCtrls.h"

extern HINSTANCE g_hInst;
extern int g_nOpen;
extern int g_nClose;
BOOL InitTreeViewImageLists(HWND hwndTV){ HIMAGELIST himl;
HBITMAP hBitmap;
HICON hIcon;
if((himl = ImageList_Create(,,FALSE,ILC_COLOR,))==NULL)
return FALSE; hBitmap = LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP1));
hIcon = LoadIcon(g_hInst,MAKEINTRESOURCE(IDI_ICON1));
//g_nOpen = ImageList_Add(himl,hBitmap,(HBITMAP)NULL);
//开始我用的是上面的方法,但不知道为什么添加不上,返回值-1
g_nOpen = ImageList_AddIcon(himl,hIcon); DeleteObject(hIcon); hBitmap = LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP2));
hIcon = LoadIcon(g_hInst,MAKEINTRESOURCE(IDI_ICON2));
g_nClose = ImageList_AddIcon(himl,hIcon);
DeleteObject(hIcon); if(ImageList_GetImageCount(himl) < )
return FALSE;
TreeView_SetImageList(GetDlgItem(GetParent(hwndTV),IDC_TREE),himl,TVSIL_NORMAL); return TRUE;
} HTREEITEM InitTreeCtrl(HWND hwnd,PTSTR pszCaption,int nLevel){
HWND hwndTreeCtrl = GetDlgItem(hwnd,IDC_TREE);
TVITEM tvi;
TVINSERTSTRUCT tvins;
static HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;//hPrev 代表当前加入的新项
static HTREEITEM hPrevRootItem = NULL; //前一级目录
static HTREEITEM hPrevLev2Item = NULL;
HTREEITEM hti ; tvi.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; tvi.pszText = pszCaption;
tvi.cchTextMax = sizeof(pszCaption)/sizeof(pszCaption[]); tvins.item = tvi;
tvins.hInsertAfter = hPrev; if(nLevel == )
tvins.hParent = TVI_ROOT;
else if(nLevel == )
tvins.hParent = hPrevRootItem;
else
tvins.hParent = hPrevLev2Item; hPrev = TreeView_InsertItem(hwndTreeCtrl,&tvins); if(nLevel == )
hPrevRootItem = hPrev;
else
hPrevLev2Item = hPrev; if(nLevel > ){
hti = TreeView_GetParent(hwndTreeCtrl,hPrev);
tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvi.hItem = hti;
tvi.iImage = g_nOpen;
tvi.iSelectedImage = g_nOpen; TreeView_SetItem(hwndTreeCtrl,&tvi);
}
return hPrev;
}

Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式的更多相关文章

  1. WPF中TreeView控件SelectedItemChanged方法的MVVM绑定

    问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限.比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscription ...

  2. Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼

    Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...

  3. C#Winform中treeView控件使用总结

    1.如何展开结点时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeVi ...

  4. WPF中TreeView控件数据绑定和后台动态添加数据(二)

    写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...

  5. WPF中TreeView控件数据绑定和后台动态添加数据(一)

    数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...

  6. WPF中TreeView控件的使用案例

    WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用.我这个demo主要是在wpf中使用Tr ...

  7. VB6.0中WinSock控件属性和方法详解

    原文链接:http://liweibird.blog.51cto.com/631764/653134 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器 ...

  8. asp.net中验证控件的使用方法

    用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...

  9. c#中WebBrowser控件的使用方法

    首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第 ...

随机推荐

  1. Python笔记(2)函数

    python中一切皆对象,函数也看做对象.函数被函数名所引用,但是同样的他也可以被其他标识符所引用,可以作为参数传递. def f(): return "hi" 可见a引用了函数返 ...

  2. 教你一招:Excel中使用MID函数获取身份证中的出生年月日

    MID字符串函数,作用是从一个字符串中截取出指定数量的字符 MID(text, start_num, num_chars)   text被截取的字符 start_num从左起第几位开始截取(用数字表达 ...

  3. DSP, SSP, DMP

    先了解下广告的产业链有哪些人群: 广告主advertisers 显然是指想为自己的品牌或者产品做广告的人,例如宝马.Intel.蒙牛-- 媒体publisers       则是提供广告位置的载体,例 ...

  4. iOS开发UI篇—懒加载

    iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...

  5. NOIP2016呵呵记

    经过了一年的想象和臆测,经历了学长们的几次考试,通过老师的言语莫名感受过了所谓oi式压力之后,自己的考试也终于到来了. 考前的生活也没有想象中的那么充实,无非跟着神犇刷刷题,讨论算法,学点新技巧,然后 ...

  6. 单元测试与Moq

    这个篇幅里面,记录单元测试与Moq模拟包的知识点. 单元测试 每一个模块,都应该有对应的单元测试.单元测试可以保证你的代码准确性,大大减少出现BUG的几率.一个好的单元测试,也是重构代码必不可少的部分 ...

  7. docker windows 7 mysql安装使用教程

    mysql 1. 镜像的下载 Docker pull MySQL 可以从https://docker.cn/docker/mysql 看到官方的同步镜像. 大约400多M. 2. 运行 每个镜像都有一 ...

  8. Bash 是如何从环境变量中导入函数的

    在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变 ...

  9. Android中finish掉其它的Activity

    在Android开发时,一般情况下我们如果需要关掉当前Activity非常容易,只需要一行代码 this.finish;即可.那么,如果是想要在当前Activity中关掉其它的Activity应该怎么 ...

  10. MVVM开发模式简单实例MVVM Demo

    本文主要是翻译Rachel Lim的一篇有关MVVM模式介绍的博文 A Simple MVVM Example 并具体给出了一个简单的Demo(原文是以WPF开发的,对于我自己添加或修改的一部分会用红 ...