原文链接: http://www.cnblogs.com/sephil/archive/2011/04/03/2004384.html

今天用VC写工具的时候用到CListView,并且ListCtrl的第一列需要自动拉伸,以占满空白区域

Delphi做这个设置是很容易的,只要将Column的AutoSize设置为True就可以了

不过VC/SDK的AutoSize其实是根据Item的文本长度来自动设置Column Width,跟我的要求不符,只好自己实现了

其实很简单,就是觉得麻烦...

void CMyView::AdjustColumnWidth()
{
RECT rc;
CListCtrl& list = GetListCtrl();
CHeaderCtrl* pHeader = list.GetHeaderCtrl();
if (!pHeader)
return;

// 客户区域
list.GetClientRect(&rc);
int nColCount = pHeader->GetItemCount();
// 去掉其他列占用的宽度
for (int i = 1; i < nColCount; i++)
{
rc.right -= list.GetColumnWidth(i);
}

// 去掉滚动条占用的宽度
SCROLLBARINFO sbi;
if (list.GetScrollBarInfo(OBJID_VSCROLL, &sbi))
{
rc.right -= sbi.rcScrollBar.right - sbi.rcScrollBar.left;
}

// 修改列宽
list.SetColumnWidth(0, rc.right > rc.left ? rc.right - rc.left : LVSCW_AUTOSIZE_USEHEADER);
}

使用方法:在OnSize消息中调用一下AdjustColumnWidth就好了

void CMyView::OnSize(UINT nType, int cx, int cy)
{
CListView::OnSize(nType, cx, cy);

if (GetListCtrl().GetSafeHwnd())
  AdjustColumnWidth();
}

VC CListCtrl 第一列列宽自适应的更多相关文章

  1. NPOI 列宽自适应 代码示例

    //列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...

  2. table列等宽

    固定table列等宽 固定table列等宽 style: {table-layout : fixed} html: style="table-layout:fixed" js: o ...

  3. 关于Google圆角高光高宽自适应按钮及其拓展

    关于Google圆角高光高宽自适应按钮及其拓展————源自张鑫旭css讲解 这篇文章发布于 2009年10月24日,星期六,18:08,归类于 css相关. 阅读 48770 次, 今日 1 次 by ...

  4. Sql server 中将数据行转列列转行(二)

    老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName ), --学生名称 ...

  5. POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

    hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

  6. flex 垂直居中、两列对齐、自适应宽

    flex 垂直居中 <div id="parent"> <div id="child"> </div> </div&g ...

  7. POI导出excel列宽自适应

    让单元格宽度随着列和单元格值的宽度自适应: //存储最大列宽 Map<Integer, Integer> maxWidth = new HashMap<>(); // 将列头设 ...

  8. ListView列宽自适应,设置ListView.Column[0].Width := -1;

    使用TListView列表显示内容,如果列内容过长,就会显示成‘XXX…’形式,此时如果双击列标题,列宽将变为自适应.用代码设置如下: 1.设置ListView.Column[0].Width := ...

  9. datatables定义列宽自适应方法

    不同的分辨率以及浏览器自适应,列表不出现滚动条,表格内容自动换行. 方法:通过定义表格列属性,结合<table>CSS样式和定义的列单元格样式 'td_huanhang'/'td_unhu ...

随机推荐

  1. 牛客网-《剑指offer》-从尾到头打印链表

    题目:http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035 C++ /** * struct ListNode { * i ...

  2. SQL字符串分割解析

    常用以下三种: [1]substring( expression ,start , length ): [2]CHARINDEX ( expression1 , expression2 [ , sta ...

  3. 【树莓派】服务配置相关3:基于Ubuntu Server的服务配置

    该文接续之前写过的两篇: [树莓派]服务配置相关 [树莓派]服务配置相关2:基于RPi Desktop的服务配置 这是我个人用来进行树莓派盒子安装配置的脚本,对于外部其他博友,可以部分参考,但不需要逐 ...

  4. 微信 js api[转]

    rainbow661314 微信api /**! * 微信内置浏览器的Javascript API,功能包括: * * 1.分享到微信朋友圈 * 2.分享给微信好友 * 3.分享到腾讯微博 * 4.新 ...

  5. linux2.6.30.4内核移植(2)——Nand Flash驱动移植

    内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 工作基础:http://www.cnblogs.com/nufangrensheng/p/36696 ...

  6. Statement、PreparedStatemnt、CallableStatement

    第一.Statement(Statement代表一个特定的容器,来对一个特定的数据库执行语句) * 执行查询的方法 Statement=Connection.createStatement();//创 ...

  7. 【Zookeeper】源码分析之持久化(三)之FileTxnSnapLog

    一.前言 前面分析了FileSnap,接着继续分析FileTxnSnapLog源码,其封装了TxnLog和SnapShot,其在持久化过程中是一个帮助类. 二.FileTxnSnapLog源码分析 2 ...

  8. 表访问方式---->通过ROWID访问表(table access by ROWID)

    通过ROWID访问表(table access by ROWID)        ROWID是一个伪列,即是一个非用户定义的列,而又实际存储于数据库之中.每一个表都有一个ROWID列,一个ROWID值 ...

  9. python之模块poplib之常见用法

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块poplib之常见用法 ''' 所以,收取邮件分两步: 第一步:用poplib把邮件的原始 ...

  10. RHEL7 MariaDB测试

    MariaDB安装及启动: yum groupinstall mariadb 启动mariadb systemctl restart mariadb systemctl enable mariadb ...