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 ...
随机推荐
- jquery 触屏滑动+定时滚动
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- GoogleGoogle搜索解析
GoogleGoogle搜索解析 是一个类似Google趋势SEO 在 线keyword工具.它的正式口号提出“在搜索些什么”.利用Google搜索解析,能够比較特定区域.类别.时间范围以及搜索资源之 ...
- 十款最佳Node.js MVC框架
十款最佳Node.js MVC框架摘要:Node.js是JavaScript中最为流行的框架之一,易于创建可扩展的Web应用.本文分享十款最佳的JavaScript框架. Node.js是JavaSc ...
- [转]Android图片下载
因为国内被墙,看起来不方便,转载下,原文地址:http://android-developers.blogspot.com/2010/07/multithreading-for-performance ...
- Linq to XML的练习
假如有以下XML: <?xml version="1.0" encoding="utf-8" ?> - <export> - <p ...
- AngularJS的工作原理1
AngularJS的工作原理 个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些 ...
- VS调试技巧与快捷键&&VS快捷键
VS调试技巧与调试快捷键 1.添加断点或取消断点:F9(或者点击代码行最左边的灰色行) 2.调试:F10逐过程(不进入函数内部,直接获取函数运行结果) F11逐语句(会进入函数),如果想跳出函数 ...
- url在线编码和解码
在工作中,经常遇到encode之后的url.想查看里面的某个参数的时候,很不直观.今天在网上搜了一下对url在线编码和解码的网站.对我来说,使用起来很方便.而且这个网站里面,不仅仅有对url的编码和解 ...
- Linux内核中链表实现
关于双链表实现,一般教科书上定义一个双向链表节点的方法如下: struct list_node{ stuct list_node *pre; stuct list_node *next; ElemTy ...
- ios学习笔记第四天之官方文档总结
start developing ios app today. 官方文档的体系结构为: 各层的主要框架图: objectice-c是动态语言 Objective-C 为 ANSI C 添加了下述语法和 ...