Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230496
  • 博文数量: 55
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-22 17:59
文章分类

全部博文(55)

文章存档

2015年(2)

2011年(1)

2010年(1)

2009年(18)

2008年(16)

2007年(17)

我的朋友

分类: C/C++

2009-02-27 14:25:48

    CListCtrl控件在数据库编程中是用得比较多的控件之一,也是Window控件中较难掌握的一个控件。他可以有四显示方式,在这里只介绍报表方式,因为在数据库开发程序中使用很经常。Report方式中,列表控件的显示方式是有行和列的,行有叫做Item,但有多列时我们只能操作每一行的第零列,也就是最前列。
 DWORD dwStyle = ::GetWindowLong(m_ctrlListEvent.m_hWnd,GWL_STYLE);
 SetWindowLong(m_ctrlListEvent.m_hWnd, GWL_STYLE, dwStyle | LVS_REPORT); //设置列表控件格式为report样式
 DWORD ExStyle = m_ctrlListEvent.GetExtendedStyle();
 m_ctrlListEvent.SetExtendedStyle(ExStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);//设置为整栏选择和网格线
插入列用InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 );
例如: m_ListCtrl.InsertColumn(0, "统计区域",  LVCFMT_CENTER, 120, 0 );
 

设置完列后我们就可以设置列表控件的数据了,

使用的是InsertItemsetItemText

其中InsertItem用于向列表控件插入一行,并设置第零列的值,如果有多列,该行其他列的值要使用SetItemText来设置数据。假设共3列数据:

  m_ListCtrl.InsertItem(cnt, "gg");//插入一行,cnt:行号从0开始计数
  m_ListCtrl.SetItemText(cnt,1,"hh");
  m_ListCtrl.SetItemText(cnt,2,"aa");

插入一行数据必须先使用InsertItem插入此行的第0列数据,才能插入此行其他列数据。

    获取CListCtrl对象的Item数据,我们可以使用这样一个函数GetNextItem(-1,LVNI_ALL | LVNI_SELECTED)来获取当前选中的行(Item)如果该函数返回的值是-1,说明没有行(item)被选中,如果有行被选中,返回的是一个大于等于0的整数值,我们可以通过这个索引值来得到该行的相关列的数据,使用的是GetItemText()函数

       int CurSel=m_list.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);

       str=m_list.GetItemText(CurSel,col);  //0=的列数

获取列表的行数可以使用 GetItemCount()。

 

阅读(3453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~