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

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

你可能感兴趣的:(框架,list,dialog,menu)