// 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. // // int piAlpha[5] = { 25, 50, 75, 100, 100 }; // m_wndProgress.SetMarquee(TRUE, 50); // // ----------------------------------------------------------------- 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: // * xtpControlThemeDefault Standard appearance style. // * xtpControlThemeFlat Flat appearance style. // * xtpControlThemeUltraFlat Ultra flat appearance style. // * xtpControlThemeOffice2000 Office 2000 appearance style. // * xtpControlThemeOfficeXP Office XP appearance style. // * xtpControlThemeOffice2003 Office 2003 appearance style. // * xtpControlThemeResource 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__)