5

I'm trying to find a simple way to change the colour of the text and background in listview and treeview controls in WTL or plain Win32 code.

I really don't want to have to implement full owner drawing for these controls, simply change the colours used.

I want to make sure that the images are still drawn with proper transparency.

Any suggestions?

Michał Trybus
  • 11,526
  • 3
  • 30
  • 42
Simon Steele
  • 11,558
  • 4
  • 45
  • 67

4 Answers4

3

Have a look at the following macros:

ListView_SetBkColor
ListView_SetTextColor

TreeView_SetBkColor
TreeView_SetTextColor

ChrisN
  • 16,635
  • 9
  • 57
  • 81
2

There are also appropriate methods of the CListViewCtrl and CTreeViewCtrl wrapper classes:

  • GetBkColor
  • SetBkColor
macbirdie
  • 16,086
  • 6
  • 47
  • 54
2

You may also want to take a look at WTL's CCustomDraw::OnItemPrePaint (that's if you need to control the drawing of individual items)

A good article that describes this process is here

Alan
  • 13,510
  • 9
  • 44
  • 50
0

It's been a while since I've use the win32 API directly, but I believe that if you handle the WM_ERASEBACKGROUND message for your control, you can use FillRect() in your handler to paint the background using whatever color you like.

Ferruccio
  • 98,941
  • 38
  • 226
  • 299