vc 中改变ListCtrl每一行(每一个Item)的高度

来源:互联网 发布:国内游戏策划 知乎 编辑:程序博客网 时间:2024/05/16 17:04

由于ListCtrl类本身并没有改变Item高度的方法或属性,因此,改变Item高度需要放在ListCtrl实例化的时候进行。

 

你是不是想说,我最不喜欢自己重绘控件了!

 

是的,我也不喜欢,现在我们另辟蹊径,用另外的思路解决。

 

方法很简单,在ListCtrl示例所属的Dialog添加WM_MEASUREITEM的消息响应函数(或者PostMessage,然后使用WindowProc处理)。MSDN中对于WM_MEASUREITEM消息的描述如下:

 

The WM_MEASUREITEM message is sent to the owner window of a combo box, list box, list view control, or menu item when the control or menu is created.

A window receives this message through its WindowProc function.

 

简单来书,WM_MEASUREITEM是框架中一些控件创建条目时框架收到的消息。

 

具体到ListCtrl,可以在相应该函数时使用

afx_msg void OnMeasureItem(   int nIDCtl,      LPMEASUREITEMSTRUCT lpMeasureItemStruct );

进行处理,其中 nIDCtl是控件ID,lpMeasureItemStruct 可以自定义Item高度。

原创粉丝点击