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(16,16,FALSE,ILC_COLOR,0))==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) < 2)
        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[0]);

    tvins.item = tvi;
    tvins.hInsertAfter = hPrev;

    if(nLevel == 1)
        tvins.hParent = TVI_ROOT;
    else if(nLevel == 2)
        tvins.hParent = hPrevRootItem;
    else
        tvins.hParent = hPrevLev2Item;

    hPrev = TreeView_InsertItem(hwndTreeCtrl,&tvins);

    if(nLevel == 1)
        hPrevRootItem = hPrev;
    else
        hPrevLev2Item = hPrev;

    if(nLevel > 1){
        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;
}

时间: 2024-10-09 07:55:47

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

设定当前视图中所有控件字体的方法

     本范例实现的是对界面中所有的控件一次性的设置字体样式.思路是找到父控件,然后遍历子控件.如果子控件是可以修改文字的控件,那么就设置文字.这用到了控件的继承,很多控件都是继承与textview的,所以将控件均转为textview,最后设置字体即可. 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

获取屏幕高宽,在代码中设置控件大小的方法

获取屏幕高宽的方法: 1 import android.view.Display; 2 import android.view.WindowManager; 3 WindowManager windowManager = getWindowManager(); 4 Display display = windowManager.getDefaultDisplay(); 5 if(display.getWidth()==480 && display.getHeight()== 272 ||

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

Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控件--Name:tVtypeList将tVtypeList的HideSelection属性设置为False,DrawMode属性设置为OwnerDrawText将tVtypeList的DrawNode事件写为:private void tVtypeList_DrawNode(object sende

在cocos2d-x中CCTableView控件的使用方法

头文件需要继承CCTableViewDataSource和CCTableViewDelegate //CCScrollViewDelegate virtual void scrollViewDidScroll(CCScrollView* view){}; virtual void scrollViewDidZoom(CCScrollView* view){}; //CCTableViewDelegate virtual void tableCellTouched(CCTableView* tab

WinForms中TreeView控件的扩展与使用

EXE文件方便大家测试   源码下载 TreeView控件非常的好用,在我的公文系统中,使用TreeView控件选择接收公文的人员,支持单选,可多选 现提取出来,方便大家使用 涉及到的知识点 1:从Xml文件中加载内容显示到TreeView控件中 <?xml version="1.0" encoding="utf-8"?> <根目录> <组 名称="校长" 用户ID="1000"> <

WPF中TreeView控件数据绑定和后台动态添加数据

数据绑定: TreeView数据绑定需要使用层次结构数据模板(HierarchicalDataTemplate)来显示分层数据.XAML代码如下: <TreeView Name="chapterTree" Grid.Column="0"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=ChildNodes}"&

C#Winform中treeView控件使用总结

1.如何展开目录时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeView控件的ImageList属性中指向imageList1. TreeView有两个属性: SelectImageIndex:选中该结点时显示的图片的索引 ImageIndex:未选中该结点时显示的图片的索引 可以实现的效果是,选中某个结点时该结点的图片进行改变,如果我们的目标也是如此,万事已经大吉

WPF中TreeView控件的使用案例

WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用.我这个demo主要是在wpf中使用TreeView控件实现图片查看功能,简单的Grid布局.TreeView控件添加图标.TreeView控件的一些事件.显示统计.还有就是读取文件操作. 效果图: 前端主要代码: <Window x:Class="TreeViewDemo.MainWindow" xmlns="

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

用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidator(范围验证) 正则表达式验证控件 :RegularExpressionValidator(正则表达式验证) 自定义验证控件 :CustomValidator(自定义验证) 总结验证结果 :ValidationSummary(验证总结) 1.RequiredFieldValidator(必填字段验