原文链接: http://blog.csdn.net/sstower/article/details/9094939

调整CListCtrl 行高通常有3种方法:

1.设定字体
2.设定图片
3.处理MeasureItem消息。

这里只是谈一谈第3种方法,对于CListCtrl 来说,它只支持owner draw fixed 而不像CListBox 既支持owner draw fixed也支持owner draw variable,这里variable是指行高度是可变的;fixed 指行高度固定。
我们虽然很容易在classWizard 找到虚函数DrawItem但却找不到MeasureItem函数。这个时候只能自己动手添加这样的函数,它的原型为:

MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

}

从CListCtrl继承一个类,假如类名叫CTreeList,这样它的函数实现就是这个样子:

void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

}

注意在消息映射部分要添加对WM_MEASUREITEM的反射消息:

ON_WM_MEASUREITEM_REFLECT()

默认情况下,这个消息并不会触发。这时可在PreSubclassWindow()函数中人为触发:

void CTreeList::PreSubclassWindow()
{
CRect rcwin;
GetWindowRect(rcwin);

WINDOWPOS wp;
wp.hwnd=m_hwnd;
wp.cx=rcwin.Width();
wp.cy=rcwin.Height();
wp.flags=SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER;
SendMessage(WM_WINDOWPOSCHANGED,0,(LPARAM)&wp);
}

处理MeasureItem消息:

void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = m_nItemHeight;
}

最后别忘了在构造函数中初始化m_nItemHeight为你想要的值。

这里稍微怪异一点的是为什么发送WM_WINDOWPOSCHANGED会触发WM_MEASUREITEM消息。

谈谈CListCtrl如何调整行高的更多相关文章

  1. vue element UI el-table 表格调整行高的处理方法

    这是我在工作项目中遇到的问题,我想将标记处下方的表格高度调低一点,也就是想实现下面的这个效果: 代码调整如下: 说明: 缩小:行高到一定程度之后便不能缩小. 好像最小35px.各位可以试一下. 升高: ...

  2. 【转】phpcms v9的ckeditor加入给内容调整行高

    今天公司一客户要求一同事给ckeditor加入可以设置行高的功能(他后台是用织梦做的,他是织梦的FANS),我一时闲得慌,也想给咱家的v9加入这个功能,功夫不负有心啊,终于成功了,来给大家分享一下! ...

  3. ListView控件,表格模式下,如何调整行高

    参考说明: https://www.codeproject.com/Articles/1401/Changing-Row-Height-in-an-owner-drawn-Control 如果所有项的 ...

  4. wpf datagrid row height 行高自动计算使每行行高自适应文本

    wpf 的datagrid的行高 要么是Auto,要么是定值:但会带来麻烦就是每行行高都一样. 当需要按内容(主要是wrap 换行的textbox或textblock)来动态调整行高的时候,需要用到d ...

  5. C# 设置Excel数据自适应行高、列宽的2种情况

    Excel表格中,由于各种数据的复杂性,可能存在单元格中的数据字号大小.数据内容长度不一而出现,列宽过宽.过窄或者行高过大.过小的问题.常见的解决方法是调整行高.列宽.在Microsoft Excel ...

  6. iview 标题内边距过大; 调整iview 单元格内边距、行高;

    1css代码: /*调整table cell间隔和行高*/ .ivu-table-cell { padding-left: 1px; padding-right: 1px; } .ivu-table- ...

  7. PyQt(Python+Qt)学习随笔:QTableView中数据行高和列宽的调整方法

    老猿Python博文目录 老猿Python博客地址 一.概述 在QTableView中,除了采取缺省的间隔显示行和列的数据外,还可以通过带调整数据的行高和列宽. 二.列宽调整方法 调整数据行列宽的方法 ...

  8. QuickReport根据每行的内容长度动态调整DetailBand1的行高

    procedure TPosPubFactureRep.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); v ...

  9. element UI 调整表格行高

    使用element UI的table默认属性,绘制表格如下: 该表格的行高太大了,于是想调小一些. 查看官网的文档,table有几个属性, row-style:行的 style 的回调方法,也可以使用 ...

随机推荐

  1. :Windows下RabbitMQ安装及入门

    1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang. ...

  2. C# 引用访问权限,很多老手都不懂

    同样代码表现的不同行为   创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field.C# ...

  3. [转] ssh穿透??未验证。。。

    一. SSH ProxyCommand 实践 http://www.cnblogs.com/shanpow/p/4264867.html 二. SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机 ...

  4. Framework连接oracle数据库以及Cognos服务器出现错误

     1:Framework连接oracle数据库时出现下面错误信息 环境: win2008R2 cognos10.2.1, 服务器上已经安装oracle11.2 content manager连接的也是 ...

  5. [Algorithm] Count Negative Integers in Row/Column-Wise Sorted Matrix

    // Code goes here function countNegative (M, n, m) { count = ; i = ; j = m - ; && i < n) ...

  6. Hive Python Streaming的原理及写法

    在Hive中,须要实现Hive中的函数无法实现的功能时,就能够用Streaming来实现. 其原理能够理解成:用HQL语句之外的语言,如Python.Shell来实现这些功能,同一时候配合HQL语句, ...

  7. WebService 与 Socket 区别

    一.WebService 1.什么是WebService Web Service(WEB服务)能够快捷和方便地综合结合各种系统.商务和任何应用平台.利用最新的Web Service 标准能够使任何软件 ...

  8. PHP高级教程-邮件

    PHP 发送电子邮件 PHP 允许您从脚本直接发送电子邮件. PHP mail() 函数 PHP mail() 函数用于从脚本中发送电子邮件. 语法 mail(to,subject,message,h ...

  9. 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结

    http://blog.csai.cn/user1/265/archives/2005/2465.html 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collec ...

  10. NI License Activator 用法

    双击打开后,看到这种界面,将白色方格通过鼠标右击点绿就能够了. NI <wbr>License <wbr>Activator <wbr>用法 可能会出现这样的情况, ...