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.

958 lines
42 KiB
C

2 years ago
// XTPDatePickerPaintManager.h: interface for the CXTPDatePickerPaintManager class.
//
// This file is a part of the XTREME CALENDAR 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(_XTPDATEPICKERPAINTMANAGER_H__)
#define _XTPDATEPICKERPAINTMANAGER_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPDatePickerControl;
class CXTPDatePickerItemMonth;
class CXTPDatePickerItemDay;
class CXTPWinThemeWrapper;
// ----------------------------------------------------------------------
// Summary:
// Class CXTPDatePickerPaintManager handles most of the drawing
// activities for the DatePicker control.
// Remarks:
// Utility class, handles most of the drawing activities. It stores
// all settings needed by the control to perform drawing operations :
// fonts, colors, styles for all others classes of control. It also
// implements all functions for drawing typical graphical primitives,
// functions that directly work with the device context. Can be
// \overridden to provide another look and feel for the control.
// Thus, you have an easy way to change the "skin" of your control.
// Provide your own implementation of CXTPDatePickerPaintManager and do
// not change the functionality all other classes of the control.<p/>
// Create a DatePickerPaintManager by calling its constructor.
// Furthermore, call the "get" and "set" functions to change the
// settings as needed.
// ----------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPDatePickerPaintManager : public CXTPCmdTarget
{
friend class CXTPDatePickerControl;
public:
//-----------------------------------------------------------------------
// Summary:
// Default paint manager constructor.
// Remarks:
// Handles initial initialization.
// See Also: RefreshMetrics()
//-----------------------------------------------------------------------
CXTPDatePickerPaintManager();
// -------------------------------------
// Summary:
// Default paint manager destructor.
// Remarks:
// Handles member item deallocation.
// -------------------------------------
virtual ~CXTPDatePickerPaintManager();
// -------------------------------------------------------------------
// Summary:
// This member function performs initialization for the Paint
// Manager.
// Remarks:
// Initializes all drawing defaults (fonts, colors, etc.). Most of
// defaults are system defaults.
// -------------------------------------------------------------------
virtual void RefreshMetrics();
// ---------------------------------------------------------------------
// Summary:
// This member function is called to fill the control's background.
// Parameters:
// pDC : Pointer to a valid device context.
// rcClient : A CRect that contains the control's client area rectangle
// coordinates.
// ---------------------------------------------------------------------
virtual void DrawBackground(CDC* pDC, CRect rcClient);
// ---------------------------------------------------------------------
// Summary:
// This member function draws a border around the control.
// Parameters:
// pDC : Pointer to a valid device context.
// pControl : Pointer to a CXTPDatePickerControl object.
// rcClient : A CRect that contains the control's client area rectangle
// coordinates.
// bDraw - TRUE to draw else Adjust client rectangle.
// ---------------------------------------------------------------------
virtual void DrawBorder(CDC* pDC, const CXTPDatePickerControl* pControl, CRect& rcClient, BOOL bDraw);
// ----------------------------------------------------------------------------------
// Summary:
// This member function draws scrolling triangles on the highest
// bounded month headers.
// Parameters:
// pDC : Pointer to a valid device context.
// rcSpot : A CRect object that contains the coordinates of the triangle spot area.
// bLeftDirection : A BOOL that is used to determine the triangle direction. TRUE
// the left scrolling triangle is drawn.FALSE the right
// scrolling triangle is drawn.
// clrColor : The triangle color
// bYears : BOOL flag to show or hide arrow to scroll by years
// ----------------------------------------------------------------------------------
virtual void DrawScrollTriangle(CDC* pDC, CRect rcSpot, BOOL bLeftDirection,
COLORREF clrColor = 0, BOOL bYears = FALSE);
// -------------------------------------------------------------------
// Summary:
// This member function is used to obtain the control's background
// color.
// Returns:
// Color used for filling the controls client rectangle.
// -------------------------------------------------------------------
virtual COLORREF GetControlBackColor();
// ----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the background color of the
// standard day item.
// Returns:
// A COLORREF object that contains the background color of the
// standard day item.
// ----------------------------------------------------------------------
virtual COLORREF GetDayBackColor();
// --------------------------------------------------------------------
// Summary:
// This member function is used to obtain the color of the standard
// day item.
// Returns:
// A COLORREF object that contains the color of the standard day
// item.
// --------------------------------------------------------------------
virtual COLORREF GetDayTextColor();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain a pointer to the font for
// the standard day item.
// Example:
// <code>
// // Get the font and extract a LOGGFONT structure.
// LOGFONT lf;
// GetDayTextFont()-\>GetLogFont(&lf);
// // Create new italic font.
// lf.lfItalic = 1;
// CFont fontItalic;
// Italic.CreateFontIndirect(&lf);
// </code>
// Returns:
// A pointer to a CFont object that contains the standard day item
// font.
//-----------------------------------------------------------------------
virtual CFont* GetDayTextFont();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain a pointer to the font for
// the bolded day item.
// Returns:
// A pointer to a CFont object that contains the bold day item font.
//-----------------------------------------------------------------------
virtual CFont* GetDayTextFontBold();
// ----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the background color of the
// non-month day item.
// Returns:
// A COLORREF object that contains the background color of the non
// month day item.
// ----------------------------------------------------------------------
virtual COLORREF GetNonMonthDayBackColor();
// ---------------------------------------------------------------------
// Summary:
// This member function is used to obtain the color of the non-month
// day item.
// Returns:
// A COLORREF object that contains the color of the non-month day
// item.
// ---------------------------------------------------------------------
virtual COLORREF GetNonMonthDayTextColor();
// ---------------------------------------------------------------------
// Summary:
// This member function is used to obtain the font of the non-month
// day item.
// Example:
// <code>
// // Get the font and extract a LOGGFONT structure.
// LOGFONT lf;
// GetNonMonthDayTextFont-\>GetLogFont(&lf);
// // Create new old font
// lf.lfWeight = FW_BOLD;
// CFont fontBold;
// fntBold.CreateFontIndirect(&lf);
// </code>
// Returns:
// Pointer to a CFont object that contains the font of the non-month
// day item.
// ---------------------------------------------------------------------
CFont* GetNonMonthDayTextFont();
// ----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the background color of the
// selected day item.
// Returns:
// A COLORREF object that contains the background color of the
// selected day item.
// ----------------------------------------------------------------------
virtual COLORREF GetSelectedDayBackColor();
// --------------------------------------------------------------------
// Summary:
// This member function obtains the color of the selected day item.
// Returns:
// A COLORREF object that contains the color of the selected day
// item.
// --------------------------------------------------------------------
virtual COLORREF GetSelectedDayTextColor();
// ------------------------------------------------------------------
// Summary:
// This member function obtains the background color of the month
// header area.
// Returns:
// A COLORREF object containing the background color of the month
// header area.
// ------------------------------------------------------------------
virtual COLORREF GetMonthHeaderBackColor();
// -------------------------------------------------------------------
// Summary:
// This member function obtains the text color of the month header
// area.
// Returns:
// A COLORREF object containing the text color of the month header
// area.
// -------------------------------------------------------------------
virtual COLORREF GetMonthHeaderTextColor();
// ------------------------------------------------------------------
// Summary:
// This member function obtains the font of the month header area
// text.
// Returns:
// A CFont object that contains the font of the month header area
// text.
// ------------------------------------------------------------------
CFont* GetHeaderTextFont();
// --------------------------------------------------------------------
// Summary:
// This member function returns the background color of the days of
// weeks area.
// Returns:
// A COLORREF object containing the background color of the days of
// weeks area.
// --------------------------------------------------------------------
virtual COLORREF GetDaysOfWeekBackColor();
// --------------------------------------------------------------------------
// Summary:
// This member function obtains the text color of the days of weeks area.
// Returns:
// A COLORREF object containing the text color of the days of weeks
// area.
// --------------------------------------------------------------------------
virtual COLORREF GetDaysOfWeekTextColor();
// ---------------------------------------------------------------------
// Summary:
// This member function obtains the font of the days of weeks area
// text.
// Returns:
// A pointer to a CFont object that contains the font of the days of
// weeks area text.
// ---------------------------------------------------------------------
CFont* GetDaysOfWeekTextFont();
// --------------------------------------------------------------------
// Summary:
// This member function obtains the background color of the week
// numbers area.
// Returns:
// A COLORREF object that contains the background color of the week
// numbers area.
// --------------------------------------------------------------------
virtual COLORREF GetWeekNumbersBackColor();
// ----------------------------------------------------------------------
// Summary:
// This member function obtains the text color of the week numbers
// items.
// Returns:
// A COLORREF object that contains the text color of the week numbers
// items.
// ----------------------------------------------------------------------
virtual COLORREF GetWeekNumbersTextColor();
// --------------------------------------------------------------------
// Summary:
// This member function obtains the font of the week numbers items.
// Returns:
// A pointer to a CFont object that contains the font of the week
// numbers items.
// --------------------------------------------------------------------
CFont* GetWeekNumbersTextFont();
// ----------------------------------------------------------------------
// Summary:
// This member function obtains the background color of the pop-up
// month list control.
// Returns:
// A COLORREF object that contains the background color of the pop-up
// month list control.
// ----------------------------------------------------------------------
virtual COLORREF GetListControlBackColor();
// ----------------------------------------------------------------------
// Summary:
// This member function obtains the text color of the pop-up month
// list control.
// Returns:
// A COLORREF object that contains the text color of the pop-up month
// list control.
// ----------------------------------------------------------------------
virtual COLORREF GetListControlTextColor();
// --------------------------------------------------------------------
// Summary:
// This member function obtains the font of the pop-up month list
// control.
// Returns:
// A pointer to a CFont object that contains the font of the pop-up
// month list control.
// --------------------------------------------------------------------
CFont* GetListControlTextFont();
// ----------------------------------------------------------------------
// Summary:
// This member function obtains the highlighting color of the "Today"
// item.
// Returns:
// A COLORREF object that contains the highlighting color of the
// "Today" item.
// ----------------------------------------------------------------------
virtual COLORREF GetHighlightTodayColor();
// ---------------------------------------------------------------------
// Summary:
// This member function sets the button's font.
// Parameters:
// fontButton : A CFont pointer to the button's font object.
// Remarks:
// Call this function to set the new button's font from the provided
// CFont object.
// See Also:
// SetButtonFontIndirect(LOGFONT*), GetButtonFont()
// ---------------------------------------------------------------------
void SetButtonFont(CFont* fontButton);
//-----------------------------------------------------------------------
// Summary:
// This member function sets the button's font using a LOGFONT
// structure.
// Parameters:
// lFont - Pointer to the LOGFONT structure.
// Remarks:
// This member function creates and sets the new button's font
// from the given LOGFONT structure.
// See Also: SetButtonFont(CFont*), GetButtonFont()
//-----------------------------------------------------------------------
void SetButtonFontIndirect(LOGFONT* lFont);
// --------------------------------------------------------------------
// Summary:
// This member function is used to obtain the button's font object.
// Returns:
// A pointer to the button's CFont object.
// See Also:
// SetButtonFontIndirect(LOGFONT* lFont), SetButtonFont(CFont*
// fontButton)
// --------------------------------------------------------------------
CFont* GetButtonFont();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the control's default font
// using a LOGFONT structure.
// Parameters:
// lFont - Pointer to the LOGFONT structure.
// Remarks:
// This member function creates and sets the control's new default
// font from the given LOGFONT structure.
//-----------------------------------------------------------------------
void SetFontIndirect(LOGFONT* lFont);
// ----------------------------------------------------------------------
// Summary:
// This member function is used to draw the control's buttons.
// Parameters:
// pDC : Pointer to a valid device context.
// rcButton : A CRect that contains the button area bounding
// rectangle coordinates.
// strButton : A CString that contains the string of the button's
// text.
// bIsDown : A BOOL that determines if the button is down or up.
// bIsHighLight : A BOOL that determines if the button is highlighted.
// Remarks:
// Use this member function to draw buttons in the appropriate state.
// The state depends on the bIsDown parameter, the button may be
// drawn pressed or released. Furthermore, depending on the
// bIsHighLight, the button may be drawn with highlighted borders.
// Example:
// <code>
// for (int i = 0; i \< GetButtonCount(); i++)
// {
// CXTPDatePickerButton* pButton = GetButton(i);
// if (pButton-\>m_bVisible)
// DrawButton(pDC, pButton-\>m_rcButton, pButton-\>m_strCaption,
// pButton-\>m_bPressed, pButton-\>m_bHighlight);
// }
// </code>
// ----------------------------------------------------------------------
virtual void DrawButton(CDC* pDC, const CRect& rcButton, const CString& strButton,
BOOL bIsDown, BOOL bIsHighLight);
// --------------------------------------------------------------------
// Summary:
// Call this member function to draw a single month day in the month
// area.
// Parameters:
// pDC : Pointer to a valid device context.
// pDay : Pointer to day object.
// Returns:
// TRUE if the drawing is successful, FALSE else.
// Remarks:
// It is called from CXTPDatePickerItemDay implementation.
// You can override it to customize drawing.
// --------------------------------------------------------------------
virtual BOOL DrawDay(CDC* pDC, CXTPDatePickerItemDay* pDay);
// --------------------------------------------------------------------
// Summary:
// Call this member function to draw the month header in the month
// area.
// Parameters:
// pDC : Pointer to a valid device context.
// pMonth : Pointer to month object.
// Remarks:
// It is called from CXTPDatePickerItemMonth implementation.
// You can override it to customize drawing.
// --------------------------------------------------------------------
virtual void DrawMonthHeader(CDC* pDC, CXTPDatePickerItemMonth* pMonth);
// --------------------------------------------------------------------
// Summary:
// Call this member function to draw the week numbers in the month
// area.
// Parameters:
// pDC : Pointer to a valid device context.
// pMonth : Pointer to month object.
// Remarks:
// It is called from CXTPDatePickerItemMonth implementation.
// You can override it to customize drawing.
// --------------------------------------------------------------------
virtual void DrawWeekNumbers(CDC* pDC, CXTPDatePickerItemMonth* pMonth);
// --------------------------------------------------------------------
// Summary:
// Call this member function to draw the days of the week in the
// month header.
// Parameters:
// pDC : Pointer to a valid device context.
// pMonth : Pointer to month object.
// Remarks:
// It is called from CXTPDatePickerItemMonth implementation.
// You can override it to customize drawing.
// --------------------------------------------------------------------
virtual void DrawDaysOfWeek(CDC* pDC, CXTPDatePickerItemMonth* pMonth);
// ----------------------------------------------------------------
// Summary:
// This member function is used to calculate the day's bounding
// rectangle coordinates.
// Parameters:
// pDC : Pointer to a valid device context.
// Remarks:
// This member function calculates the day's bounding rectangle
// coordinates for the given device context current day's font.
// Returns:
// A CSize object containing the day's bounding rectangle
// coordinates.
// ----------------------------------------------------------------
virtual CSize CalcDayRect(CDC* pDC);
// -------------------------------------------------------------------
// Summary:
// This member function calculates the month's header bounding
// rectangle coordinates.
// Parameters:
// pDC : Pointer to a valid device context.
// Remarks:
// This member function calculates the month's header bounding
// rectangle coordinates for the given device context's current
// header font.
// Returns:
// A CSize object containing the month's header bounding rectangle
// coordinates.
// -------------------------------------------------------------------
virtual CSize CalcMonthHeaderRect(CDC* pDC);
// ---------------------------------------------------------------------
// Summary:
// This member function calculates the "day of week names" bounding
// rectangle coordinates.
// Parameters:
// pDC : Pointer to a valid device context.
// Remarks:
// Calculates the "day of week names" bounding rectangle coordinates
// for the given device context's current header font.
// Returns:
// A CSize object that contains the "day of week names" rectangle
// coordinates.
// ---------------------------------------------------------------------
virtual CSize CalcDayOfWeekRect(CDC* pDC);
// ----------------------------------------------------------------------
// Summary:
// This member function calculates the "week numbers" bounding
// rectangle coordinates.
// Parameters:
// pDC : Pointer to a valid device context.
// Remarks:
// Calculates the "week numbers" bounding rectangle coordinates for
// the given device context's current header font.
// Returns:
// A CSize object that contains the "week numbers" bounding rectangle
// coordinates.
// ----------------------------------------------------------------------
virtual CSize CalcWeekNumbersRect(CDC* pDC);
// ------------------------------------------------------------------
// Summary:
// This member function calculates the month's bounding rectangle
// coordinates.
// Parameters:
// pDC : Pointer to a valid device context.
// Remarks:
// Calculates the Month's bounding rectangle coordinates for the
// given device context's current header font.
// Returns:
// A CSize object that contains the month's bounding rectangle
// coordinates.
// ------------------------------------------------------------------
virtual CSize CalcMonthRect(CDC* pDC);
// --------------------------------------------------------------------------------
// Summary:
// This member function is used to switch "Themes".
// Parameters:
// bEnableTheme : A BOOL that is used as a flag to indicate if themes are
// enabled. Set to TRUE if Themes are enabled, FALSE Themes not enabled.
// --------------------------------------------------------------------------------
virtual void EnableTheme(BOOL bEnableTheme);
// --------------------------------------------------------------------
// Summary:
// This member function is used to obtain the back cursor used for
// weeks selection.
// Returns:
// A handle of the loaded cursor.
// --------------------------------------------------------------------
virtual HCURSOR GetCursorBack();
protected:
// --------------------------------------------------------------------
// Summary:
// This member function is used to draw a black triangle.
// Parameters:
// pDC : Pointer to a valid device context.
// pt0 : Apex coordinate.
// pt1 : Apex coordinate.
// pt2 : Apex coordinate.
// clrColor : The triangle color
// --------------------------------------------------------------------
virtual void Triangle(CDC* pDC, CPoint pt0, CPoint pt1, CPoint pt2, COLORREF clrColor = 0);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain current paint theme.
// Returns:
// A paint theme ID from enum XTPCalendarTheme.
//-----------------------------------------------------------------------
XTPCalendarTheme GetPaintTheme() const;
protected:
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set current paint theme.
// Parameters:
// ePaintTheme - A paint theme ID from enum XTPCalendarTheme.
//-----------------------------------------------------------------------
void SetPaintTheme(XTPCalendarTheme ePaintTheme);
public:
CSize m_szDayMargin;
CXTPPaintManagerColor m_clrControlBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the control.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrHighlightToday; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// color for highlighting the "Today" item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrSelectedDayBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the selected day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrMonthHeaderBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the month header area.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrMonthHeaderText; // ------------------------------------------------------------------
// This member variable is a COLORREF object that is used as the text
// color of the month header area.
// ------------------------------------------------------------------
CXTPPaintManagerColor m_clrSelectedDayText; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// color of the selected day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrMonthBorder;
CXTPPaintManagerColor m_clrMonthHeaderButton;
CXTPPaintManagerColor m_clrDayBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the normal day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrDayText; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// color of the usual day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrNonMonthDayBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the non month day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrNonMonthDayText; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// color of the non month day item.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrDaysOfWeekBack; // --------------------------------------------------------------
// This member variable is a COLORREF object that is used for the
// background color of the days of weeks area.
// --------------------------------------------------------------
CXTPPaintManagerColor m_clrDaysOfWeekText; // ------------------------------------------------------------------
// This member variable is a COLORFEF object that is used as the text
// color of the days of weeks area.
// ------------------------------------------------------------------
CXTPPaintManagerColor m_clrWeekNumbersBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the week numbers area.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrWeekNumbersText; // ------------------------------------------------------------------
// This member variable is a COLORREF object that is used as the text
// color of the week numbers items.
// ------------------------------------------------------------------
CXTPPaintManagerColor m_clrButtonText; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// color for the button text.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrButtonFace; // -------------------------------------------------------------------
// This member variable is a COLORREF object that is used as the basic
// color for buttons.
// -------------------------------------------------------------------
CXTPPaintManagerColor m_clrListControlBack; // -------------------------------------------------------------
// This member variable is a COLORREF object that is used as the
// background color of the pop-up month list control.
// -------------------------------------------------------------
CXTPPaintManagerColor m_clrListControlText; // ------------------------------------------------------------------
// This member variable is a COLORREF object that is used as the text
// color of the pop-up month list control.
// ------------------------------------------------------------------
protected:
COLORREF m_clrStaticBorder; // Static border color
COLORREF m_clr3DShadow; // -----------------------------------------------------------------
// This member variable is a COLORREF object that is used to specify
// the color for shadow areas.
// -----------------------------------------------------------------
COLORREF m_clr3DLight; // -----------------------------------------------------------------
// This member variable is a COLORREF object that is used to specify
// the color for light areas
// -----------------------------------------------------------------
COLORREF m_clr3DFace; // -------------------------------------------------------------
// This member variable is a COL ORREF object that is used as the
// color for the button text.
// -------------------------------------------------------------
COLORREF m_clr3DText; // -------------------------------------------------------------------
// This member variable is a COLORREF object that is used as the basic
// color for buttons.
// -------------------------------------------------------------------
CFont m_fontDay; // ----------------------------------------------------------------
// This member variable is a CFont object that is used for the font
// \of the usual day item.
// ----------------------------------------------------------------
CFont m_fontDayBold; // ----------------------------------------------------------------
// This member variable is a CFont object that is used for the font
// \of the bold day item.
// ----------------------------------------------------------------
CFont m_fontNonMonthDay; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the non month day item.
// ---------------------------------------------------------------
CFont m_fontHeader; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the header text.
// ---------------------------------------------------------------
CFont m_fontDaysOfWeek; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the days of weeks text.
// ---------------------------------------------------------------
CFont m_fontWeekNumbers; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the week number items text.
// ---------------------------------------------------------------
CFont m_fontListControl; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the pop-up month list control.
// ---------------------------------------------------------------
CFont m_fontButton; // ---------------------------------------------------------------
// This member variable is a CFont object that is used as the font
// for the button text.
// ---------------------------------------------------------------
BOOL m_bEnableTheme; // ---------------------------------------------------------------
// This member variable is a BOOL that is used to indicate if Luna
// colors are enabled. The valid values are TRUE to enable Luna
// colors, otherwise FALSE.
// ---------------------------------------------------------------
CXTPWinThemeWrapper* m_themeButton; // -----------------------------------------------------------------
// This member variable is a CXTPWinThemeWrapper object that is used
// as the theme wrapper for the Paint Manager.
// -----------------------------------------------------------------
HCURSOR m_hCursorBack; // Back cursor for week selection
XTPCalendarTheme m_nPaintTheme; // Store the Paint Theme;
protected:
friend class CXTPDatePickerControl;
};
//---------------------------------------------------------------------------
// Summary:
// Class CXTPDatePickerThemeOffice2007 is derived from CXTPDatePickerTheme
// is implement Office 2007 style for DatePicker control.
// Example:
// <code>
// if (m_bThemeOffice2007)
// {
// CXTPDatePickerThemeOffice2007* pTheme2007 = new CXTPDatePickerThemeOffice2007;
// m_wndDatePicker.SetTheme(pTheme2007);
// }
// else
// {
// m_wndDatePicker.SetTheme(NULL);
// }
// </code>
// See Also:
// CXTPDatePickerThemeOffice2007
//---------------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPDatePickerThemeOffice2007 : public CXTPDatePickerPaintManager
{
public:
CXTPDatePickerThemeOffice2007();
virtual ~CXTPDatePickerThemeOffice2007();
public:
virtual void RefreshMetrics();
virtual void DrawButton(CDC* pDC, const CRect& rcButton, const CString& strButton, BOOL bIsDown, BOOL bIsHighLight);
protected:
void SetControl(CXTPDatePickerControl* pControl);
protected:
COLORREF GetResourceColor(LPCTSTR pcszColorName, COLORREF clrDefault);
};
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetControlBackColor() {
return m_clrControlBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetDayBackColor() {
return m_clrDayBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetDayTextColor() {
return m_clrDayText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetDayTextFont() {
return &m_fontDay;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetDayTextFontBold() {
return &m_fontDayBold;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetNonMonthDayBackColor() {
return m_clrNonMonthDayBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetNonMonthDayTextColor() {
return m_clrNonMonthDayText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetNonMonthDayTextFont() {
return &m_fontNonMonthDay;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetSelectedDayBackColor() {
return m_clrSelectedDayBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetSelectedDayTextColor() {
return m_clrSelectedDayText;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetMonthHeaderBackColor() {
return m_clrMonthHeaderBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetMonthHeaderTextColor() {
return m_clrMonthHeaderText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetHeaderTextFont() {
return &m_fontHeader;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetDaysOfWeekBackColor() {
return m_clrDaysOfWeekBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetDaysOfWeekTextColor() {
return m_clrDaysOfWeekText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetDaysOfWeekTextFont() {
return &m_fontDaysOfWeek;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetWeekNumbersBackColor() {
return m_clrWeekNumbersBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetWeekNumbersTextColor() {
return m_clrWeekNumbersText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetWeekNumbersTextFont() {
return &m_fontWeekNumbers;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetListControlBackColor() {
return m_clrListControlBack;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetListControlTextColor() {
return m_clrListControlText;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetListControlTextFont() {
return &m_fontListControl;
}
AFX_INLINE COLORREF CXTPDatePickerPaintManager::GetHighlightTodayColor() {
return m_clrHighlightToday;
}
AFX_INLINE CFont* CXTPDatePickerPaintManager::GetButtonFont(){
return &m_fontButton;
}
AFX_INLINE void CXTPDatePickerPaintManager::EnableTheme(BOOL bEnableTheme) {
m_bEnableTheme = bEnableTheme;
RefreshMetrics();
}
AFX_INLINE HCURSOR CXTPDatePickerPaintManager::GetCursorBack() {
return m_hCursorBack;
}
AFX_INLINE XTPCalendarTheme CXTPDatePickerPaintManager::GetPaintTheme() const {
return m_nPaintTheme;
}
#endif // !defined(_XTPDATEPICKERPAINTMANAGER_H__)