本文主要是介绍CListCtrl中添加复选框,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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);
}
}
这篇关于CListCtrl中添加复选框的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!