MFC list control 设置行高

参考:

CMFCListCtrl控件使用

方法是行里插入一个1像素宽的icon

修改标题的方法是修改控件的字体

代码的效果是这样的

1.新建一个MFC类CMyListCtrl,继承自CListCtrl

MyListCtrl.h

 1 #pragma once
 2 
 3 
 4 // CMyListCtrl
 5 
 6 class CMyListCtrl : public CListCtrl
 7 {
 8     DECLARE_DYNAMIC(CMyListCtrl)
 9 
10 public:
11     CMyListCtrl();
12     virtual ~CMyListCtrl();
13 
14     int m_nRowHeight;
15 
16 protected:
17     DECLARE_MESSAGE_MAP()
18 public:
19     void SetRowHeigt(int);
20     void AutoColumn(void);
21 };

MyListCtrl.cpp

 1 // MyListCtrl.cpp : 实现文件
 2 //
 3 
 4 #include "stdafx.h"
 5 #include "MyListCtrl.h"
 6 
 7 
 8 // CMyListCtrl
 9 
10 IMPLEMENT_DYNAMIC(CMyListCtrl, CListCtrl)
11 
12 CMyListCtrl::CMyListCtrl()
13 {
14 
15 }
16 
17 CMyListCtrl::~CMyListCtrl()
18 {
19 }
20 
21 
22 BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
23 END_MESSAGE_MAP()
24 
25 //取巧方法设置行高,只要这一个函数就行了
26 void CMyListCtrl::SetRowHeigt(int nHeight)
27 {
28     CImageList im;
29     im.Create(1, nHeight, ILC_COLOR4, 10, 10);
30     SetImageList(&im, LVSIL_SMALL);
31 }
32 
33 //调整最后一列的宽度是剩余宽度
34 void CMyListCtrl::AutoColumn(void)
35 {
36     CRect xRect;
37     int nLastColumnWidth = 0;
38     int nColumnNum = 0;
39 
40     GetClientRect(&xRect);//OleControl的
41     nLastColumnWidth = xRect.Width();
42     nColumnNum = GetHeaderCtrl()->GetItemCount();
43 
44     for (int i = 0; i < nColumnNum - 1; i++)
45         nLastColumnWidth = nLastColumnWidth - GetColumnWidth(i);
46     SetColumnWidth(nColumnNum - 1, nLastColumnWidth);
47 }

2.将控件变量的类型改成自己的类   m_listFont要声明和释放  cFont m_listFont;

3.在OnInitDialog添加代码

 1     m_listFont.CreatePointFont(200, _T("宋体"));
 2     m_list.SetFont(&m_listFont);
 3 
 4     DWORD dwStyle = m_list.GetExtendedStyle();
 5     dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES;
 6     //LVS_EX_HEADERDRAGDROP | LVS_EX_SUBITEMIMAGES;
 7     //选择整行 | 绘制表格 | 复选框 | 项目头可拖拽 | 图标列表
 8     m_list.SetExtendedStyle(dwStyle);
 9     m_list.SetRowHeigt(70);
10     m_list.InsertColumn(0, _T("1234"), LVCFMT_LEFT, 200);
11     m_list.InsertColumn(1, _T("ABCD"), LVCFMT_LEFT, 200);
12     m_list.AutoColumn();
13 
14     m_list.InsertItem(0, _T("111"));
15     m_list.SetItemText(0, 1, _T("QQQ"));
16     m_list.SetCheck(0, 1);//选中
17     m_list.InsertItem(1, _T("222"));
18     m_list.SetItemText(1, 1, _T("WWW"));

 

posted @ 2020-12-14 20:08  ckrgd  阅读(2765)  评论(0编辑  收藏  举报