CShadeButtonST






4.47/5 (9 votes)
Jun 26, 2001
2 min read

178364
A Shaded Button made using CButtonST
Abstract
These are days where almost everything can be skinned or customized.
If you have taken a look at the new Windows XP you will have noticed that even buttons can
have a look far away from that we know.
Even if I don't like very much hard customizations I've noticed how much people liked a button control
called CxShadeButton
posted by Davide Pizzolato.
The idea I've got is to make available one or two virtual functions from CButtonST
, the reference
control for MFC flat buttons, to let the developer to derive his own class and implement custom background paint
still having all the features from the CButtonST
control.
To show this new feature I've decided to reproduce the look and feel of CxShadeButton
. I've extracted from
the original code the class called CxDib
and the code that creates and draws the background effects.
All credits for this code snippets go to Davide Pizzolato.
Virtual functions
CButtonST
makes available two virtual functions.
OnDrawBackground
This function is called every time the button background needs to be painted.
If the button is in transparent mode this function will NOT be called.
// Parameters: // [IN] pDC // Pointer to a CDC object that indicates the device context. // [IN] pRect // Pointer to a CRect object that indicates the bounds of the // area to be painted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD OnDrawBackground(CDC* pDC, LPCRECT pRect)
OnDrawBorder
This function is called every time the button border needs to be painted.
If the button is in standard (not flat) mode this function will NOT be called.
// Parameters: // [IN] pDC // Pointer to a CDC object that indicates the device context. // [IN] pRect // Pointer to a CRect object that indicates the bounds of the // area to be painted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD OnDrawBorder(CDC* pDC, LPCRECT pRect)
The developer derives his own class from CButtonST
then implements these two functions in his new class.
Example
The CButtonST
demo application includes a page that shows how to implement new effects. A class
called CShadeButtonST
has been derived from CButtonST
and the new effects has been implemented
mainly in the OnDrawBackground
method.
Remarks
This architecture makes possible to produce a whole range of buttons not available by default. If someone implements
the look and feel of the new buttons found in Windows XP I will happy to include his code in the next
CButtonST
demo application.