重写CHeaderCtrl,主要是改变颜色 。结果列头就顶层一行改变了颜色,大部分颜色没有变,见附件!不知道原因在哪?请指教主要方法如下:
1、CListCtrl& ListCtrl = GetListCtrl();
ListCtrl.InsertColumn(0,"存储设备名",LVCFMT_LEFT,200);
   //m_list.InsertColumn(1,"大小",LVCFMT_LEFT,150);
   ListCtrl.InsertColumn(1,"备注",LVCFMT_LEFT,300);
  ListCtrl.InsertColumn(2,"IP",LVCFMT_LEFT,200);
m_NewHeaderFont.CreatePointFont(190,"MS Serif"); CHeaderCtrl* pHeader = NULL;
//pHeader=ListCtrl.GetHeaderCtrl();
    pHeader  =  (CHeaderCtrl*)(ListCtrl.GetDlgItem(0));    if(pHeader==NULL)
return;

VERIFY(m_HeaderCtrl.SubclassWindow(pHeader->m_hWnd)); //A BIGGER FONT MAKES THE CONTROL BIGGER
m_HeaderCtrl.SetFont(&m_NewHeaderFont);
    //m_HeaderCtrl.set
HDITEM hdItem; hdItem.mask = HDI_FORMAT;
    int i;
for(i=0; i<m_HeaderCtrl.GetItemCount(); i++)
{
m_HeaderCtrl.GetItem(i,&hdItem); hdItem.fmt|= HDF_OWNERDRAW;

m_HeaderCtrl.SetItem(i,&hdItem);
}
2、
void CHeaderCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{   ASSERT(lpDrawItemStruct->CtlType == ODT_HEADER);   HDITEM hdi;
   TCHAR  lpBuffer[256];   hdi.mask = HDI_TEXT;
   hdi.pszText = lpBuffer;
   hdi.cchTextMax = 256;   GetItem(lpDrawItemStruct->itemID, &hdi);   
CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CBrush   brush;   
    //////////////////
    pDC->SetTextColor(RGB(0,0,0));   
    pDC->SetBkColor(RGB(0,0,242)); 
pDC->SetBkMode(TRANSPARENT);
    
    brush.CreateSolidBrush(RGB(0,0,242));  
    CRect   rect = lpDrawItemStruct->rcItem;  

    //THIS FONT IS ONLY FOR DRAWING AS LONG AS WE DON'T DO A SetFont(...)    
    CBrush   *pOldBrush=pDC->SelectObject(&brush);    
    pDC->FillRect(&rect,&brush);    
    
pDC->FillRect(&rect,&brush);    
    pDC->SelectObject(pOldBrush);    
    pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));    
    //DRAW THE TEXT 
     lpDrawItemStruct->rcItem.top += 6; 
    ::DrawText(lpDrawItemStruct->hDC,lpBuffer,strlen(lpBuffer),      
    &lpDrawItemStruct->rcItem,HDI_FORMAT);    
    pDC->SelectStockObject(SYSTEM_FONT); 
////////////////// //THIS FONT IS ONLY FOR DRAWING AS LONG AS WE DON'T DO A SetFont(...)
pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));
   // Draw the button frame.
   ::DrawFrameControl(lpDrawItemStruct->hDC, 
      &lpDrawItemStruct->rcItem, DFC_BUTTON, DFCS_BUTTONPUSH);
    UINT   uFormat   =   DT_CENTER;
//DRAW THE TEXT
   ::DrawText(lpDrawItemStruct->hDC, lpBuffer, strlen(lpBuffer), 
      &lpDrawItemStruct->rcItem, uFormat);   pDC->SelectStockObject(SYSTEM_FONT);}