我曾经在CSDN上把以下的问题,分成几篇贴,分数不下一百分
现求如下解:
一、要改变CListCtrl的每一行的高度,不想改变字体,也不想加ICON,如何办?
二、要改变CListCtrl中Header的颜色
三、要改变ClistCtrl中某一单元格的颜色
如果嫌分不够,可以再加。
如果能解决其中一个问题,本人也感激不尽

解决方案 »

  1.   

    1。http://www.codeguru.com/Cpp/controls/listview/advanced/article.php/c1013/
    2。http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c4185/
    3。http://www.codeproject.com/listctrl/highlightlistctrl.asp
      

  2.   

    lixiaosan(小三)
    不对啊,
    我栏不到WM_MEASUREITEM
    在这里加断点,结果进不去啊
      

  3.   

    二、要改变CListCtrl中Header的颜色
    CHeadCtrl能解决吗?
      

  4.   

    1, 插入 icon 可以改变高度. 如果不插入的话, 需要重载 OnMeasureItem. 在 mfc 消息反射中, 还必须重载 DrawItem , 并设置 listctrl 的 ownerdraw 属性样式.  customdraw 不能改变 item 的高度.2, subclass headerctrl. 在 OnCreate, PreCreateWindow中子类话 headerctrl. 用一个变量控制只子类化一次. 因为, 如果从 dlg template 创建 listctrl, 那么 PreCreateWindow 将得不到调用. OnCreate 是第一次调用的; 如果用代码创建 listctrl, 那么 PreCreateWindow 中第一次 subclass headctrl.3, 用 ownerdraw, 或者 customdraw 都可以. ownerdraw 重载消息反射的DrawItem, 并设置ownerdrawfixed 属性. customdraw 使用消息反射 ON_NM_CUSTOMDRAW_REFLECT() .
      

  5.   

    问一下enoloo,请问OwnDraw和CustomDraw有什么区别,另外就是OwnDraw的属性设置以后,实际上CListCtrl是作为一个整体来看的,每次DrawItem是自绘List的一行,包括背景,字体,等等,这个DrawItem函数我猜测一定是在CListCtrl的OnPaint消息中去处理,对于滚动的时候,你要根据滚动
    的信息更新整个CListCtrl的客户区,这一部分我还美很好的理解。CustomDraw实际上是一个WM_NOTIFY
    消息,我对这个消息还不熟悉,有个小小问题,iSubItem是做什么用的,我好像没有用到
    我现在在ListCtrl中绑定ComboBoxEdit都是用的OwnDraw,不知道用CustDraw和这个有什么区别
    希望有详细的回答,我的mail [email protected],qq 29853734