列表视图控件

设计登陆窗口

首先创建一个图像列表,并通过SetImageList方法将列表视图控件和图像列表关联到一起。

CImageList* SetImageList(CImageList* pImageList,int nImageList);

pImageList:标识图像列表指针。

nImageList:标识图像列表类型。

LVSIL_NORMAL:图像列表具有大图标

LVSIL_SMALL:图像列表具有小图标

LVSIL_STATE:图像列表具有状态图标

然后调用InsertItem方法向列表视图控件插入数据

CImageList m_ImageList;
CListCtrl    m_Icon;

m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,0);//创建列表视图窗口
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));    //向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_Icon.SetImageList(&m_ImageList,LVSIL_NORMAL);//将图像列表关联到列表视图控件中
m_Icon.InsertItem(0,"王一",0);
m_Icon.InsertItem(1,"孙二",1);//向列表视图中添加数据
m_Icon.InsertItem(2,"刘三",2);
m_Icon.InsertItem(3,"吕四",3);
m_Icon.InsertItem(4,"庞五",4);
m_Icon.InsertItem(5,"宋六",5);
m_Icon.InsertItem(6,"孙七",6);

将数据加载到列表

首先调用SetExtendStyle方法设置列表视图控件的扩展风格。

然后调用InsertColoumn方法向列表视图控件添加列。

在插入数据时先调用InsertItem方法插入列,接着调用SetItemText方法向列表中的每一列插入数据;

在使用列表视图控件时,有时会因为数据插入错误需要删除数据。在删除数据前首先要获得要删除数据的索引,可以调用

GetSelectionMark方法实现,该方法用于获取列表视图中当前选中的视图项索引,还可以使用DeleteAllItems方法删除所有的视图项。

CListCtrl    m_Grid;
CString    m_Name;
CString    m_Agname;

//设置列表视图的扩展风格
m_Grid.SetExtendedStyle(LVS_EX_FLATSB    //扁平风格显示滚动条
        |LVS_EX_FULLROWSELECT                //允许整行选中
        |LVS_EX_HEADERDRAGDROP                //允许整列拖动
        |LVS_EX_ONECLICKACTIVATE            //单击选中项
        |LVS_EX_GRIDLINES);                    //画出网格线
//设置表头
m_Grid.InsertColumn(0,"姓名",LVCFMT_LEFT,130,0); //设置姓名列
m_Grid.InsertColumn(1,"绰号",LVCFMT_LEFT,130,1); //设置绰号列
void CInsertListDlg::OnButadd()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    int count = m_Grid.GetItemCount();
    m_Grid.InsertItem(count,"");
    m_Grid.SetItemText(count,0,m_Name);
    m_Grid.SetItemText(count,1,m_Agname);
}

void CInsertListDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
    // TODO: Add your control notification handler code here
    int pos  = m_Grid.GetSelectionMark();
    m_Name   = m_Grid.GetItemText(pos,0);
    m_Agname = m_Grid.GetItemText(pos,1);
    UpdateData(FALSE);
    *pResult = 0;
}

void CInsertListDlg::OnButdel()
{
    // TODO: Add your control notification handler code here
    int pos  = m_Grid.GetSelectionMark();
    m_Grid.DeleteItem(pos);
}

void CInsertListDlg::OnButclear()
{
    // TODO: Add your control notification handler code here
    m_Grid.DeleteAllItems();
}

具有位图背景的控件

可以使用SetBkImage方法设置列表视图控件的当前背景图像

如果只使用此方法为控件添加背景,在显示文字时字体的白色背景会将位图背景覆盖,从而影响界面的美观

要解决这一问题,可以通过SetTextBkColor方法设置文本背景颜色

在程序初始化时调用CoInitialize函数初始化COM环境

CImageList m_ImageList;
CListCtrl    m_Icon;

m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,0);    //创建列表视图窗口
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));        //向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));         //向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));         //向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));         //向图像列表中添加图标
m_Icon.SetImageList(&m_ImageList,LVSIL_NORMAL);        //将图像列表关联到列表视图控件中
m_Icon.InsertItem(0,"王一",0);                            //向列表视图中添加数据
m_Icon.InsertItem(1,"孙二",1);                             //向列表视图中添加数据
m_Icon.InsertItem(2,"刘三",2);                             //向列表视图中添加数据
m_Icon.InsertItem(3,"吕四",3);                             //向列表视图中添加数据
char buf[256];
::GetCurrentDirectory(256,buf);
strcat(buf,"\\BK.bmp");
m_Icon.SetBkImage(buf);
m_Icon.SetTextBkColor(CLR_NONE);

动态创建列表视图控件

动态创建列表视图控件需要使用Create方法,该方法可以创建一个列表视图控件

在对话框头文件中声明一个CListCtrl类变量m_List

然后调用MoveWindow函数设置控件的显示位置,最后调用ShowWindow函数显示控件

CListCtrl m_List;
m_List.Create(LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS|WS_BORDER,
        CRect(0,0,0,0),this,10001);
//设置列表视图的扩展风格
m_List.SetExtendedStyle(LVS_EX_FLATSB            //扁平风格显示滚动条
        |LVS_EX_FULLROWSELECT                    //允许整行选中
        |LVS_EX_HEADERDRAGDROP                //允许整列拖动
        |LVS_EX_ONECLICKACTIVATE                //单击选中项
        |LVS_EX_GRIDLINES);                        //画出网格线

m_List.MoveWindow(10,10,300,200);
m_List.ShowWindow(SW_SHOW);
//设置表头
m_List.InsertColumn(0,"姓名",LVCFMT_LEFT,150,0);     //设置姓名列
m_List.InsertColumn(1,"所属国家",LVCFMT_LEFT,150,1);     //设置所属国家列
m_List.InsertItem(0,"");                        //插入第0行
m_List.SetItemText(0,0,"关羽");                //向第0列插入数据
m_List.SetItemText(0,1,"蜀国");                //向第1列插入数据
m_List.InsertItem(1,"");                        //插入第1行
m_List.SetItemText(1,0,"赵云");                //向第0列插入数据
m_List.SetItemText(1,1,"蜀国");                //向第1列插入数据
时间: 2024-10-15 01:15:17

列表视图控件的相关文章

win32 sdk 列表视图控件绘制

[cpp] view plaincopy ////////////////////////////////////////////////////////////// LRESULT ListViewCustomDraw(HWND hwnd, LPARAM lParam) { LPNMHDR pnmh = (LPNMHDR) lParam; if (pnmh->code != NM_CUSTOMDRAW) return 0; LPNMLVCUSTOMDRAW lpNMCustomDraw = (

win32 sdk列表视图控件两个重要的结构体

列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon(大图标).SmallIcon(小图标).List(列表)或Report(报表). 一.列表视图控件有两个重要的数据结构LVCOLUMN和LVITEM.LVCOLUMN用于定义报表方式下的“列”的结构:LVITEM用于定义“项”的结构.这两个结构的定义及说明如下: typedef struct _L

Qt qml中listview 列表视图控件(下拉刷新、上拉分页、滚动轴)

Qt qml中listview 列表视图控件(下拉刷新.上拉分页.滚动轴) 来源 https://www.cnblogs.com/surfsky/p/4352898.html 设置ListView涉及到将contentsY,即视图的可见部分的顶部,设置y为委托的值.另一个更改是interactive将视图设置为false.这样可以防止视图移动.用户不能再滚动列表或更改当前Item. contentY为列表上拉后列表左上角点距显示框左上解点的高度listView1.height为可显示部分的高度,

Windows Phone 8.1 新特性 - 控件之列表选择控件

本篇我们来介绍Windows Phone 8.1 新特性中的列表选择控件. 在Windows Phone 8 时代,大家都会使用 LongListSelector 来实现列表选择控件,对数据进行分组显示.比如通讯录中,按照名字首字母进行分组,点击分组标题后跳转到该标题对应的分组. 而Windows Phone 8.1 中会利用 ListView 和 SemanticZoom 来实现,下面我们来看看实现过程. 首先我们来认识一下ListView 和 SemanticZoom: ListView 从

[Xcode10 实际操作]三、视图控制器-(10)在Storyboard中使用图像视图控件

本文将演示常用的图像视图控件在故事板中的使用. 打开故事板文件[Main.storyboard]点击选择视图控制器的根视图. 点击库图标,打开控件库面板. 在控件库搜索框内,输入控件名称,在控件库中,快速定位目标控件. 然后在标签控件上双击,导入所需的控件. 在图像视图右侧的定界框上按下手指,并向右拖动,以调整标签视图的宽度. 将标签控件向下方拖动一段距离. 然后点击库图标,再次打开控件库面板. 在控件库搜索框内,输入控件名称,在控件库中,快速定位目标控件. 然后在按钮控件上双击,导入所需的控件

iOS:UITableView表格视图控件

UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格) 对表格的操作主要有:创建表格.设置单元格(行数.内容.行高).编辑单元格(删除单元格.插入单元格).移动单元格.标记单元格.修改单元格等. 一.表格式图的属性和行为: 1.基本属性: @interface UITableView : UIScrollView <NSCoding> @property (nonatomi

iOS:网页视图控件UIWebView的详解

网页视图控件:UIWebView 功能:它是继承于UIView的,以网页的形式用来显示从网络或者本地上加载下来的数据. 枚举: //网页视图导航类型 typedef NS_ENUM(NSInteger, UIWebViewNavigationType) { UIWebViewNavigationTypeLinkClicked,             //用户点击了一个链接 UIWebViewNavigationTypeFormSubmitted,        //用户提交了一个表单 UIWe

iOS:UIImageView图像视图控件

UIImageView:图像视图控件: 它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的很多张图片,人肉眼无法处分,使人看起来仿佛图像在动似的.例如典型的实例:汤姆猫实例 @interface UIImageView : UIView { @property(nonatomic,retain) UIImage *image;    //图像 @property(nonatomic,retai

ObjectiveC:UIImageView图像视图控件

UIImageView:图像视图控件: 它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的很多张图片,人肉眼无法处分,使人看起来仿佛图像在动似的.例如典型的实例:汤姆猫实例 @interface UIImageView : UIView { @property(nonatomic,retain) UIImage *image;    //图像 @property(nonatomic,retai