MFC CListCtrl 基本操作(二)

CListCtrl 自绘相关

自适应列宽

int CMyListCtrl::GetColumnCount()
{
	// CMyHead 是 CHeadCtrl 的一个子类
	CMyHead * pHeaderCtrl = (CMyHead *)GetHeaderCtrl();
	if (pHeaderCtrl)
	{
		 return pHeaderCtrl->GetItemCount();
	}
	else
	{
		return -1;
	}
}
// 继承 CListCtrl 创建子类,定义下述函数
void CMyListCtrl::AutoColWidth()
{
	// 设置列宽的过程中,不要自动重绘表格
	SetRedraw(FALSE);
	int nCol = GetColumnCount();
	for (int i = 0; i < nCol; i++)
	{
		// LVSCW_AUTOSIZE 自适应列表 文本 宽度后,获得宽度 nColumnWidth
		SetColumnWidth(i, LVSCW_AUTOSIZE);
		int nColumnWidth = GetColumnWidth(i);

		// LVSCW_AUTOSIZE_USEHEADER 自适应 表头文本 宽度,获得宽度 nHeaderWidth
		// 如果是最后一列,则自适应列表整个宽度
		SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
		int nHeaderWidth = GetColumnWidth(i);

		// 取列表文本和表头文本最大的宽度设置列宽(适当放宽一些)
		if (i < nCol - 1)
		{
			SetColumnWidth(i, 16 + max(nColumnWidth, nHeaderWidth));
		}
	}
	// 设置列宽后再启动自动重绘
	SetRedraw(TRUE);
}
// 也可以单独设置最后一列自适应表格宽度
// SetColumnWidth、GetHeaderCtrl 为 CListCtrl 成员函数
SetColumnWidth(GetHeaderCtrl()->GetItemCount()-1, LVSCW_AUTOSIZE_USEHEADER);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值