MFC_CTreeView—树形视图类

来源:互联网 发布:centos分辨率设置 编辑:程序博客网 时间:2024/06/09 15:16

MFC_CTreeView—树形视图类

 

 

 

一、树形视图框架示意图


树形视图

CTreeView->CTreeCtrl

CImageList

 

 

二、首先建立一个WIN32项目,项目名称为TVDemo,以CTreeView类为基类,去掉工具栏。

1.

//TVDemoView.h

//保护成员中添加代码

protected:

    CImageList m_ilDrives;//图片列表

2.

//在TVDemoView.cpp中添加函数OnInitialUpdate()

//在函数中添加如下代码

void CTVDemoView::OnInitialUpdate()

{

    CTreeView::OnInitialUpdate();

    m_ilDrives.Create(IDB_DRIVES,16,1,RGB(255,0,255));

//载入图片列表,每隔16像素,超出单位增长幅度,透明色设置

    this->GetTreeCtrl().SetImageList(&m_ilDrives,TVSIL_NORMAL);

    //把图片列表和树形控件关联起来

    HTREEITEM hEagles=GetTreeCtrl().InsertItem(_T("NO1"),0,0,TVI_ROOT,TVI_SORT);

//创建父结点,赋值给资源句柄

    HTREEITEMhEagles1=GetTreeCtrl().InsertItem(_T("NO2"),0,0,TVI_ROOT,TVI_SORT);

//创建父结点,赋值给资源句柄

    GetTreeCtrl().InsertItem(_T("1"),4,5,hEagles);

    GetTreeCtrl().InsertItem(_T("2"),4,5,hEagles);

    GetTreeCtrl().InsertItem(_T("3"),4,5,hEagles);

    //创建子结点4,5代表未选择是图片四,选中是图片五

    GetTreeCtrl().InsertItem(_T("1"),4,5,hEagles1);

    GetTreeCtrl().InsertItem(_T("2"),4,5,hEagles1);

    GetTreeCtrl().InsertItem(_T("3"),4,5,hEagles1);

//创建子结点4,5代表未选择是图片四,选中是图片五

 

    GetTreeCtrl().Expand(hEagles,TVE_EXPAND);//子结点直接是展开的

 

    GetTreeCtrl().Expand(hEagles1,TVE_EXPAND);//子结点直接是展开的

}

掌握要点:树形视图只是一个容器,而编程是针对树形控件进行编程;

 

 

三、改变树形控件样式

//TVDemoView.cpp

//向PreCreateWindow中添加代码

BOOL CTVDemoView::PreCreateWindow(CREATESTRUCT& cs)

{

    //TODO: 在此处通过修改

    //  CREATESTRUCT cs 来修改窗口类或样式

    cs.style|=TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS;

//TVS_SHOWSELALWAYS  离开这个窗口不改变结点选中状态;

// TVS_LINESATROOT   根目录线

// TVS_HASLINES     子目录线

// TVS_HASBUTTONS  父结点有加减号按钮

    returnCTreeView::PreCreateWindow(cs);

}

 

四、显示子目录信息

//在视图类中添加函数OnTvnSelchanged

void CTVDemoView::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT*pResult)

{

    LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);

    //TODO: 在此添加控件通知处理程序代码

    CStringstrText=GetTreeCtrl().GetItemText(pNMTreeView->itemNew.hItem);

    MessageBox(strText);//显示子目录的信息

    *pResult = 0;

}

0 0
原创粉丝点击