The CExtCmdIcon
and CExtBitmap
classes are based on a 32-bit bitmap with alpha channel.
The icons, used everywhere in menus and toolbars, have the Windows Vista/XP icon quality (Figure 1) on any Windows OS starting from 95/NT4 (Figure 2).
The CExtCmdIcon
class also features an enhanced algorithm for generating hovered, pressed, and disabled images.
When some theme is applied, it produces smooth alpha icons with the hue adjustment for disabled icons (Figure 3).
The HICON
handles are not used in these classes, and this completely solves the potential problem of a limited number of GDI objects on Windows OSes. According to Microsoft:
"Windows NT-based computers are limited to 10,000 Graphics Device Interface (GDI) handles per process. Windows 9x-based computers are limited to only 1,200 GDI handles for the whole system. In some versions of Windows, the limit is 640 GDI handles, and all applications must share these GDI handles. For example, the Japanese version of Windows Millennium Edition has a limit of 640 GDI handles."
This is especially important for enterprise-class applications with a large number of user interface objects.
Figure 1. Windows Vista/XP quality icons
Figure 2. Windows Vista/XP quality icons on Windows 98
Figure 3. Smooth disabled icons