Thursday, April 14, 2005, 11:50:50 AM, you wrote: > Vitaliy Margolen wrote: >>Tuesday, April 12, 2005, 10:57:02 PM, you wrote: >> >> >>>On Tue, Apr 12, 2005 at 04:13:32PM -0600, Vitaliy Margolen wrote: >>> >>> >>>>Well, yes and no. This is custom draw callback/notify. It shouldn't change >>>>control's parameters, such as color. At least on a permanent basis. This is >>>>what >>>>set color messages for. >>>> >>>> >>>Agreed. But judging by what listview is doing, we do need to use them when >>>we are drawing the item (or whatever). But I agree, we must not change >>>those parameters permanently. >>> >>> >> >>Ok, I need help here. I spend half a day trying to fix this. I moved send >>notify >>after color and font setup in TREEVIEW_DrawItem. It's getting closer to >>native. >>But! No matter what I try, I can't set background color from within Delphi App >>on DrawItemNotify. Which does work on windows. >> >>Am I missing something? I changed text mode to opaque, so it should use >>current >>brush color for background. But when I printing GetDCBrushColor it stays the >>same! Could we have a problem somewhere in GDI? >> >>
> It seems fairly simple to me. You need to make a note of what the app > changed the nmtvcd.clrTextBk field to (I do this in the toolbar control > by passing the notify structure around), and then changes some lines in > TREEVIEW_DrawItem: > hbrBk = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); ->> > if (nmtvcd->clrTextBk != CLR_NONE) > hbrBk = CreateSolidBrush(nmtvcd->clrTextBk); > else > hbrBk = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); > and then further down: > if ((infoPtr->dwStyle & TVS_TRACKSELECT) && (wineItem == infoPtr->>hotItem)) ->> > if (nmtvcd->clrTextBk != CLR_NONE) > hbrBk = CreateSolidBrush(nmtvcd->clrTextBk); > if ((infoPtr->dwStyle & TVS_TRACKSELECT) && (wineItem == infoPtr->>hotItem)) Thank you! One thing I can't understand is why I couldn't see those changes directly in DC? Unless there are something more going on inside Delphi components. Any way, thanks for you help, patch in a queue.