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.
648 lines
32 KiB
C++
648 lines
32 KiB
C++
// XTPTabBaseTheme.h: interface for the CXTPTabBaseTheme 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(__XTPTABCTRLTHEME_H__)
|
|
#define __XTPTABCTRLTHEME_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
class CXTPTabCtrl;
|
|
class CXTPTabBase;
|
|
class CXTPTabCtrlButton;
|
|
class CXTPTabCtrlButtons;
|
|
class CXTPTcbItem;
|
|
class CXTPWinThemeWrapper;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// CXTPTabBaseTheme is used to draw the CXTPTabBase object. All themes
|
|
// used for CXTPTabBase should inherit from this base class.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPTabBaseTheme : public CXTPControlTheme
|
|
{
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Construct a CXTPTabBaseTheme object.
|
|
//-------------------------------------------------------------------------
|
|
CXTPTabBaseTheme();
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPTabBaseTheme object, handles cleanup and deallocation.
|
|
//-------------------------------------------------------------------------
|
|
virtual ~CXTPTabBaseTheme();
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to refresh the colors of the Tab control.
|
|
// Parameters:
|
|
// pTab - Points to the CTabCtrl objects.
|
|
//-------------------------------------------------------------------------
|
|
virtual void RefreshMetrics(CTabCtrl* pTab);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to render the tab control using
|
|
// the specified theme.
|
|
// Parameters:
|
|
// pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pTabCtrl - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawTabCtrl(CDC* pDC, CXTPTabBase* pTabCtrl);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the current background color for the theme.
|
|
// Returns:
|
|
// A CXTPPaintManagerColor object that contains the value for the current background color.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOffice2003::GetBackColor
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPPaintManagerColor GetBackColor() const;
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to redraw the borders for a particular tab.
|
|
// Parameters:
|
|
// pTabCtrl - A pointer to a CXTPTabBase
|
|
// pMember - A pointer to a CXTPTcbItem struct that contains information about the tab.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::AdjustBorders
|
|
//-----------------------------------------------------------------------
|
|
virtual void AdjustBorders(CXTPTabBase* pTabCtrl, CXTPTcbItem* pMember);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a single button of a tab control.
|
|
// Parameters:
|
|
// pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pButton - A pointer to a CXTPTabCtrlButton object.
|
|
// clrButton - The color of the button.
|
|
// Note:
|
|
// This function ASSERTS if called. Must be overridden.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawButton(CDC* pDC, CXTPTabCtrlButton* pButton, COLORREF clrButton);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: This method is called to draw navigate buttons
|
|
// Input: pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pButtons - Pointer to collection of buttons to draw
|
|
// Returns: Background of buttons
|
|
//-----------------------------------------------------------------------
|
|
virtual COLORREF FillButtons(CDC* pDC, CXTPTabCtrlButtons* pButtons);
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the borders around the tab control.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// rcClient - A CRect object that contains the location and the dimensions of the Tab Control.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::DrawBorders
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBorders(CDC* pDC, const CRect& rcClient);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the header for the Tab Control.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
// rcHeader - A CRect object that contains the location and the dimensions of the header.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillHeader, FillTabFaceNativeWinXP
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillHeader(CDC* pDC, CXTPTabBase* pTabCtrlBase, CRect rcHeader);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the tab face so that the
|
|
// tab appears with the Native Windows XP theme.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object. This is the associated TabControl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// FillTabFace, DrawTab, DrawTabIcon, DrawTabText
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillTabFaceNativeWinXP(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called draw the tab face.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// DrawTab, DrawTabIcon, DrawTabText, FillTabFaceNativeWinXP
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a tab on the TabControl.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
// iItem - An int that specifies the tab item to draw.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// DrawTabIcon, DrawTabText, FillTabFaceNativeWinXP, CXTPExcelTabCtrlTheme::DrawTab,
|
|
// FillTabFace
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawTab(CDC* pDC, CXTPTabBase* pTabCtrlBase, int iItem);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the icon on the tab.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// iItem - An int that represents the tab item to draw the icon on.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// DrawTab, DrawTabText, FillTabFace,
|
|
// FillTabFaceNativeWinXP, CXTPExcelTabCtrlTheme::DrawTab
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawTabIcon(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw text on the tab.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// iItem - Index of the item to draw
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// bBoldFont - TRUE if the text is to be bold. FALSE otherwise.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// DrawTabIcon, FillTabFace, FillTabFaceNativeWinXP,
|
|
// CXTPExcelTabCtrlTheme::DrawTab
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawTabText(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem, BOOL bSelected, BOOL bBoldFont);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the bounding rectangle of the tab
|
|
// header area.
|
|
// Parameters:
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
// Returns:
|
|
// A CRect object that contains the bounding rectangle of the header area.
|
|
// See Also:
|
|
// FillHeader
|
|
//-----------------------------------------------------------------------
|
|
virtual CRect GetHeaderRect(CXTPTabBase* pTabCtrlBase);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to paint the Navigation buttons on the tab control.
|
|
// Parameters:
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains
|
|
// information about the tab control.
|
|
// See Also:
|
|
// DrawButton
|
|
//-----------------------------------------------------------------------
|
|
virtual void ShowButtons(CXTPTabBase* pTabCtrlBase);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a border around a Tab child window.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// r - A CRect object that contains the location and the dimensions of the child window.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::DrawBorder, CXTPTabBaseThemeOffice2003::DrawBorder
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBorder(CDC* pDC, const CRect& r);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine the tab style.
|
|
// Parameters:
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// Returns:
|
|
// A DWORD representing the tab style.
|
|
// See Also:
|
|
// IsLeft, IsRight, IsTop, IsBottom, IsVert, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
DWORD GetTabStyle(CTabCtrl* pTabCtrl) const {
|
|
ASSERT(::IsWindow(pTabCtrl->GetSafeHwnd())); return (pTabCtrl->GetStyle() & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM));
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// on the left side of the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn on the left side of the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsRight, IsTop, IsBottom, IsVert, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsLeft(DWORD dwStyle) const {
|
|
return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == TCS_VERTICAL);
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// on the right side of the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn on the right side of the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsLeft, IsTop, IsBottom, IsVert, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsRight(DWORD dwStyle) const {
|
|
return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == (TCS_VERTICAL|TCS_RIGHT));
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// on the top of the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn on the top of the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsLeft, IsRight, IsBottom, IsVert, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsTop(DWORD dwStyle) const {
|
|
return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == 0);
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// on the bottom of the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn on the bottom of the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsLeft, IsRight, IsTop, IsVert, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsBottom(DWORD dwStyle) const {
|
|
return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == TCS_BOTTOM);
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// vertically on the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn vertically on the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsLeft, IsRight, IsTop, IsBottom, IsHorz
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsVert(DWORD dwStyle) const {
|
|
return (IsRight(dwStyle) || IsLeft(dwStyle));
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to determine if the tabs are drawn
|
|
// horizontally on the TabControl.
|
|
// Parameters:
|
|
// dwStyle - A DWORD value that represents the current tab style.
|
|
// Returns:
|
|
// A BOOL. TRUE if the tabs are drawn horizontally on the TabControl.
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GetTabStyle, IsLeft, IsRight, IsTop, IsVert, IsBottom
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsHorz(DWORD dwStyle) const {
|
|
return (IsTop(dwStyle) || IsBottom(dwStyle));
|
|
}
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to swap the dark and the light colors.
|
|
// Parameters:
|
|
// clrLight - An RGB value that represents the light color.
|
|
// clrDark - An RGB value that represents the dark color.
|
|
// See Also:
|
|
// VerticalLine, HorizontalLine, Pixel
|
|
//-----------------------------------------------------------------------
|
|
void SwapColors(COLORREF& clrLight, COLORREF& clrDark);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a vertical line.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// xPos - An int that specifies the logical x-coordinate of the line.
|
|
// yPos - An int that specifies the logical y-coordinate of the line.
|
|
// nLength - Specifies the length of the line.
|
|
// clr - An RGB value that specifies the color of the line.
|
|
// See Also:
|
|
// HorizontalLine, Pixel, SwapColors
|
|
//-----------------------------------------------------------------------
|
|
void VerticalLine(CDC* pDC, int xPos, int yPos, int nLength, COLORREF clr);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a horizontal line.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// xPos - An int that specifies the logical x-coordinate of the line.
|
|
// yPos - An int that specifies the logical y-coordinate of the line.
|
|
// nLength - Specifies the length of the line.
|
|
// clr - An RGB value that specifies the color of the line.
|
|
// See Also:
|
|
// VerticalLine, Pixel, SwapColors
|
|
//-----------------------------------------------------------------------
|
|
void HorizontalLine(CDC* pDC, int xPos, int yPos, int nLength, COLORREF clr);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a single pixel.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// xPos - An int that specifies the logical x-coordinate of the pixel.
|
|
// yPos - An int that specifies the logical y-coordinate of the pixel.
|
|
// clr - An RGB value that specifies the color of the pixel.
|
|
// See Also:
|
|
// VerticalLine, HorizontalLine, SwapColors
|
|
//-----------------------------------------------------------------------
|
|
void Pixel(CDC* pDC, int xPos, int yPos, COLORREF clr);
|
|
|
|
private:
|
|
typedef void (AFX_CDECL* LPFNDRAWROTATEDBITS)(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
|
|
void DrawRotatedButton(CDC* pDC, CRect rcItem, BOOL bSelected, BOOL bSwap, LPFNDRAWROTATEDBITS pfnRotatedProc);
|
|
static void AFX_CDECL DrawRotatedBitsLeft(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
|
|
static void AFX_CDECL DrawRotatedBitsRight(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
|
|
static void AFX_CDECL DrawRotatedBitsBottom(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
|
|
|
|
|
|
public:
|
|
BOOL m_bSystemDrawing; // TRUE to perform system drawing. FALSE otherwise.
|
|
BOOL m_bUseWinThemes; // TRUE to use Windows XP themes when available. FALSE otherwise.
|
|
|
|
protected:
|
|
int m_iEdge; // The Y dimension of a 3D border.
|
|
CXTPWinThemeWrapper* m_themeTab; // Windows Theme wrapper.
|
|
CXTPPaintManagerColor m_clrNormalText; // Color of text in a normal tab. Normal tabs are tabs that are not selected or disabled.
|
|
CXTPPaintManagerColor m_clrSelectedText; // Color of text in a "selected" tab button. The "selected" tab button is the tab with focus. I.e. The tab becomes active when it is clicked.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Class CXTPTabBaseThemeOfficeXP is derived from CXTPTabBaseTheme.
|
|
// This class is used to implement the office XP theme for the tab controls.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPTabBaseThemeOfficeXP : public CXTPTabBaseTheme
|
|
{
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Construct a CXTPTabBaseThemeOfficeXP object.
|
|
//-------------------------------------------------------------------------
|
|
CXTPTabBaseThemeOfficeXP();
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This function calls the base class RefreshMetrics and then
|
|
// calls DeleteObject() for the CPen member variables m_penBlack,
|
|
// m_penWhite, m_penFace, and m_penText. Then the CPen member variables
|
|
// are created with the system default colors for COLOR_BTNTEXT,
|
|
// COLOR_3DHILIGHT, COLOR_3DFACE, and COLOR_3DSHADOW. Finally, the
|
|
// member variable m_iEdge is set to the SM_CYEDGE system value.
|
|
// Parameters:
|
|
// pTab - Points to the CTabCtrl objects.
|
|
//-------------------------------------------------------------------------
|
|
virtual void RefreshMetrics(CTabCtrl* pTab);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to redraw the borders for a particular tab.
|
|
// Parameters:
|
|
// pTabCtrl - A pointer to a CXTPTabBase
|
|
// pMember - A pointer to a CXTPTcbItem struct that contains information about the tab.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::AdjustBorders
|
|
//-----------------------------------------------------------------------
|
|
virtual void AdjustBorders(CXTPTabBase* pTabCtrl, CXTPTcbItem* pMember);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member is called to draw single button of tab control.
|
|
// Parameters:
|
|
// pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pButton - A pointer to a CXTPTabCtrlButton object.
|
|
// clrButton - The color of the button.
|
|
// Note:
|
|
// This function ASSERTS if called. Must be overridden.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawButton(CDC* pDC, CXTPTabCtrlButton* pButton, COLORREF clrButton);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: This method is called to draw navigate buttons
|
|
// Input: pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pButtons - Pointer to collection of buttons to draw
|
|
// Returns: Background of buttons
|
|
//-----------------------------------------------------------------------
|
|
virtual COLORREF FillButtons(CDC* pDC, CXTPTabCtrlButtons* pButtons);
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the icon on the tab.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// iItem - An int that represents the tab item to draw the icon on.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// CXTPTabBaseTheme::DrawTabIcon, FillTabFace,
|
|
// CXTPTabBaseTheme::FillTabFaceNativeWinXP, CXTPExcelTabCtrlTheme::DrawTab
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawTabIcon(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the borders around the tab control.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// rcClient - A CRect object that contains the location and the dimensions of the Tab Control.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::DrawBorders
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBorders(CDC* pDC, const CRect& rcClient);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the header for the Tab Control.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
// rcHeader - A CRect object that contains the location and the dimensions of the header.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::FillHeader, CXTPTabBaseThemeOffice2003::FillHeader
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillHeader(CDC* pDC, CXTPTabBase* pTabCtrlBase, CRect rcHeader);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called draw the tab face.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// CXTPTabBaseThemeOffice2003::FillTabFace, DrawTabIcon,
|
|
// CXTPExcelTabCtrlTheme::DrawTab, CXTPTabBaseTheme::FillTabFaceNativeWinXP
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a border around a Tab child window.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// r - A CRect object that contains the location and the dimensions of the child window.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::DrawBorder, CXTPTabBaseThemeOffice2003::DrawBorder
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBorder(CDC* pDC, const CRect& r);
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Class CXTPTabBaseThemeOffice2003 is derived from CXTPTabBaseThemeOfficeXP.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPTabBaseThemeOffice2003 : public CXTPTabBaseThemeOfficeXP
|
|
{
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Construct a CXTPTabBaseThemeOffice2003 object.
|
|
//-------------------------------------------------------------------------
|
|
CXTPTabBaseThemeOffice2003();
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This function calls the base class RefreshMetrics and then
|
|
// calls DeleteObject() for the CPen member variables m_penBlack,
|
|
// m_penWhite, m_penFace, and m_penText. Then the CPen member variables
|
|
// are created with the system default colors for COLOR_BTNTEXT,
|
|
// COLOR_3DHILIGHT, COLOR_3DFACE, and COLOR_3DSHADOW. Finally, the
|
|
// member variable m_iEdge is set to the SM_CYEDGE system value.
|
|
// Parameters:
|
|
// pTab - Points to the CTabCtrl objects.
|
|
//-------------------------------------------------------------------------
|
|
virtual void RefreshMetrics(CTabCtrl* pTab);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to get the background for the theme.
|
|
// Returns:
|
|
// A CXTPPaintManagerColor object that contains the value for the background color.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::GetBackColor
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPPaintManagerColor GetBackColor() const;
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the header for the Tab Control.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrlBase - A pointer to a CXTPTabBase object. Contains information
|
|
// about the tab control.
|
|
// rcHeader - A CRect object that contains the location and the dimensions of the header.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::FillHeader, CXTPTabBaseThemeOfficeXP::FillHeader
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillHeader(CDC* pDC, CXTPTabBase* pTabCtrlBase, CRect rcHeader);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw the tab face with a gradient fill.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// Returns:
|
|
// An RBG color that represents the dark color of the gradient fill for the tab.
|
|
// See Also:
|
|
// CXTPTabBaseThemeOfficeXP::FillTabFace, CXTPTabBaseThemeOffice2003::FillTabFace,
|
|
// FillTabFace, DrawTab, DrawTabIcon, DrawTabText
|
|
//-----------------------------------------------------------------------
|
|
virtual COLORREF GradientFillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called draw the tab face.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// pTabCtrl - A pointer to a CTabCtrl object.
|
|
// rcItem - A CRect object that contains the location and the dimensions of the tab.
|
|
// bSelected - TRUE if the tab is selected. FALSE otherwise.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::FillTabFace, CXTPTabBaseThemeOfficeXP::FillTabFace,
|
|
// GradientFillTabFace
|
|
//-----------------------------------------------------------------------
|
|
virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to draw a border around a Tab child window.
|
|
// Parameters:
|
|
// pDC - A pointer to a valid device context.
|
|
// r - A CRect object that contains the location and the dimensions of the child window.
|
|
// See Also:
|
|
// CXTPTabBaseTheme::DrawBorder, CXTPTabBaseThemeOfficeXP::DrawBorder
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBorder(CDC* pDC, const CRect& r);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: This method is called to draw navigate buttons
|
|
// Input: pDC - A CDC pointer that represents the current device
|
|
// context.
|
|
// pButtons - Pointer to collection of buttons to draw
|
|
// Returns: Background of buttons
|
|
//-----------------------------------------------------------------------
|
|
virtual COLORREF FillButtons(CDC* pDC, CXTPTabCtrlButtons* pButtons);
|
|
|
|
protected:
|
|
CXTPPaintManagerColorGradient m_clrHeaderFace; // Represents the gradient color of the header face.
|
|
CXTPPaintManagerColor m_clrShadow; // Represents the color used for shadows.
|
|
CXTPPaintManagerColor m_clrHighlight; // Represents the highlight color.
|
|
CXTPPaintManagerColor m_clrDarkShadow; // Represents the color used for dark shadows.
|
|
CXTPPaintManagerColor m_clrButtonSelected; // Represents the color used for selected buttons.
|
|
CXTPPaintManagerColor m_clrButtonNormal; // Represents the color used for normal buttons.
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif // !defined(__XTPTABCTRLTHEME_H__)
|