Introduction
I was looking through this site (and a few others) in order to find a simple, easy to use control that looks better than the ordinary CStatic
. Unfortunately, I was not successful - there are a lot of cool controls around but I needed something different. One of the articles I read entitled CTitleMenu contains a class that creates a menu with a nice gradient title - that was it!. I decided to incorporate some of the code to create a nice static control.... and here it is.
How to add this control to your project:
- Copy files GradientStatic.h and GradientStatic.cpp to your project directory, and add those files to your project.
- Put
#include "GradientStatic.h"
in files where you plan to use this class.
- Change
CStatic
definitions to CGradientStatic
.
- Use the API described below.
CGradientStatic
API
This control is derived from CStatic
and adds only a few new functions. Please note that this class is not perfect. If you need some other features - just modify it!
By default CGradientStatic
uses the following colors:
- The left side is the color of the active application's caption (
COLOR_ACTIVECAPTION
)
- The right side is the color of the button face (
COLOR_BTNFACE
)
- The text is painted used the color of the text on the caption of the application.
void SetColor(COLORREF cl);
SetColor(RGB(255,0,0));
SetColor(GetSysColor(COLOR_ACTIVECAPTION));
void SetGradientColor(COLORREF cl);
void SetTextColor(COLORREF cl);
void SetLeftSpacing(int iNoOfPixels);
void SetTextAlign(int iAlign )
void void SetVerticalGradient(BOOL a_bVertical = TRUE)
Example of Use
m_pBoldFont = new CFont;
m_pBoldFont->CreateFont(25,0,0,0,900,0,0,0,0,0,0,
ANTIALIASED_QUALITY,0,"Arial");
m_cExample.SetFont(m_pBoldFont);
m_cExample.SetWindowText("This is CGradientStatic example :)");
m_cExample2.SetWindowText("This text is in the center !");
m_cExample2.SetColor(RGB(255,0,0));
m_cExample2.SetGradientColor(RGB(0,0,0));
Notes
This control loads the GradientFill
function dynamically from msimg32.dll. If this load fails, for whatever reason, no gradient fill will be performed, but no crash should occur either. This control is free to use :)
Updates
26th April 2004
Added support of vertical gradients, new improved demo application.
6th May 2003
Removed few limitations of previous version. Now code is smaller, simpler and works a bit better.
6th Octber 2002
Paolo Adami suggested a small addition to this control. Thanks to function DrawGradRect(CDC *pDC, CRect r, COLORREF cLeft, COLORREF cRight)
- control will draw gradient background also on systems that don't have msimg32.dll library installed. This code is not such a fancy algorithm as msimg32.dll library and produces worse effect - but it works fine.