昨天QQ群里有人问我怎么实现CTreeCtrl的功能,说实话,我也是一个VC 的初级学者,没有弄过CTreeView的代码,参考了MSDN后,写了一小段代码,和大家一起分享,其中包括窗口切分,都是比较基础的内容。【以下代码是在VC .net 2005中调试成功】
 
1.首先建立一个“基于单文档”的MFC应用程序,在CMainFrame类中重载OnCreateClient()函数,其内部的代码为:
 
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
 
{
 
// TODO: Add your specialized code here and/or call the base class
 
m_wndSplitter.CreateStatic(this, 1, 2);//生成行列的静态窗口划分。
 
 
 
m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMySplitterTreeView), CSize(0, 0), pContext);
 
m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CEditView), CSize(0, 0), pContext);
 
 
 
CRect r;
 
GetClientRect(&r);
 
 
 
//设置第行的高。
 
m_wndSplitter.SetRowInfo( 0, r.Height(), 0 );
 
//设置第列的宽。
 
m_wndSplitter.SetColumnInfo( 0, r.Width()/4, 0 );
 
 
 
return TRUE;
 
 
 
//将原来重载生成的返回代码注释掉。
 
//return CFrameWnd::OnCreateClient(lpcs, pContext);
 
}
 
 
 
2.上面的语句m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMySplitterTreeView), CSize(0, 0), pContext);中的CMySplitterTreeView是自己添加的MFC类,其基类设置为CTreeView。
 
3.在生成的CMySplitterTreeView类中添加成员变量CTreeCtrl * ptheTree;【以备以后调用使用】。并重载OnInitialUpdate()函数,其内部的代码为:
 
 
 
void CMySplitterTreeView::OnInitialUpdate()
 
{
 
CTreeView::OnInitialUpdate();
 
 
 
// TODO: Add your specialized code here and/or call the base class
 
ptheTree = &GetTreeCtrl();
 
//::SetWindowLong(ptheTree->m_hWnd,TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS,NULL);
 
 
 
//修改CTreeCtrl控件的Style。
 
ptheTree->ModifyStyle(0,TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);
 
 
 
TVINSERTSTRUCT tvInsert;
 
HTREEITEM hTreeItem;
 
tvInsert.hInsertAfter = NULL;//TVI_LAST;
 
tvInsert.hParent = TVI_ROOT;
 
tvInsert.item.mask = TVIF_TEXT;
 
tvInsert.item.pszText = L"一年级";
 
hTreeItem = ptheTree->InsertItem(&tvInsert);
 
tvInsert.hParent = hTreeItem;
 
tvInsert.item.pszText = L"1班";
 
ptheTree->InsertItem(&tvInsert);
 
tvInsert.item.pszText = L"2班";
 
ptheTree->InsertItem(&tvInsert);
 
ptheTree->Expand(hTreeItem,TVE_EXPAND); //默认为合上的【TVE_COLLAPSE】。
 
 
 
tvInsert.hParent = TVI_ROOT;
 
tvInsert.item.pszText = L"二年级";
 
hTreeItem = ptheTree->InsertItem(&tvInsert);
 
tvInsert.hParent = hTreeItem;
 
tvInsert.item.pszText = L"1班";
 
ptheTree->InsertItem(&tvInsert);
 
tvInsert.item.pszText = L"2班";
 
ptheTree->InsertItem(&tvInsert);
 
tvInsert.item.pszText = L"3班";
 
ptheTree->InsertItem(&tvInsert);
 
}
 
运行一下,就会发现在窗体被分割成两个部分,其中左侧的那个部分中有一个CTreeCtrl树形控
 

关于CTreeView中CTreeCtrl空间的使用的更多相关文章

  1. 第3/24周 区_SQL Server中管理空间的基本单位

    哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识.今天我会讲下SQL Server中的区管理,因为这是个很重要的话题,我们会在第23周 ...

  2. 77 swapon-激活Linux系统中交换空间

    Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] ...

  3. PB中multieditline空间的“~r~n"转"~n"

    private: constant String MULEDIT_NEWLINE = "~r~n" //multilineEdit控件的换行符号 constant String M ...

  4. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  5. MySQL中的空间扩展

    目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 1 ...

  6. 第3周 区_SQL Server中管理空间的基本单位

    原文:第3周 区_SQL Server中管理空间的基本单位 哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识.今天我会讲下SQL Se ...

  7. Oracle-11g 中使用表空间透明数据加密(TDE)

    Oracle-11g 中使用表空间透明数据加密(TDE)的限制 TDE 表空间加密方式会在数据读写过程中加解密数据.与在 SQL 层面做加解密的 TDE 列加密方式相比,其限制要大幅减少.例如:数据类 ...

  8. Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”

    今天遇到了两个关于Reporting Service的问题, 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) .具体情况 ...

  9. Linux 磁盘空间查询&&解决Linux 中“磁盘空间不足”的问题

    一.linux 查看目录的剩余空间大小 两个命令df .du结合比较直观 df -h 查看整台服务器的硬盘使用情况 du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的 ...

随机推荐

  1. ant design 两个tabs如何同时切换

    假设界面上有两个地方用到了同一个tabs,但是切换其中一个tabs,另一个tabs并不会同时切换,因为只是在其中一个tabs上调用了onChange,所以需要用到activeKey动态地设置tabs的 ...

  2. Python Faker的使用 及 常用函数的查询

    安装faker  pip install faker faker的使用 引用:from faker import Faker 初始化:f=Faker(locale='zh_CN') # 默认是en_U ...

  3. redis数据库操作

    一.String(字符串)操作 String在redis中的存储是按照key-value的形式存储 1.SET key value [EX seconds] [PX milliseconds] [NX ...

  4. vue项目 (1) vue结合mini-ui 的使用

    1.安装 npm install mini-ui -S 2. 使用 import Vue from 'vue' import App from './App' import router from ' ...

  5. Vue for循环 例子

    demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...

  6. rsync+inotify同步备份文件

    前言 rsync作用:man rsync可以看到解释为a fast, versatile, remote (and local) file-copying tool,主要进行文件的同步. inotif ...

  7. Spring Boot学习笔记二

    Spring Boot入门第二篇 第一天的详见:https://www.cnblogs.com/LBJLAKERS/p/12001253.html 同样是新建一个pring Initializer快速 ...

  8. php 简单的工程模式 实现加法操作

    class A{ protected $Num1; protected $Num2; public $result; public function getNum1(){ return $this-& ...

  9. Perl 哈希

    Perl 哈希 哈希是 key/value 对的集合. Perl中哈希变量以百分号 (%) 标记开始. 访问哈希元素格式:${key}. 以下是一个简单的哈希实例: 实例 #!/usr/bin/per ...

  10. 前端 -- javas-基本语法/引用等

    javas-基本语法/引用等 JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScri ...