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.

282 lines
11 KiB
C

2 years ago
// XTPProgressCtrl.h interface for the CXTPProgressCtrl 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(__XTPPROGRESSCTRL_H__)
#define __XTPPROGRESSCTRL_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#ifndef PBS_MARQUEE
#define PBS_MARQUEE 0x08
#endif
#ifndef PBM_SETMARQUEE
#define PBM_SETMARQUEE (WM_USER+10)
#endif
class CXTPWinThemeWrapper;
//===========================================================================
// Summary:
// The ProgressBar control shows the progress of a lengthy operation by
// filling a rectangle with chunks from left to right.
// Remarks:
// A ProgressBar control has a range and a current position. The range
// represents the entire duration of the operation. The current position
// represents the progress the application has made toward completing the
// operation. The Max and Min properties set the limits of the range.
// The Value property specifies the current position within that range.
// Because chunks are used to fill in the control, the amount filled in
// only approximates the Value property's current setting. Based on the
// control's size, the Value property determines when to display the next chunk.
//===========================================================================
class _XTP_EXT_CLASS CXTPProgressCtrl : public CProgressCtrl
{
DECLARE_DYNAMIC(CXTPProgressCtrl)
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPProgressCtrl object
//-----------------------------------------------------------------------
CXTPProgressCtrl();
~CXTPProgressCtrl();
public:
// -----------------------------------------------------------------
// Summary:
// This member function sets the bar color for the progress bar.
// Parameters:
// clrBarColor - COLORREF value that specifies the new bar color.
// Returns:
// COLORREF value used for the bar.
// -----------------------------------------------------------------
void SetBarColor(COLORREF clrBarColor);
// -----------------------------------------------------------------
// Summary:
// Turns marquee mode on or off for the current progress bar
// control.
// Parameters:
// fMarqueeMode - TRUE to turn marquee mode on, or FALSE to turn
// marquee mode off.
// nInterval - Time in milliseconds between updates of the
// marquee animation.
// Example:
// The following code example starts and stops the marquee
// scrolling animation.
// <code>
// int piAlpha[5] = { 25, 50, 75, 100, 100 };
// m_wndProgress.SetMarquee(TRUE, 50);
// </code>
// -----------------------------------------------------------------
BOOL SetMarquee(BOOL fMarqueeMode, int nInterval);
// -----------------------------------------------------------------
// Summary:
// This member function sets the background color for the progress bar.
// Parameters:
// clrNew - COLORREF value that specifies the new background color.
// Returns:
// COLORREF value used for the background.
// -----------------------------------------------------------------
COLORREF SetBkColor(COLORREF clrNew);
// -----------------------------------------------------------------
// Summary:
// This member function sets the text color for the progress bar.
// Parameters:
// clrNew - COLORREF value that specifies the new text color.
// Returns:
// COLORREF value used for text.
// -----------------------------------------------------------------
COLORREF SetTextColor(COLORREF clrNew);
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member to switch the visual theme of the control.
// Parameters:
// nTheme - New visual theme. Can be any of the values listed in the Remarks section.
// Remarks:
// nStyle can be one of the following:
// * <b>xtpControlThemeDefault</b> Standard appearance style.
// * <b>xtpControlThemeFlat</b> Flat appearance style.
// * <b>xtpControlThemeUltraFlat</b> Ultra flat appearance style.
// * <b>xtpControlThemeOffice2000</b> Office 2000 appearance style.
// * <b>xtpControlThemeOfficeXP</b> Office XP appearance style.
// * <b>xtpControlThemeOffice2003</b> Office 2003 appearance style.
// * <b>xtpControlThemeResource</b> Office 2007 appearance style.
//-----------------------------------------------------------------------
void SetTheme(XTPControlTheme nTheme);
//-----------------------------------------------------------------------
// Summary:
// Gets the flat style appearance of the button control.
// Remarks:
// The control will appear flat until the mouse pointer moves over it,
// at which point it appears three-dimensional.
// Returns:
// TRUE if the flat style is used, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL GetFlatStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the flat style appearance of the button control.
// Parameters:
// bFlatStyle - TRUE to use the flat style, FALSE otherwise.
// Remarks:
// The control will appear flat until the mouse pointer moves over it,
// at which point it appears three-dimensional.
//-----------------------------------------------------------------------
void SetFlatStyle(BOOL bFlatStyle = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Determines if the control is drawn using visual styles\SkinFramework, if supported.
// Remarks:
// This method enables Windows XP visual styles for the control. This
// Control will draw with visual styles if the control and the operating
// system supports it.
// Visual styles and SkinFramwork skins are specifications for the
// appearance of controls. GetUseVisualStyle determines whether to
// use the currently set Windows XP visual style. If using SkinFramwork,
// it determines whether to use the currently set style of the SkinFramework.
// Returns:
// TRUE if the currently set Windows XP visual style will be used to
// theme the control. If using SkinFramwork, the currently set style
// of the SkinFramework will be used to skin the control.
//
// FALSE if the currently set appearance\style in the OS will be used.
//-----------------------------------------------------------------------
BOOL GetUseVisualStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Enables Windows XP visual styles for the control.
// Remarks:
// This method enables Windows XP visual styles for the control. This
// Control will draw with visual styles if the control and the operating
// system supports it.
// Visual styles and SkinFramwork skins are specifications for the
// appearance of controls. GetUseVisualStyle determines whether to
// use the currently set Windows XP visual style. If using SkinFramwork,
// it determines whether to use the currently set style of the SkinFramework.
// Parameters:
// bUseVisualStyle - TRUE if the currently set Windows XP visual style will be used to
// theme the control. If using SkinFramwork, the currently set style
// of the SkinFramework will be used to skin the control.
//
// FALSE if the currently set appearance\style in the OS will be used.
//-----------------------------------------------------------------------
void SetUseVisualStyle(BOOL bUseVisualStyle = TRUE);
protected:
// -----------------------------------------------------------------
// Summary:
// This member is called to update color, text and other visual elements
// of the control.
// -----------------------------------------------------------------
void RefreshMetrics();
void DrawNcBorders(CDC* pDC, CRect rc);
//-----------------------------------------------------------------------
// Summary:
// A helper for rendering the control appearance.
// Parameters:
// pDC - Pointer to a valid device context
//-----------------------------------------------------------------------
void DoPaint(CDC* pDC);
void PaintOffice2007(CDC* pDC);
// -----------------------------------------------------------------
// Summary:
// This member function gets the background color for the progress bar.
// Returns:
// COLORREF value used for the background.
// -----------------------------------------------------------------
COLORREF GetBackColor();
void DoStep(int nStep);
//{{AFX_CODEJOCK_PRIVATE
DECLARE_MESSAGE_MAP()
BOOL PreCreateWindow(CREATESTRUCT& cs);
void PreSubclassWindow();
void Init();
//{{AFX_MSG(CXTPEdit)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSysColorChange();
LRESULT OnSetPos(WPARAM /*wParam*/, LPARAM /*lParam*/);
LRESULT OnStepIt(WPARAM /*wParam*/, LPARAM /*lParam*/);
void OnTimer(UINT_PTR nIDEvent);
LRESULT OnStartMarquee(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
//}}AFX_CODEJOCK_PRIVATE
protected:
BOOL m_bPreSubclassInit;
int m_nMarqueePos;
BOOL m_bUseVisualStyle;
int m_nMarqueeDelay;
CXTPWinThemeWrapper* m_themeProgress;
XTPControlTheme m_nTheme;
CXTPPaintManagerColor m_clrBorderNormal;
CXTPPaintManagerColor m_clrBarColor;
CXTPPaintManagerColor m_clrTextColor;
CXTPPaintManagerColor m_clrBackColor;
BOOL m_bFlatStyle;
};
AFX_INLINE BOOL CXTPProgressCtrl::SetMarquee(BOOL fMarqueeMode, int nInterval) {
ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, PBM_SETMARQUEE, (WPARAM)fMarqueeMode, (LPARAM)nInterval);
}
AFX_INLINE BOOL CXTPProgressCtrl::GetUseVisualStyle() const {
return m_bUseVisualStyle;
}
AFX_INLINE BOOL CXTPProgressCtrl::GetFlatStyle() const{
return m_bFlatStyle;
}
AFX_INLINE void CXTPProgressCtrl::SetFlatStyle(BOOL bFlatStyle/* = TRUE*/) {
m_bFlatStyle = bFlatStyle;
if (m_hWnd) Invalidate(FALSE);
}
#endif // #if !defined(__XTPPROGRESSCTRL_H__)