CListCtrl列表中,改写几列的文字颜色

 1 void CMyDlg::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
 2 {
 3   NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );     // Take the default processing unless we set this to something else below.    
 4   *pResult = CDRF_DODEFAULT;     // First thing - check the draw stage. If it's the control's prepaint    
 5   // stage, then tell Windows we want messages for every item.     
 6   if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
 7   {
 8       *pResult = CDRF_NOTIFYITEMDRAW;
 9   }    
10   elseif ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )        
11   {
12           // This is the notification message for an item. We'll request        
13           // notifications before each subitem's prepaint stage.         
14           *pResult = CDRF_NOTIFYSUBITEMDRAW;        
15   }    
16   elseif ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )        
17   {
18           // This is the prepaint stage for a subitem. Here's where we set the        
19           // item's text and background colors. Our return value will tell         
20           // Windows to draw the subitem itself, but it will use the new colors        
21           // we set here.        
22           // The text color will cycle through red, green, and light blue.        
23           // The background color will be light blue for column 0, red for        
24           // column 1, and black for column 2.            
25           
26           COLORREF crText, crBkgnd;                
27           if ( 0 == pLVCD->iSubItem )
28           {            
29             crText = RGB(255,0,0);            
30             crBkgnd = RGB(128,128,255);            
31           }        
32           elseif ( 1 == pLVCD->iSubItem )            
33           {         
34              crText = RGB(0,255,0);            
35              crBkgnd = RGB(255,0,0);            
36           }        
37           else            
38           {          
39              crText = RGB(128,128,255);            
40              crBkgnd = RGB(0,0,0);          
41           }         
42           // Store the colors back in the NMLVCUSTOMDRAW struct.        
43           
44           pLVCD->clrText = crText;        
45           pLVCD->clrTextBk = crBkgnd;         
46           
47           // Tell Windows to paint the control itself.        
48           *pResult = CDRF_DODEFAULT;        
49    }
50 }
View Code

 

posted @ 2013-10-29 10:45  陳さん様  阅读(199)  评论(0)    收藏  举报