Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式
首先是头文件,内容如下:
#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控件的使用方法,类似于资源管理器中文件树形显示方式的更多相关文章
- WPF中TreeView控件SelectedItemChanged方法的MVVM绑定
		
问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限.比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscription ...
 - Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼
		
Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...
 - C#Winform中treeView控件使用总结
		
1.如何展开结点时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeVi ...
 - WPF中TreeView控件数据绑定和后台动态添加数据(二)
		
写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...
 - WPF中TreeView控件数据绑定和后台动态添加数据(一)
		
数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...
 - WPF中TreeView控件的使用案例
		
WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用.我这个demo主要是在wpf中使用Tr ...
 - VB6.0中WinSock控件属性和方法详解
		
原文链接:http://liweibird.blog.51cto.com/631764/653134 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器 ...
 - asp.net中验证控件的使用方法
		
用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...
 - c#中WebBrowser控件的使用方法
		
首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第 ...
 
随机推荐
- 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
			
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...
 - ajax 多个表单值问题,表单序列化加其它表单值
			
$.ajax({ type: "post", url: "{:u('cart/totalByCard')}?t="+Math.random(9999), dat ...
 - Git的使用
			
1.从Git服务器上获取项目 2.提交我的修改项目 3.发布新版本 4.修复bug
 - java异常
			
java之异常 认识java中的异常: 有过编程经历的人都会知道,出错在编写程序时,是再正常不过的事,当运行程序时,每次看到那个程序出错时,都会觉得心塞,但是最让人心塞的事情往往是——程序运行的结果和 ...
 - U盘因为装linux系统变小了
			
U盘在Windows下被UltraISO等软件制作成Linux启动盘后会自动被格式化成FAT格式,导致容量变小. 用DiskGenius去修复 http://www.jb51.net/softs/75 ...
 - 日常资料(TNB)
			
http://www.med66.com/html/2005/5/hu47563183418550025733.html http://www.guokr.com/article/192045/ ht ...
 - <<< Jquery查找元素、选择器使用方法总结
			
$("#myDiv"); //根据给定的ID匹配一个元素,用于搜索id 属性中给定的值,id属性必须是唯一的 $("div"); //根据给定的元素名匹配所有元 ...
 - js 获取据当前时间n天前的时间
			
<script type="text/javascript"> function getLastDate() { var date = new Date(); ; va ...
 - JavaScript写在Html页面的<head></head>中
			
JavaScript写在Html页面的<head></head>中 ----------------- <html> <head> <style ...
 - 图解JAVA对象的创建过程
			
前面几篇博文分别介绍了JAVA的Class文件格式.JVM的类加载机制和JVM的内存模型,这里就索性把java对象的创建过程一并说完,这样java对象的整个创建过程就基本上说明白了(当然你要有基础才能 ...