我想做一个外观类似于 CListView 的视(样式是:LVS_REPORT)要根据各个单元格中的内容的不同来设置不同的文字格式(如:字体、颜色等)请问:我应该如何做?或应该选择什么样的基类?

解决方案 »

  1.   

    你可以:
    ON_NOTIFY_REFLECT(NM_CUSTOMDRAW,   OnCustomDraw)   
        
        
      void   CMyListCtrl::OnCustomDraw(NMHDR*   pNMHDR,   LRESULT*   pResult)   
      {   
      LPNMLVCUSTOMDRAW     lplvcd   =   (LPNMLVCUSTOMDRAW)pNMHDR;   
      *pResult   =   0;   
        
      switch(lplvcd->nmcd.dwDrawStage)     
      {   
      case   CDDS_PREPAINT   :   
      *pResult   =   CDRF_NOTIFYITEMDRAW;   
      break;   
      case   CDDS_ITEMPREPAINT:   
      *pResult   =     CDRF_NOTIFYSUBITEMDRAW;   
      break;   
      case   CDDS_SUBITEM   |   CDDS_ITEMPREPAINT:   
      {   
      CString   sText   =   GetItemText(lplvcd->nmcd.dwItemSpec,0);   
      CDC   *pDC   =   CDC::FromHandle(lplvcd->nmcd.hdc);   
      CRect   bounds;   
        
      GetItemRect(lplvcd->nmcd.dwItemSpec,   &bounds,   LVIR_BOUNDS   );   
      pDC->FillSolidRect(&bounds,RGB(255,255,255));   
        
      *pResult   =   CDRF_SKIPDEFAULT;   
      }   
      break;   
      }   
      }   
        
      上面只是示例代码,具体可以到MSDN中去查。
      还有别忘了设计List的OwnerDraw属性。否则收不到NM_CUSTOMDRAW消息。
      

  2.   

    万分感谢,我一定会去 MSDN 中好好学!