XP Style CColorControl Class with Themed Gradient Buttons | CodeGuru

XP Style CColorControl Class with Themed Gradient Buttons

CColorControl This article describes a set of control-derived classes for a colorful presentation by using XP-styled hottracked controls with themed gradient buttons. Gives your edit boxes and buttons a nice look and feel both in XP and 2K This work is partly based on the articles “XP Style CBitmapButton (CHoverBitmapButton)” by Rail Jon Rogut and […]

Written By
CodeGuru Staff
CodeGuru Staff
Oct 4, 2004
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

CColorControl

This article describes a set of control-derived classes for a colorful presentation by using XP-styled hottracked controls with themed gradient buttons. Gives your edit boxes and buttons a nice look and feel both in XP and 2K

This work is partly based on the articles “XP Style CBitmapButton (CHoverBitmapButton)” by Rail Jon Rogut and “Color Controls” by Paul J. Weiss. Credits to you both.

Note that the orginal versions of the control-derived classes were written by Paul J. Weiss. Because the application I wrote this for is intended to run on touchscreen systems, I focused mainly on the base class CColorControl, the CEdit derived CColorEdit, and, most of all, on the CButton-derived CColorButton. These classes have been completly rewritten whereas the CColorStatic and CColorComboBox classes consist of the original work by Paul. I kept them here in case anyone wants to make an effort. Don’t expect them to work as they are (no offense, Paul).

Usage

  • Runs on Windows 2000 (classic mode only; see sample screendump) and Windows XP
  • CColorButton uses Uxtheme.h and tmschema.h (and corresponding libraries) for visual styling. Have your project include the path to these files (found in the SDK)
  • CColorButton uses GDI+ for drawing. gdiplus.dll must be present in targeted systems. Refer to SDK
  • Add theme.cpp and ColorControl.cpp to your project
  • Include ColorControl.h where you need it
  • Add CButton and CEdit controls to your dialogtemplate with desired style (disabled, readonly, and so forth)
  • Create control variables for each control of type CColorButton or CColorEdit
  • Compile and run
Advertisement

Common Functions

void CColorControl::SetColors (const COLORREF FGColor,
                               const COLORREF BGColor,
                               const COLORREF HotFGColor,
                               const COLORREF HotBGColor);
void CColorControl::SetDisabledColors (const COLORREF
                    DisabledFGColor = RGB_GRAYTEXT,
                    const COLORREF DisabledBGColor = RGB_BTNFACE);
void CColorControl::SetColorBg (COLORREF clr);
void CColorControl::SetColorFg (COLORREF clr);
void CColorControl::SetColorBgHot (COLORREF clr);
void CColorControl::SetColorFgHot (COLORREF clr);
void CColorControl::SetColorBgDisabled (COLORREF clr);
void CColorControl::SetColorFgDisabled (COLORREF clr);
void CColorControl::SetRolloverDelay (UINT mSeconds);
void CColorControl::EnableHot (bool bEnable};    // turns hottracking
                                                 // on/off

CColorButton Functions

void EnableXP(bool bEnable);    // turns XP-style (if present on
                                // system) on/off
void SetGradientColors(BYTE alphaUpper,    COLORREF rgbUpper,
                       BYTE alphaLower,    COLORREF rgbLower,
                       BYTE alphaLowerHot, COLORREF rgbLowerHot);

Don’t hesitate to improve or change whatever you feel like and post it back. I’m all for perfection!

Good luck.

Anders

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.