CListCtrl中添加复选框

来源:互联网 发布:网络系统管理 一建 编辑:程序博客网 时间:2024/06/08 08:06

1.首先建立一个对话框工程;

2.然后在对话框的OnInitDialog函数中添加以下代码:

3.项目熟悉listctrl的各种操作

大笑


 m_list.SetItemText(0,3,"sdf03");
 //m_list.SetItemText(1,0,"sdf");  //设置项的各列数据时也可更改行标题,即行的第一列的文字 
 m_list.SetItemText(1,1,"sdf11"); 
 m_list.SetItemText(1,2,"sdf12"); 
 m_list.SetItemText(1,3,"sdf13"); 
 
// m_list.SetCheck(0);//可以使复选框打上勾
 return TRUE;  // return TRUE  unless you set the focus to a control
}


LVS_EX_CHECKBOXES


以下就是各种风格的介绍




您可以获得 ListView_GetCheckState 指定项目的复选框的状态。若要设置检查状态,请使用 ListView_SetCheckState。如果设置了此样式,则当用户单击该复选框,或按空格键在列表视图控件自动切换复选状态。




LVS_EX_FLATSB


扁平滚动条
列表视图中的启用平面滚动条。如果您需要更多的控制列表视图滚动条的外观,您应该操作平的滚动栏 Api 使用直接的列表视图滚动条。如果更改系统度量,您负责调整与 FlatSB_SetScrollProp 的滚动栏度量。有关进一步的详细信息请参阅平滚动条。


LVS_EX_FULLROWSELECT


选择整行
当选择某个项目时,强调了项目和其所有子项。此样式是仅在 LVS_REPORT 风格结合中可用。


LVS_EX_GRIDLINES


绘制表格
显示项及其子项周围的网格线。此样式是仅在 LVS_REPORT 风格结合中可用


LVS_EX_HEADERDRAGDROP


报表头可以拖拽
允许拖放的列表视图控件中的列重新排序。此样式是只可用于使用 LVS_REPORT 样式的列表视图控件。


LVS_EX_INFOTIP


将提示信息窗口的消息通知父窗口
当列表视图控件使用的 LVS_EX_INFOTIP 样式时,LVN_GETINFOTIP 通知代码发送到父窗口显示工具提示项之前。


LVS_EX_LABELTIP




LVS_EX_MULTIWORKAREAS


多工作区


LVS_EX_ONECLICKACTIVATE


单击激活


LVS_EX_REGIONAL




LVS_EX_SUBITEMIMAGES


子项目图标列表


LVS_EX_TRACKSELECT


鼠标经过时自动选择该项


LVS_EX_TWOCLICKACTIVATE


双击激活


LVS_EX_UNDERLINECOLD




LVS_EX_UNDERLINEHOT




LVS_EX_DOUBLEBUFFER


Version 6.00. Paints via double-buffering, which reduces flicker. This extended style also enables alpha-blended marquee selection on systems where it is supported.
这个风格只能用在32位编译器上的CListCtrl的系统自带的双缓存。




3.接下来介绍下关于选择复选框的操作:


首先在对话框上添加一个按键


然后在案件的响应函数中添加以下代码:


 


 /*
当使用鼠标选择某行的复选框时,输出选中的行各列的值
*/
void CCheckBoxListDlg::OnShowtest() 
{
 // TODO: Add your control notification handler code here
 int index = 0;
 for (;index < 2; index ++)
 {
  if (m_list.GetCheck(index))//判断该行是否被选中
  {
  //输出各列的值
   cout << (LPCSTR)(m_list.GetItemText(index, 1)) << endl;
   cout << (LPCSTR)(m_list.GetItemText(index, 2)) << endl;
   cout << (LPCSTR)(m_list.GetItemText(index, 3)) << endl;
  }
 }
}


4.最后分享下,复选款全选和全不选的实现:


首先添加两个按键,命名为“全选”和“全不选”


在全选的按键响应函数中添加如下代码:


 


 //全部选择
void CCheckBoxListDlg::OnSelectall() 
{
 // TODO: Add your control notification handler code here
 for (int i = 0; i < m_list.GetItemCount(); i ++)
 {
  m_list.SetCheck(i);
 }
}


在全不选的按键响应函数中添加如下代码:


 


//全不选
void CCheckBoxListDlg::OnUnselect() 
{
 // TODO: Add your control notification handler code here
 for (int i = 0; i < m_list.GetItemCount(); i ++)
 {
  m_list.SetCheck(i, FALSE);
 }

原创粉丝点击