由于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高度。