[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


Drawing icons in applications
=============================

DrawIconStateA()
----------------

   The V44 icon.library provides functions to support applications
which need to display icons in their own GUI. These include icon
editors, WBInfo() patches and full Workbench replacements. The pre-V44
method to draw an icon inside a window was to manipulate the images
embedded into the icon directly. As of V44, this technique is strongly
discouraged.

   The new icon.library/DrawIconStateA() function provides the same
functionality in a straightforward way. Shall the icon appearance be
changed with future extensions of the icon.library, your application
will pick them up automatically.

LayoutIconA()
-------------

   The icon.library supports drawing icons on any screen (not just on
the Workbench screen). For these reason, icon imagery can be loaded into
memory and then remapped at a later time by calling LayoutIconA().

   LayoutIconA() is called implicitly by GetIconTagList() (1). The
icons are automatically remapped for display on the screen selected
using IconControlA().  This could be undesiderable when your
application wants to display the icon on another screen.

   Note that LayoutIconA() allocates shared pens from the passed screen
using the graphics.library/ObtainBestPen() function.  These pens will
be released when the icon is disposed (with FreeDiskObject()) or when
the icon is remapped again by LayoutIcon(). It is VERY IMPORTANT that
your custom or public screen is not closed until there are still icon
objects remapped for it. See the LayoutIconA() AutoDoc for possible
workarounds.

   ---------- Footnotes ----------

   (1) To prevent this from happening, you must explicitly set the
ICONGETA_RemapIcon tag to FALSE.