mfc Clistview 用代码设置好看的report风格
时间: 2023-12-17 08:05:47 浏览: 81
以下是在 MFC 中使用代码设置 CListView 控件为 Report 风格并美化的示例:
首先,创建一个 CListView 控件并设置为 Report 风格:
```
m_listCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, CRect(0,0,0,0), this, 1);
```
然后,设置 CListView 控件的风格和样式:
```
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_listCtrl.SetTextColor(RGB(0, 0, 255));
m_listCtrl.SetTextBkColor(RGB(255, 255, 255));
m_listCtrl.SetBkColor(RGB(240, 240, 240));
```
其中,`LVS_EX_FULLROWSELECT` 表示选中整行,`LVS_EX_GRIDLINES` 表示显示网格线。`SetTextColor`、`SetTextBkColor` 和 `SetBkColor` 分别表示设置文字颜色、文字背景色和控件背景色。
接下来,添加列表头:
```
m_listCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T("年龄"), LVCFMT_CENTER, 100);
m_listCtrl.InsertColumn(2, _T("性别"), LVCFMT_CENTER, 100);
```
这里添加了三列,分别为姓名、年龄和性别,每列宽度均为 100。
最后,添加数据:
```
m_listCtrl.InsertItem(0, _T("张三"));
m_listCtrl.SetItemText(0, 1, _T("20"));
m_listCtrl.SetItemText(0, 2, _T("男"));
m_listCtrl.InsertItem(1, _T("李四"));
m_listCtrl.SetItemText(1, 1, _T("25"));
m_listCtrl.SetItemText(1, 2, _T("女"));
m_listCtrl.InsertItem(2, _T("王五"));
m_listCtrl.SetItemText(2, 1, _T("30"));
m_listCtrl.SetItemText(2, 2, _T("男"));
```
这里添加了三行数据,分别为张三、李四和王五,每行数据包含姓名、年龄和性别三个字段。
完整示例代码如下:
```
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
m_listCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, CRect(0,0,0,0), this, 1);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_listCtrl.SetTextColor(RGB(0, 0, 255));
m_listCtrl.SetTextBkColor(RGB(255, 255, 255));
m_listCtrl.SetBkColor(RGB(240, 240, 240));
m_listCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T("年龄"), LVCFMT_CENTER, 100);
m_listCtrl.InsertColumn(2, _T("性别"), LVCFMT_CENTER, 100);
m_listCtrl.InsertItem(0, _T("张三"));
m_listCtrl.SetItemText(0, 1, _T("20"));
m_listCtrl.SetItemText(0, 2, _T("男"));
m_listCtrl.InsertItem(1, _T("李四"));
m_listCtrl.SetItemText(1, 1, _T("25"));
m_listCtrl.SetItemText(1, 2, _T("女"));
m_listCtrl.InsertItem(2, _T("王五"));
m_listCtrl.SetItemText(2, 1, _T("30"));
m_listCtrl.SetItemText(2, 2, _T("男"));
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
```
阅读全文