ListContro控件使用

来源:互联网 发布:枕下放红线多久知姻缘 编辑:程序博客网 时间:2024/05/21 11:09

1、在对话框创建ListControl控件,修改View属性为Report;
2、映射ListControl控件成员变量m_listTest;

3、初始化m_listTest:
 LONG lStyle = m_listTest.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);

 lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES | LVS_EX_HEADERDRAGDROP;
 m_listTest.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)lStyle);

4、增加标题栏:

 LV_COLUMN lvc;

 lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;

 lvc.iSubItem = 0;     // 列序号
 lvc.pszText = "列表头";    // 列名称
 lvc.cx = 150;      // 列宽度
 m_listTest.InsertColumn(0, &lvc); // 插入列

5、增加数据:

 for (int i=0; i<10; ++i)
 {
  int nItemCount = m_listTest.GetItemCount() + 1;

  LV_ITEM lvItem;

  lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
  lvItem.iSubItem = 0;
  lvItem.state = 0;
  lvItem.stateMask = 0;
  lvItem.iItem = nItemCount;
  lvItem.iSubItem = 0;
  lvItem.pszText = "数据";
  m_listTest.InsertItem(&lvItem);

  m_listTest.SetItemText(nItemCount, 1, "数据2");  // 设置数据
 }

6、设置复选框:
 m_listTest.SetCheck(0, TRUE); // TRUE选择,FALSE不选,适用于LVS_EX_CHECKBOXES格式

7、遍历选中的数据行:

 POSITION pos = m_listTest.GetFirstSelectedItemPosition();
 
 if (pos == NULL)
 {
  return;
 }

 while (pos)
 {
  int nItem = m_listTest.GetNextSelectedItem(pos);
  // 处理数据
 }

8、遍历列标题栏:

 int nHeadItemCount = m_listTest.GetHeaderCtrl()->GetItemCount();

 if (nHeadItemCount > 0)
 {
  HDITEM hdi;
  TCHAR lpBuffer[256];
  
  hdi.mask = HDI_TEXT;
  hdi.pszText = lpBuffer;
  hdi.cchTextMax = 256;
  for ( int i=0; i<m_listTest.GetHeaderCtrl()->GetItemCount(); ++i )
  {
   m_listTest.GetHeaderCtrl()->GetItem(i, &hdi);

   AfxMessageBox(hdi.pszText);    // hdi.pszText列名称
  }
 }

9、删除数据行:

  m_listTest.DeleteItem(0);

10、删除列标题栏:

  m_listTest.DeleteColumn(0);

11、CListView初始化:
 CListView在CExcelListView::OnCreate初始化:

 CListCtrl& listCtrl = GetListCtrl();
 
 LONG lStyle;
 
 lStyle = GetWindowLong(listCtrl.m_hWnd, GWL_STYLE);  // 获取当前窗口格式
 lStyle |= LVS_REPORT | LVS_SHOWSELALWAYS;    // 设置报表格式
 SetWindowLong(listCtrl.m_hWnd, GWL_STYLE, lStyle);  // 设置窗口格式
 
 DWORD dwListStyle = listCtrl.GetExtendedStyle();
 
 // 设置扩展格式
 dwListStyle |= LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_GRIDLINES;
 listCtrl.SetExtendedStyle(dwListStyle);
 listCtrl.EnableToolTips(TRUE);

--后续待补充

原创粉丝点击