Is there a reliable way for an app to determine the size of the icons that Vista is displaying on the desktop
I'm not sure if this is a bug or, more probably, an opportunity to learn something new. As a developer of icon software, it's frequently important to know the current size of the desktop icons. There are a couple of ways to check this. I like to get a handle to the system image list (SHGFI_LARGEICON) and then query the imagelist for the size of its images.
I'm running under build 5308. Video is set to 32-bit color and 1280x1024 resolution. My method of querying the system image list (large) indicates 32x32 images. The ShellIconSize registry key indicates 32. If I use the desktop UI to access the classic Advanced settings for display properties, the icon object indicates a size of 32. Yet Vista is displaying desktop icons at 48x48!
Opening a Windows Explorer folder view displays size 16 for small icons, 48 for medium icons, and scales 256 images for the large and extra large sizes. I cannot find anywhere that 32x32 icons are displayed.
Besides determining the desktop icon size, I'm very interested in learning anything new in the area of system image lists that can be shared. For example:
- Is the concept of the large image list fading away now that the icon size in folders is variable
- Does Vista always read 256, hi-res images from the disk or is there a new system image list used by Vista to cache/manage these images
TIA!

System image lists and sizes
Steini
The system imagelists still exist at 16, 32, etc, and the system still uses them if the user picks the corresponding icon size. ShellIconSize is the size of the system imagelist; it's not the size of the icon displayed in Explorer. (Hasn't been true since Windows 95, which let you switch to small icons in Explorer while keeping ShellIconSize at 32.)
I think 32x32 is still the default for a few places, like the Start menu.
The actual size of the icons in any particular Explorer view are not exposed as far asm I'm aware. That's just another internal variable.
CRames
Yoni Gibbs
Raymond - You've been a huge help in more ways that I can mention. Thanks a bunch for your insight into the image lists! I understand now, and am looking forward towards a new, "way cool" future of the scope of icons in Vista.
jkline
Thanks, Raymond. I'll go with the flow and keep my eyes and ears open to learn how to adapt to the new "fluid" scheme.
I'd very much like to participate in the Vista shell newsgroups at betanews. Thank you in advance if you can help!
ruben_ruvalcaba_camba
Thanks, Raymond. I understand the variety of display sizes - "fluid" is a good term to use! Can you help just a bit more, please
I'm still stuck on just trying to determine the size of the desktop icons. I've updated our icon editor to open the very first time with a Vista-style Task Dialog: What do you want to do A) Create icons for My Computer or B) Create icons for other computers.
We can provide a much simpler list of image formats for the "My Computer" choice. For example, 256x256 RGBA, 48x48 RGBA and 16x16 RGBA would appear to support all of Vista's needs in my own installation.
Am I thinking in the right direction here or wandering down a poor path
If you agree with this strategy of making things simple for first-time users, we need to know what the desktop icon size is. The only hope is for Vista to expose this value. I've always queried the large system image list rather than guess or rely on registry values (yea, TheOldNewThing!).
Never-the-less, why isn't the registry ShellIconSize value tracking this value What is the purpose of the system image list reporting the images at 32x32 when this size is not being used anywhere in my installation
Martin Dietz
tculler
The icon size in Explorer windows is much more fluid now - users can grab the slider and pick any size they want. You just have to be ready for anything. The old sizes remain for compatibility, though Explorer itself isn't wedded to those values any more (as you can see).
Check out the SHIL_JUMBO imagelist for your 256x256 image needs.
Artur I.
Hey, Raymond! I've done some more exploring. At best, I think that something is "in progress" and not yet working as planned. Please let me approach this from a user's perspective and see what you think.
You mentioned, "The system imagelists still exist at 16, 32, etc, and the system still uses them if the user picks the corresponding icon size." My premise is that the desktop is "stuck-in-a-rut", displaying 48x48 images without regard for any settings.
In build 5308: (You need some arranged icons on your desktop to observe this test. Three or four in a column on the left of the monitor is fine.
1) Right-click the desktop and select Personalize
2) Select the "Color Scheme" option.
3) Click on "Open Classic Appearance Properties"
4) Click "Advanced"
5) Select the "Icon" object. The size in my default install is "32".
Now change the size to 48, click OK, and click Apply. When the system completes the update, select one of the icons on the desktop and press F5 to refresh the desktop. The icons remain at 48 pixels, but Windows now arranges them in a larger spacing pattern.
You can repeat this and enter "64" for an icon size. Once again the icons remain at 48, but the spacing pattern grows even larger when the desktop is refreshed.
Further observations: When you change the size of the Icon object using this procedure, the "Shell Icon Size" registry is updated to reflect the new size, and Windows reports this value to applications as the size of the Large system image list.
Conclusion:
Settings are being updated exactly as in all pervious versions of Windows. The Vista desktop is even acknowledging the change in Shell Icon Size when it computes the desktop icon spacing. It just isn't honoring the size that the user requests - always displaying 48 pixel images.
Raymond, I would be FIYD if you would have my bits turned on for the betanews shell newsgroups.