Thursday, January 27, 2011

Simplest way to change listview and treeview colours

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?

  • 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.

    From Ferruccio
  • Have a look at the following macros:

    ListView_SetBkColor
    ListView_SetTextColor

    TreeView_SetBkColor
    TreeView_SetTextColor

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

    • GetBkColor
    • SetBkColor
    From macbirdie
  • 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

    From Alan

0 comments:

Post a Comment