报表式CListCtrl的使用详解初稿

严格说来本文是别人成果的集合,加入了本人使用的一点心得,而且文章内容是本人在实际开发中试验过可以使用的。这只是初稿,还有很多内容没有加入,原因是没有经过验证,以后会陆续加入,形成一个CListCtrl的使用完全指南。

创建图形列表并和CListCtrl关联:
 m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192));
 m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) );
 m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);
为报表添加4列:
  char *szColumn[]={"昵称","IP地址","登陆时间","状态"};
  int widths[]={100,98,70,55};
  LV_COLUMN lvc;
  lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
  lvc.fmt=LVCFMT_LEFT;
  for(int i=0;i<4;i++) {//插入各列
   lvc.pszText=szColumn[i];
   lvc.cx=widths[i];
   lvc.iSubItem=i;
   m_caller_list.InsertColumn(i,&lvc);
  }
为报表添加两项,以附加方式添加:
 char* data[4];
 data[0]="所有人";
 data[1]="0.0.0.0";
 data[3]="在线";
 data[2]=new char;
 CTime now=CTime::GetCurrentTime();
       CString temp = now.Format("%H:%M:%S");
 data[2]=temp.GetBuffer(1);
 LV_ITEM lvi;
 lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
 lvi.iSubItem=0;
 lvi.pszText=(char *)data[0];
 lvi.iImage = 0;
 lvi.iItem=0;
 m_caller_list.InsertItem(&lvi);
 for (int j=0;j<4;j++) m_caller_list.SetItemText(count,j,data[j]);
 count++;
 lvi.iImage = 1;
 lvi.iItem=count;
 m_caller_list.InsertItem(&lvi);
 data[0]="cherami";
 data[1]="127.0.0.1"; 
 for (int n=0;n<4;n++) m_caller_list.SetItemText(count,n,data[n]);
 count++;

设置报表的样式
选中一整行:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_FULLROWSELECT); 
绘制表格:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_GRIDLINES);
带复选框:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);
自动切换:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_TRACKSELECT);

选定一行:
设置CListCtrl的Show selection always选项
SetItemState (iIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED)
 
选中一个或多个项目时,会发送LVN_ITEMCHANGED消息,可以使用
GetSelectedCount()方法得到被选定的项的数目。

点击列头的消息响应:
ON_NOTIFY(HDN_ITEMCLICKW, 0, ResponseFunc)
消息,需要自己添加
或者:
ON_NOTI

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CListCtrl是一个在MFC程序中常用的控件,用于显示和编辑列表数据。而CButton是用于创建和处理按钮控件的类。 CListCtrl和CButton两者之间并没有直接的联系。通常情况下,我们使用CListCtrl来展示列表数据,而使用CButton来实现按钮的各种功能。 在使用CListCtrl时,我们可以通过添加列的方来定义列表的列数和每一列的标题,通过添加行的方来添加数据项。同时,我们还可以设置CListCtrl的风格,使其显示为网格、报表等不同的样。通过CListCtrl的成员函数,我们可以获取选中项的信息,编辑列表中的数据等。 而CButton则用于创建和处理按钮。我们可以使用CButton的成员函数来设置按钮的文字、样、大小、位置等属性。在MFC程序中,按钮通常与对话框相关联,通过添加消息映射来处理按钮的点击事件。 当我们在界面中既有CListCtrl又有CButton时,我们可以通过按钮的点击事件来处理 CListCtrl 中数据的操作。比如,当我们点击某个按钮时,可以获取当前选中项的信息,实现对选中项的编辑、删除等操作。或者根据按钮的点击事件,可以改变CListCtrl的样,切换不同的显示模。 综上所述,CListCtrl和CButton是常用的MFC控件,它们分别用于展示和编辑列表数据以及创建和处理按钮。两者之间的联系在于,通过按钮的点击事件,我们可以实现对CListCtrl中数据的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cherami

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值