Coloring Graphic Objects

Graphical objects present special challenges. For example, some application display buttons that have pictures on them instead of, or in addition to, text. Do the colors selected in Control Panel apply to this case?

If the picture on the button is monochrome, the answer is simple. The button face should always be drawn in the standard system color (the COLOR_BTNFACE or COLOR_3DFACE button value), and the foreground image should be drawn in the standard button text color (the COLOR_BTNTEXT button value). If the image is drawn inside a window rather than on a button, it is more appropriate to use the COLOR_WINDOW and COLOR_WINDOWTEXT values instead of the button colors.

A multicolored picture presents more problems. The easiest solution is to include a monochrome image that can be used on monochrome displays or that can be used when the user has chosen a nondefault button face color or has requested High Contrast Mode (described later in this document).

If you cannot include monochrome images, you can try creating them on the fly from the multicolored images by identifying light and dark areas as foreground and background. For example, a bitmap that has a multicolored object on a white background could be mapped with all colors other than white in the appropriate system foreground color and with white in the system background color. These colors could be reversed for images designed with a dark background.