Je kan de listcontrol aanmaken met LVS_OWNERDRAWFIXED. Dit zorgt ervoor dat er een WM_DRAWITEM message wordt gestuurd als een item in de listcontrol getekend moet worden.
Je krijgt dan als 'OnDrawItem' wordt een DRAWITEMSTRUCT mee met gegevens over welk item het is e.d.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| CString Text = _T("blablabla");
CDC CurDC;
RECT Rect;
CurDC.Attach(DrawItemStruct->hDC);
Rect.top = DrawItemStruct->rcItem.top;
Rect.bottom = DrawItemStruct->rcItem.bottom;
Rect.left = 0; //Even zelf uitrekenen wat de linkercoordinaat is van je item
Rect.rigth = 0; //Even zelf uitrekenen wat de rechtercoordinaat is van je item
if(DrawItemStruct->itemState & ODS_SELECTED)
{ //Blauw (of wat je in windows heb ingesteld) maken als het geselecteerd is
CurDC.FillSolidRect(&Rect,GetSysColor(COLOR_HIGHLIGHT));
CurDC.SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT));
}
else
{//en weer wit (of wat je in windows heb ingesteld)
CurDC.FillSolidRect(&Rect,GetSysColor(COLOR_WINDOW));
CurDC.SetTextColor(RGB(0,0,0));
}
Rect.left += 1; // Inspringen?
CurDC.DrawText(Text,&Rect,DT_LEFT); // <----- hier wordt de tekst getekend.
CurDC.Detach(); |
Je moet wel even van tevoren het font veranderen in de DC
[
Voor 4% gewijzigd door
The End op 29-01-2003 09:17
]