You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
407 lines
15 KiB
C
407 lines
15 KiB
C
2 years ago
|
// XTPButtonTheme.h: interface for the CXTPButtonTheme class.
|
||
|
//
|
||
|
// This file is a part of the XTREME CONTROLS MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTPBUTTONTHEME_H__)
|
||
|
#define __XTPBUTTONTHEME_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPButton;
|
||
|
class CXTPWinThemeWrapper;
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonTheme is a class used to perform Button Theme
|
||
|
// drawing tasks. This is the base class for all button themes.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonTheme : public CXTPControlTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonTheme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonTheme();
|
||
|
|
||
|
// -----------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPButtonTheme object, handles cleanup and
|
||
|
// deallocation
|
||
|
// -----------------------------------------------------------
|
||
|
virtual ~CXTPButtonTheme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the focus rectangle
|
||
|
// for the button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawFocusRect(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
virtual void DrawButton(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
virtual void DrawButtonVisualStyleBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called by the theme manager to refresh
|
||
|
// the visual styles used by each components theme.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void RefreshMetrics(CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the text for the button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawPushButtonText(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function draws the icon for the button, if one has
|
||
|
// been defined.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawPushButtonIcon(CDC* pDC, CXTPButton* pButton);
|
||
|
void DrawPushButtonDropDown(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the color used to draw
|
||
|
// the button text.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// An RGB value that represents the button text color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual COLORREF GetTextColor(CXTPButton* pButton);
|
||
|
|
||
|
virtual void DrawCheckBoxMark(CDC* pDC, CXTPButton* pButton);
|
||
|
virtual void DrawRadioButtonMark(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the text for the button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonText(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
virtual void DrawGroupBox(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
void CalcRects(CDC* pDC, CXTPButton* pButton, CRect* pButtonText, UINT* pDrawFlags, CRect* pButtonIcon);
|
||
|
void CalcRect(CDC* pDC, CXTPButton* pButton, LPRECT lprc, int code);
|
||
|
BOOL IsVisualThemeUsed(CXTPButton* pButton);
|
||
|
void AlphaEllipse(CDC* pDC, CRect rc, COLORREF clrBorder, COLORREF clrFace);
|
||
|
|
||
|
void EnableToolbarStyle(BOOL bEnable) { m_bToolbarStyle = bEnable; }
|
||
|
|
||
|
CXTPPaintManagerColor m_crTextDisabled; // RGB value for disabled text color.
|
||
|
CXTPPaintManagerColor m_crBorderHilite; // RGB value for border highlight color.
|
||
|
CXTPPaintManagerColor m_crBorderShadow; // RGB value for border shadow color.
|
||
|
CXTPPaintManagerColor m_crBorder3DHilite; // RGB value for 3D border highlight color.
|
||
|
CXTPPaintManagerColor m_crBorder3DShadow; // RGB value for 3D border shadow color.
|
||
|
CXTPPaintManagerColor m_crBack;
|
||
|
CXTPPaintManagerColor m_crText;
|
||
|
|
||
|
CXTPWinThemeWrapper* m_themeButton;
|
||
|
|
||
|
BOOL m_bOffsetHiliteText;
|
||
|
int m_nBorderWidth;
|
||
|
BOOL m_bFlatGlyphs;
|
||
|
BOOL m_bToolbarStyle;
|
||
|
|
||
|
int m_cxBorder;
|
||
|
int m_cyBorder;
|
||
|
int m_cyEdge;
|
||
|
int m_cxEdge;
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonFlatTheme is a class used to perform Flat Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonFlatTheme : public CXTPButtonTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonFlatTheme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonFlatTheme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonUltraFlatTheme is a class used to perform Ultra Flat Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonUltraFlatTheme : public CXTPButtonTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonUltraFlatTheme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonUltraFlatTheme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called by the theme manager to refresh
|
||
|
// the visual styles used by each components theme.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshMetrics(CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
virtual void DrawGroupBox(CDC* pDC, CXTPButton* pButton);
|
||
|
virtual void DrawCheckBoxMark(CDC* pDC, CXTPButton* pButton);
|
||
|
virtual void DrawRadioButtonMark(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
CXTPPaintManagerColor m_crBackPushed; // RGB value for pushed background color.
|
||
|
CXTPPaintManagerColor m_crBackHilite; // RGB value for highlighted background color.
|
||
|
CXTPPaintManagerColor m_crTextPushed; // RGB value for highlighted text color.
|
||
|
CXTPPaintManagerColor m_crTextHilite; // RGB value for pushed text color.
|
||
|
CXTPPaintManagerColor m_crBackChecked;// RGB value for when the control is checked.
|
||
|
|
||
|
BOOL m_bHiglightButtons;
|
||
|
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonOffice2000Theme is a class used to perform Office 2000 Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonOffice2000Theme : public CXTPButtonUltraFlatTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonOffice2000Theme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonOffice2000Theme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonResourceTheme is a class used to perform Office 2007 Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonResourceTheme : public CXTPButtonUltraFlatTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonResourceTheme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonResourceTheme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
void DrawCheckBoxMark(CDC* pDC, CXTPButton* pButton);
|
||
|
void DrawRadioButtonMark(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called by the theme manager to refresh
|
||
|
// the visual styles used by each components theme.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshMetrics(CXTPButton* pButton);
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonOfficeXPTheme is a class used to perform Office XP Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonOfficeXPTheme : public CXTPButtonUltraFlatTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonOfficeXPTheme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonOfficeXPTheme();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called by the theme manager to refresh
|
||
|
// the visual styles used by each components theme.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshMetrics(CXTPButton* pButton);
|
||
|
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPButtonOffice2003Theme is a class used to perform Office 2003 Theme
|
||
|
// drawing tasks.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPButtonOffice2003Theme : public CXTPButtonOfficeXPTheme
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPButtonOffice2003Theme object
|
||
|
// ----------------------------------------
|
||
|
CXTPButtonOffice2003Theme();
|
||
|
BOOL m_bLunaTheme;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called to draw the background for the
|
||
|
// button.
|
||
|
// Parameters:
|
||
|
// pDC - A CDC pointer that represents the current device
|
||
|
// context.
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
// Returns:
|
||
|
// TRUE if the background was drawn successfully, otherwise returns
|
||
|
// FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawButtonBackground(CDC* pDC, CXTPButton* pButton);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is called by the theme manager to refresh
|
||
|
// the visual styles used by each components theme.
|
||
|
// Parameters:
|
||
|
// pButton - Points to a CXTPButton object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshMetrics(CXTPButton* pButton);
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#endif // !defined(__XTPBUTTONTHEME_H__)
|