ListView的使用

ListView控件是个非常好的控件,当需要在程序中处理大量的表格或条目信息时,ListView控件无疑是首选~~~

ListView的创建

创建之前,需要加入链接库和头文件

#include"commctrl.h"
#pragma comment (lib,"comctl32.lib")

这个很简单当然是GreatWindow函数了,最要指定窗口类为WS_LISTVIEW即可,要使用这个窗口类必须要使用InitCommonControl函数加载动态运行库

在创建LIstView的时候需要指定ListView的风格和视图,这个控件有四种风格:Icon View,Small Icon View,List View,ReportView,

下面依次:图标视图小图标视图——列表视图——报表视图



(不同的视图有不同的效果,这里仅对ListView进行讲解)

在CreateWindow中窗口风格中使用 LVS_REPORT 就指定了列表视图,然后就是设置其他风格,比如说: LVS_SINGLESEL:选择的时候选中一行

还有其他诸如: LVS_AUTOARRANGE   /   LVS_NOCOLUMNHEADER  /   LVS_NOSCROLL   /    LVS_SHOWSELALWAYS

(具体参见MSDN)

LIstView的使用:

1.LIstView创建好了之后就是设置他的某些特性(有些特性没法通过指定窗口风格设置,所以还要编程设置)

设置特性就是通过SendMessage发送消息给控件的句柄

例如

  

<pre name="code" class="cpp">SendMessage(hWndListView, WM_SETFONT,(WPARAM)hFont1, 0);         //设置子控件的字体,属性,颜色
SendMessage(hWndListView,LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDR|  LVS_EX_GRIDLINES);
 

该控件有许多扩展风格,可以通过SendMessage发送LVW_SETEXTENDEDLISTVIEWSTYLE来设置和LVM_GETTEXTEDEDLISTVIEWSTYLE来获取

扩展风格有许多使用的用途,比如说:LVS_EX_GEIDLINES表示显示网格线,还有LVS_EX_BOXES表示显示勾选框

 

2.属性设置好之后就是添加表头,表头显示了一个表格的各项信息,表头是通过一个结果结构体:LVCOLUMN来定义的

<span style="font-size:18px;">typedef struct_LVCOLUMN {
    UINT mask;                 //标记属性
    int fmt;                   //对齐列头和子项的文本列中。 .在最左边的列对齐总是LVCFMT_LEFT,它不能改变的
    int cx;                    //列宽
    LPTSTR pszText;            //列标题
    int cchTextMax;            //标题的大小
    int iSubItem;              //与列关联的子项的索引值
#if (_WIN32_IE >=0x0300)
    int iImage;                //从零开始的索引图像在图像列表
    int iOrder;                //零基列偏移
#endif
} LVCOLUMN, FAR*LPLVCOLUMN;</span>


表头可以通过这个结构来定义,然后通过SendMessage(hwnd, LVM_INSERTCOLUMN,WPARAM(pos), LPARAM(&ColInfo));来添加

其中ColInfor表示一个LVCOLUM类型的变量,pos表示新添加列的的位置下标

最方便的办法是建立一个函数,以下是添加在LIstView里添加文本的函数:

<span style="font-size:18px;">void in_it(HWNDhwnd,int iSubItem,int cx,char *text,int cchTextMax,int pos)
{
        LVCOLUMN ColInfo1 = {0};
        ColInfo1.mask = LVCF_TEXT | LVCF_WIDTH |LVCF_FMT;
        ColInfo1.iSubItem = iSubItem;
        ColInfo1.fmt = LVCFMT_CENTER;
        ColInfo1.cx = cx;
        ColInfo1.pszText=text;
        ColInfo1.cchTextMax = cchTextMax;
        SendMessage(hwnd, LVM_INSERTCOLUMN,WPARAM(pos), LPARAM(&ColInfo1));
}</span>


 

3.表头建立好后就该往里添加数据了,数据的添加同样需要一个结构:LVITEM

这个结构成员比较多,这里不一一列举,具体参见MSDN,为添加方便,可以写一个函数(仅可添加文本)

<span style="font-size:18px;">void set_data(HWNDhwnd,char *text,int row,int colum)        //text为所添加的文本,row为所要加入的行,colum为说要加入的列
{
        LVITEM item;
        item.mask=LVIF_TEXT;
        item.pszText=text;
        item.iItem=row;
        item.iSubItem=colum;
        if(colm==0)
               SendMessage(hwnd, LVM_INSERTITEM,0, LPARAM(&item));
        else
               SendMessage(hwnd, LVM_SETITEM, 0,LPARAM(&item));
}</span>


 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值