Which icon sizes should I use in my application?

We've covered icons in the past, but I thought it was a good idea to review this information because I often see applications that use incorrect icon sizes. At a high level, here are the icon sizes Windows Mobile developers need to be aware of:

Windows Mobile Professional and Classic devices (formerly known as "Pocket PC"):

  • Normal DPI: 16x16 (small) and 32x32 (large)
  • High DPI: 32x32 (small) and 64x64 (large)

Windows Mobile Standard devices (formerly known as "Smartphone"):

  • Normal DPI: 16x16 (small) and 32x32 (large)
  • High DPI: 22x22 (small) and 44x44 (large)

So which of these icons should you use and where?

Application icons:

Your application's main icon (the first one embedded inside your .exe) is used in various places such as File Explorer, Task Manager, Start menu shortcuts, 3rd party memory management utilities etc. Since you cannot predict or control whether the user will see this as a large or small icon, you should support the maximum number of sizes for this icon (i.e. both small and large formats).

If you are creating a single .exe that is designed to run on all Windows Mobile devices, use an application icon with these sizes:

  • 16x16
  • 22x22
  • 32x32
  • 44x44
  • 64x64

If your .exe is only designed for "Pocket PC" devices, use an application icon with these sizes:

  • 16x16
  • 32x32
  • 64x64

If your .exe is only designed for "Smartphone" devices, use an application icon with these sizes:

  • 16x16
  • 22x22
  • 32x32
  • 44x44

"Feature" icons:

These are icons used within your own application. As a developer you can control the appearance of common controls such as ListViews and TreeViews used within your application, and hence you can decide which icon formats are most appropriate. For example, if you use a ListView control with the LVS_ICON style, you will need a "large" icon. If you use the LVS_REPORT style instead, you will need a "small" icon. To create applications that look great across all Windows Mobile devices (regardless of "Pocket PC" or "Smartphone"), support all the necessary icon formats - but no more than you really need. For example, if I know that my ListView will only use the LVS_REPORT style, my icon only needs to support the "small" sizes (16x16, 22x22 and 32x32). Similarly if my ListView only uses the LVS_ICON style, I only need the "large" sizes (32x32, 44x44 and 64x64).

Bottomline, treat your application icon and feature icons differently. And strive to support all the icon sizes that are necessary across different types of Windows Mobile devices. I hope this post helps you improve the look and feel of your applications. Please post comments if you need more clarification around icon size issues.

-Mel Sampat (PM, Windows Mobile shell team)