Tuesday, April 12, 2005, 3:09:57 PM, you wrote:
On Tue, Apr 12, 2005 at 12:24:11PM -0600, Vitaliy Margolen wrote:
Also small fix for custom draw color. Native does not use colors returned from NM_CUSTOMDRAW notify.
This is odd, and it deserves at the very least a comment in the code, but more preferably a unit test.
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.
I have a Delphi Custom TreeView sample that has all kinds of problems. For one, the colors it is setting are not displayed correctly. Second, and mach bigger problem, it goes into endless loop. I have traced this down to SetItemT invalidating new item if anything got changed. The problem is Delphi using callbacks for both image indexes.
Also I can't quite understand why TVM_GETITEM for iImage returns something like 0x4079D5D0 while traces show 0, 1 or 3 dependant on open/closed/has children.
I'm working on it right now to see what could be done about it. At the very least we should distinguish what should cause screen update and what's not. Simple memcmp doesn't cut it here. So far it looks like we'll have to do something different if iImage or iSelectedImage returned as a callback.
As far as conformance tests go, I'm not sure how to do it. The part I would like to test is what changes could cause TreeView node to get invalidated. Do I have to subclass TreeView to define notify message handler? if not, how to do this inside the conformance test?
Vitaliy