Howdy Lev, thanks for the info! At 09:42 AM 6/1/2003 -0400, you wrote:
I think I can tell you what you need to do to allow small and large icons specified seperately. First, you need your window to be WNDCLASSEX not WNDCLASS. This gives you the hIcon element as before, which is to be of "system large" size, and in addition gives you an element hIconSm, which is of "system small" size. Now of course you need to know what system large, system small sizes are (the current code seems to assume system large is 32x32). You can get this using GetSystemMetrics with parameters SM_CXICON, SMCYICON for the system large and SM_CXSMICON, SMCYSMICON for system small. The system large size is determined by the video driver and cannot be changed any other way, the system small size is controlled by the "caption buttons" size setting in the "display properties" applet, appearance tab.
Yup, that's listed (GCL_HICONSM) right next to the GWL_ value we presently use, I just never saw it!
I did a quickie experiment and added bilinear filtering on the BW icon format only. Results: xcalc still looks like garbage even @32x32: instead of a black mismash, it's a gray one. There is just no good way of making some older icons look good, and newer apps use colored icons so there isn't quite so big a subsampling problem. IMHO, while you could add filtering and 16x16 icon creation to the present code, it wouldn't be worth the effort. Try it for yourself, use twm and take a snapshot of the big ol' xcalc icon, and then use your favorite image app to shrink it to 32x32 and I think you'll be disappointed no matter how you slice it.
You also pointed out a possible problem, instead of using the system supplied X/Y of an icon we've got 32x32 hard coded. It seems that this assumption is correct on all Windoze versions so far, but it might be a bit more "proper" to replace the "iconSize=32;" to "iconSize=GetSystemMetrics(SM_CXICON);". It could also be changed to have non-square icons, in fact it was originally written to support them but I ended up just overriding the Y scale with the X scale.
-Earle F. Philhower, III [EMAIL PROTECTED] cdrlabel - ZipLabel - FlpLabel http://www.cdrlabel.com