VC++的ListCtrl控件 具有复选框 每行第一列取消复选框
时间: 2024-01-21 11:04:12 浏览: 155
您可以通过在 ListCtrl 控件的第一列插入自定义的复选框来实现每行第一列取消复选框的效果。以下是一个示例代码:
```cpp
// 创建 ListCtrl 控件
CListCtrl m_ListCtrl;
m_ListCtrl.Create(WS_VISIBLE | WS_CHILD | LVS_REPORT, CRect(10, 10, 300, 200), this, 0);
// 设置 ListCtrl 控件为报表模式
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES);
// 插入列标题
m_ListCtrl.InsertColumn(0, _T("选择"), LVCFMT_LEFT, 60);
m_ListCtrl.InsertColumn(1, _T("列1"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(2, _T("列2"), LVCFMT_LEFT, 100);
// 插入行数据
m_ListCtrl.InsertItem(0, _T(""));
m_ListCtrl.SetItemText(0, 1, _T("数据1"));
m_ListCtrl.SetItemText(0, 2, _T("数据2"));
// 插入自定义的复选框到第一列
CRect rect;
m_ListCtrl.GetItemRect(0, &rect, LVIR_LABEL);
rect.left += 4;
rect.right = rect.left + 13;
rect.top += 1;
rect.bottom -= 1;
m_ListCtrl.GetDlgItem(0)->Create(_T("BUTTON"), _T(""), WS_CHILD | WS_VISIBLE | BS_CHECKBOX | BS_AUTOCHECKBOX | BS_LEFT, rect, &m_ListCtrl, IDC_CHECKBOX);
// 取消第一行的复选框选中状态
m_ListCtrl.SetCheck(0, FALSE);
```
以上代码中,我们首先创建一个 ListCtrl 控件,并设置其为报表模式,然后插入列标题和行数据。接着在第一列插入自定义的复选框,并取消第一行的复选框选中状态。
希望对您有所帮助!如果您有任何其他问题,请随时提问。
阅读全文