Prev: ANN: Seed7 Release 2010-04-04
Next: Netiquette (was: Re: Getting a hConsoleOutput handle wasn't the real problem)
From: Chris Becke on 6 Apr 2010 04:36 On 04/04/2010 17:17, Carl Colijn wrote: > Carl Colijn wrote: > >> Hi group, >> >> I hit upon a problem I can't explain. I have a dialog on which I >> placed a static control with the SS_BITMAP style. On run-time I load >> a bitmap with the LoadImage function and show it in the control with >> the STM_SETIMAGE message. I also include a manifest file to make the >> app use Common Controls version 6, thus enabling Windows XP themes. >> I run this app on a Windows XP SP3 machine. >> >> When I save the bitmap with a full palette all shows OK, but when I >> only add the needed colors in the bitmap's palette (say e.g. a palette >> of only 3 colors) one of the colors in the bitmap shows >> "transparent"...?! By removing the manifest the bitmap with the >> reduced palette will also show OK. To remove unused colors from the >> palette I used the Gimp. >> >> What could be the cause of this? Is it the theme support in XP that >> acts wrong / "special" with these bitmaps, or is the saved bitmap >> corrupt in some way? (corrupt being either really corrupt or not >> conforming to some Windows UI guidelines I'm unaware of.) > > To answer my own post: the bitmap was loaded via LoadImage with the > flag LR_CREATEDIBSECTION. When the flag LR_DEFAULTCOLOR is used, the > problem goes away. Appearantly the bitmaps with the special behavior > didn't result in a compatible bitmap of sorts? I'm still interested in > the exact reason for this if someone wants to elaborate on it, but the > problem has been resolved. > Looking at the bitmaps bits, they both seem to 100% legitimate bitmaps. I can only imagine that the static control for version 6 common controls has a bug in its transparency detection logic - rather than checking the number of bits of color depth they do an explicit number_of_colors == 16 check. At any rate, the version 6 static control is meant (per comments in MSDN) check and process images with alpha to draw them correctly. This would seem to be failing when passed a bitmap with a relatively novel structure. |