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);
// 插入Column
LV_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);
// 继续插入一个Column
stcColumn.pszText = L"年龄";
ListView_InsertColumn(hListView , 1 , &stcColumn);
// 继续插入一个Column
stcColumn.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 ...
随机推荐
-
Security3: Schema 和 Permission
Schema是Object的容器,授予对Schema访问的权限,就是授予对Schema下所有object的访问权限. 一,Schema 是object的container The new schema ...
-
Java中的泛型方法
泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test<T>{}.这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类 ...
-
链表(C++语言实现)
我使用的是严蔚敏的数据结构C语言版,很反感里面的全是伪代码,平常也没怎么敲代码,链表和顺序表是数据结构的第一个实验课程,顺序表还好,但是链表就有点困难了,因为里面涉及指针的运用.我对于指针并不是很精通 ...
-
Spark菜鸟学习营Day4 单元测试程序的编写
Spark菜鸟学习营Day4 单元测试程序的编写 Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的. Step0:需求分析 在测试案例编写前,需完成需求分析工作,明确程序所有的输入 ...
-
Android 自学之星级评分条RatingBar
星级评分条(RatingBar)与拖动条十分相似,他们还有共同的父类AbsSeekBar.实际上星级评分条和拖动条的用法和功能都十分的接近:他们都允许用户通过拖动来改变进度.RatingBar与See ...
-
php 多维数组 arrayList array()
<pre name="code" class="php">$params=array( "tid"=>"3&qu ...
-
Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?
原文:Android菜鸟的成长笔记(5)--Android系统源代码你下载了吗? 在上一篇中我们用Android系统源代码分析了我们前面写的代码,有的朋友可能就会问怎么才能下载到Google官方的源代 ...
-
yaf学习之——生成yaf示例框架
windows 下面的生成yaf示例框架 1,下载 https://github.com/laruence/yaf 2,解压以后得到yaf-master文件夹 3,cmd命令窗口cd到上面解压的文件夹 ...
-
关于静态注册BroadcastReceiver接收不到广播的问题
1.背景&解决方法 最近碰到一个需求,app监听特定的广播,接收到广播后启动自己再进行处理.需求很简单,静态注册就好,不过,在自测的时候遇到一个问题,app安装后没启动过的状态下,什么广播都收 ...
-
【重学计算机】计组D3章:运算方法与运算器
1. 定点数运算及溢出 定点数加减法:减法化加法,用补码直接相加,忽略进位 溢出:运算结果超出了某种数据类型的表示范围 溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出 方法 ...