ListView添加节点
ListView插入节点的流程
当ListView控件的样式被设置成report时,ListView控件实际上是分为两个部分, 一部分是Column, 这个部分是用来显示ListView的每一列的标题.
另一部分是Item, 每一个Item就是一行记录,一行记录中可以分成对应每一个'Column'的列,故一个ListView有多少个Column,一行Item就有多少列.
一个ListVie控件如下表所示:
| Column1 | Column2 | Column3 |
| Item0_0 | Item0_1 | Item0_2 |
| Item1_0 | Item1_1 | Item1_2 |
插入流程
先插入column,再插入item.
ListView控件使用一个结构体来表示一个Column, 因此,插入一个column相当于插入一个设置信息的结构体.
结构体的字段含义如下:
typedef struct tagLVCOLUMNW{UINT mask; // 用于记录结构体中哪些字段被使用的,如果这个字段没有被赋上相应的值,即使其他字段被赋值了函数也不会使用int fmt; // 用于记录格式一个Column的格式int cx; // 用于记录Column的宽度LPWSTR pszText; // 用于记录Column的显示的文本int cchTextMax; // 用于记录Column的显示的文本的字符个数int iSubItem; // 用于记录Column的位置int iImage; // 用于记录Column使用到的图标在图标链表中的索引int iOrder;#if (NTDDI_VERSION >= NTDDI_VISTA)int cxMin;int cxDefault;int cxIdeal;#endif} LVCOLUMNW, *LPLVCOLUMNW;
在这个结构体中, mask和fmt这两个字段用一些宏来控制,这些宏分别是:
mask字段所使用到的宏
LVCF_FMT:fmt字段被使用.LVCF_WIDTH:cx字段被使用.LVCF_TEXT:pszText字段被使用.LVCF_SUBITEM:iSubItem字段被使用LVCF_IMAGE:iImage字段被使用LVCF_ORDER:iOrder字段被使用LVCF_MINWIDTH:cxMin字段被使用LVCF_DEFAULTWIDTH:cxDefault字段被使用LVCF_IDEALWIDTH:cxIdeal字段被使用
实例代码
// 获取ListView控件的窗口句柄HWND hListView = GetDlgItem(hWnd , 0x1000);// 插入ColumnLV_COLUMN stcColumn = { 0 };stcColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;// 设置要使用的字段: 宽度,格式,文本stcColumn.fmt = LVCFMT_CENTER; //文字居中对齐stcColumn.cx = 70; // 宽度stcColumn.pszText = L"姓名"; //设置要显示文本ListView_InsertColumn(hListView , 0 , &stcColumn);// 继续插入一个ColumnstcColumn.pszText = L"年龄";ListView_InsertColumn(hListView , 1 , &stcColumn);// 继续插入一个ColumnstcColumn.pszText = L"性别";ListView_InsertColumn(hListView , 2, &stcColumn);// 插入节点// 节点是按行插入的, 一行就是一个节点// 每个节点被分成对应的列,有多少个Column就有多少列//LV_ITEM stcItem = { 0 };stcItem.mask = LVIF_TEXT; // 设置要使用的字段: 文本stcItem.iItem = 0; // 设置插入到的行号ListView_InsertItem(hListView , &stcItem); // 插入一行ListView_SetItemText(hListView , /*要插入行的listview句柄*/0 , /*行号*/0 , /*列号*/L"王大锤"/*文本*/);// 设置一行中的第0列ListView_SetItemText(hListView ,0 , /*行号*/1 , /*列号*/L"18"); // 设置一行中的第1列ListView_SetItemText(hListView , 0 , 2 , L"男");// 设置一行中的第3列stcItem.iItem = 1; // 设置要插入到的行号ListView_InsertItem(hListView , &stcItem);ListView_SetItemText(hListView ,1 , /*行号*/0 , /*列号*/L"王小锤");ListView_SetItemText(hListView , 1 , 1 , L"28");ListView_SetItemText(hListView , 1 , 2 , L"男");
ListView添加节点的更多相关文章
- 仿喜马拉雅实现ListView添加头布局和脚布局
ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...
- JQuery 添加节点
Mark一段自己写的添加节点的代码 function reply2(){ $( "<div class=sec1-div5>"+"<div class= ...
- jquery 添加节点的几种方法介绍
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- js实现在末尾添加节点
在末尾添加节点: 1.获取ul标签 2.创建li标签 document.createElement("标签名称")方法 3.创建文本 document.createTextNode ...
- JavaScript案例二:在末尾添加节点
简单实现通过JavaScript来增加HTML节点 <!DOCTYPE html> <html> <head> <title>JavaScript在末尾 ...
- 向html中添加节点
简单: ①,js中: (function () { var box=document.querySelector("#box"); var con1=document.create ...
- 警惕rapidxml的陷阱:添加节点时,请保证变量的生命周期
http://www.cnblogs.com/chutianyao/p/3246592.html 项目中要使用xml打包.解析协议,HQ指定了使用rapidxml--号称是最快的xml解析器. 功能很 ...
- delphi 添加节点
//在选中的节点中上添加1个节点 procedure TForm1.Button1Click(Sender: TObject); begin with TreeView1 do b ...
- ListView添加项目带序列
ListView添加项目带序列 function AddSelItems(listview1:TListView;ListView2:TListView):Boolean;var s: st ...
随机推荐
- 【SSRS】入门篇(一) -- 创建SSRS项目
原文:[SSRS]入门篇(一) -- 创建SSRS项目 在本篇中,您将学习如何在 SQL Server Data Tools (SSDT) 中创建报表服务器项目. 报表服务器项目用于创建在报表服务器中 ...
- hibernate在持久对象的生命周期(三州:自由状态,持久状态,自由状态 之间的转换)
三种状态的基本概念: 1. 临时身份(Transient):也被称为自由状态,它只存在于内存中,并且在数据库中没有相应的数据. 使用new创建的对象,久化,没有处于Session中,处于此状态的对象 ...
- Bootstrap 图标
Bootstrap 图标由 Glyphicons 提供.详情可以去bootstrap官网进行查看. 用法: <i class="icon_class_name">< ...
- c#中queue的用法
Queue队列就是先进先出.它并没有实现 IList,ICollection.所以它不能按索引访问元素,不能使用Add和Remove.下面是 Queue的一些方法和属性 Enqueue():在队列的末 ...
- JAVA面试精选
JAVA面试精选[Java基础第一部分] 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对 ...
- c语言算法题目求职用
1.栈的压入与压出/* 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.n<=100000 用一个栈作辅助,顺序描述压入序列和弹出序列,如果当前位置上压入序列 ...
- URL 调度器(URL dispatcher)
URL 调度器(URL dispatcher) 在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 UR ...
- IOS学习之路七(通过xib自定义UITableViewCell)
一.新建iOS Application工程,选择Single View Application,不要选中Use Storyboard.假设指定的是product name是:UITableViewCe ...
- 我的第一篇文章 —— IE6的那些css常见bug(汇总)
我的微博终于在前几天建立了 虽说很早之前就知道博客园这个地方 但怕自己不能坚持去写一些东西一直没有建.这几天 我做了这个决定 把我的博客建起来 每周发一些看到的,听到了一些前端知识或者前沿技术. 另外 ...
- 在WebStorm中集成Karma+jasmine进行前端单元测试
在WebStorm中集成Karma+jasmine进行前端单元测试 前言 好久没有写博了,主要还是太懒=.=,有点时间都去带娃.看书了,今天给大家分享一个原创的小东西,如果大家对TDD或者BDD有兴趣 ...