// XTPStatusBar.h : interface for the CXTPStatusBar class. // // This file is a part of the XTREME COMMANDBARS MFC class library. // (c)1998-2008 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(__XTPSTATUSBAR_H__) #define __XTPSTATUSBAR_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 class CXTPCommandBars; class CXTPPaintManager; class CXTPStatusBar; class CXTPImageManagerIcon; class CXTPImageManager; class CXTPToolTipContext; class CXTPPopupBar; class CXTPMarkupUIElement; class CXTPMarkupContext; #include "XTPScrollBar.h" #include "XTPControlProgress.h" //=========================================================================== // Summary: // CXTPStatusBarPane is a CCmdTarget derived class. It represents single pane of status bar //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBarPane : public CXTPCmdTarget { private: DECLARE_DYNAMIC(CXTPStatusBarPane) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPStatusBarPane object //----------------------------------------------------------------------- CXTPStatusBarPane(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPStatusBarPane object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTPStatusBarPane(); public: //----------------------------------------------------------------------- // Summary: // Call this member to set the text caption that is displayed // in this pane. // Parameters: // lpszText - Text caption of the pane. // See Also: GetText //----------------------------------------------------------------------- void SetText(LPCTSTR lpszText); void SetCaption(LPCTSTR lpszCaption); CString GetCaption() const; void SetValue(LPCTSTR lpszValue); CString GetValue() const; //----------------------------------------------------------------------- // Summary: // Call this member to get the text caption to the pane. // Returns: // Text caption of pane. This is the text displayed in the pane // See Also: SetText //----------------------------------------------------------------------- CString GetText() const; //----------------------------------------------------------------------- // Summary: // Call this member to set the width of this pane. // Parameters: // nWidth - new width to be set // See Also: GetWidth //----------------------------------------------------------------------- void SetWidth(int nWidth); //----------------------------------------------------------------------- // Summary: // Call this member to get the width of the pane. // Returns: // Current width of the pane // See Also: SetWidth //----------------------------------------------------------------------- virtual int GetWidth(); //----------------------------------------------------------------------- // Summary: // Call this member function to set the style of a status bar's pane. // A pane's style determines how the pane appears. // Parameters: // nStyle - Style of the pane whose style is to be set //----------------------------------------------------------------------- void SetStyle(UINT nStyle); //----------------------------------------------------------------------- // Summary: // Call this member function to get the style of a status bar's pane. // Returns: // Style of the indicator pane. //----------------------------------------------------------------------- UINT GetStyle() const; //----------------------------------------------------------------------- // Summary: // Call this member function to get the ID of a status bar's pane. // Returns: // ID of the indicator pane. //----------------------------------------------------------------------- UINT GetID() const; //----------------------------------------------------------------------- // Summary: // Call this member function to get the index of a status bar's pane. // Returns: // Index of the indicator pane. //----------------------------------------------------------------------- int GetIndex() const; //----------------------------------------------------------------------- // Summary: // Call this member function to remove the pane //----------------------------------------------------------------------- void Remove(); //----------------------------------------------------------------------- // Summary: // Call this member to determine if the pane is visible. // Returns: // TRUE if the tab is visible, FALSE otherwise. // See Also: SetVisible //----------------------------------------------------------------------- BOOL IsVisible() const; //----------------------------------------------------------------------- // Summary: // Call this member to hide or show the pane. // Parameters: // bVisible - TRUE to show the tab, FALSE to hide the tab. // See Also: IsVisible //----------------------------------------------------------------------- void SetVisible(BOOL bVisible); //----------------------------------------------------------------------- // Summary: // Call this member function to set the color of an item text. // Parameters: // clrText - COLORREF object that represents the color of an item // text. //----------------------------------------------------------------------- void SetTextColor(COLORREF clrText); //----------------------------------------------------------------------- // Summary: // Call this member function to get the color of an item text. // Returns: // A COLORREF object that represents the color of an item text. //----------------------------------------------------------------------- COLORREF GetTextColor() const; //----------------------------------------------------------------------- // Summary: // Call this member function to set the color of an item background. // Parameters: // clrBackground - COLORREF object that represents the background color of an item // text. //----------------------------------------------------------------------- void SetBackgroundColor(COLORREF clrBackground); //----------------------------------------------------------------------- // Summary: // Call this member to get the background color of an item. // Returns: // The background color of a item. //----------------------------------------------------------------------- COLORREF GetBackgroundColor() const; //----------------------------------------------------------------------- // Summary: // Call this member function to set the font of an item text. // Parameters: // pFntText - point to CFont object. // pLogfText - point to LOGFONT structure. //----------------------------------------------------------------------- void SetTextFont(CFont* pFntText); void SetTextFont(PLOGFONT pLogfText); // //----------------------------------------------------------------------- // Summary: // Call this member function to set the font of an item text. // Returns: // Pointer to CFont object. //----------------------------------------------------------------------- virtual CFont* GetTextFont(); //----------------------------------------------------------------------- // Summary: // Retrieves icon index. // Returns: // Icon index. // See Also: SetIconIndex //----------------------------------------------------------------------- int GetIconIndex() const; //----------------------------------------------------------------------- // Summary: // Call this method to set icon index of item. // Parameters: // nIconIndex - Icon index to be set. // See Also: GetIconIndex //----------------------------------------------------------------------- void SetIconIndex(int nIconIndex); //----------------------------------------------------------------------- // Summary: // Call this member function to set the alignment of an item text. // Parameters: // nAlign - The alignment style of an item text. //----------------------------------------------------------------------- void SetTextAlignment(int nAlign); //----------------------------------------------------------------------- // Summary: // Call this member function to get the alignment of an item text. // Returns: // The alignment style of an item text. //----------------------------------------------------------------------- int GetTextAlignment() const; //----------------------------------------------------------------------- // Summary: // Call this member to set the tooltip for this pane. This is the // text that will be displayed when the mouse pointer is positioned // over the pane. // Parameters: lpszTooltip - Tooltip to set for this tab. // See Also: GetTooltip //----------------------------------------------------------------------- void SetTooltip(LPCTSTR lpszTooltip); //----------------------------------------------------------------------- // Summary: // Call this member to get the tooltip displayed when the mouse // pointer is positioned over the pane. // Returns: // The tooltip displayed when the mouse if over the pane. // See Also: SetTooltip //----------------------------------------------------------------------- CString GetTooltip() const; //----------------------------------------------------------------------- // Summary: // Fits the width of the pane to the its text width. //----------------------------------------------------------------------- void BestFit(); int GetBestFit(); void SetBeginGroup(BOOL bBeginGroup = TRUE); BOOL GetBeginGroup() const; //----------------------------------------------------------------------- // Summary: // Call this member function to get parent status bar object // Returns: // Pointer to parent status bar object //----------------------------------------------------------------------- CXTPStatusBar* GetStatusBar() const; //----------------------------------------------------------------------- // Summary: // This method is called to get image of the pane // Returns: // CXTPImageManagerIcon Pointer to be drawn. //----------------------------------------------------------------------- virtual CXTPImageManagerIcon* GetImage() const; //----------------------------------------------------------------------- // Summary: // Returns margins for pane entry // See Also: SetMargins //----------------------------------------------------------------------- CRect GetMargins() const; CRect GetPadding() const; //----------------------------------------------------------------------- // Summary: // Call this method to set margins for pane // Parameters: // nLeft - Left margin // nTop - Top margin // nRight - Right margin // nBottom - Bottom margin // See Also: GetMargins //----------------------------------------------------------------------- void SetMargins(int nLeft, int nTop, int nRight, int nBottom); void SetPadding(int nLeft, int nTop, int nRight, int nBottom); void SetButton(BOOL bButton = TRUE); BOOL IsButton() const; BOOL IsEnabled() const; void SetEnabled(BOOL bEnabled); BOOL IsHighlighted() const; BOOL IsPressed() const; void SetCustomizationVisible(BOOL bVisible); BOOL GetCustomizationVisible() const; //----------------------------------------------------------------------- // Summary: // Call this member function to determine if the pane button state is // checked. // Returns: // TRUE if the pane button is checked, otherwise FALSE. //----------------------------------------------------------------------- BOOL IsChecked() const; void SetChecked(BOOL bChecked); //----------------------------------------------------------------------- // Summary: // Call this member function to determine if the pane has borders // enabled. // Returns: // TRUE if the pane has borders, otherwise FALSE. If the pane is a // button, the return value is always FALSE since buttons will handle // drawing their own borders. // See Also: // IsButton //----------------------------------------------------------------------- BOOL HasBorders() const; void ShowBorders(BOOL bShowBorders); void Redraw() const; CRect GetRect() const; CXTPMarkupUIElement* GetMarkupUIElement() const; protected: //----------------------------------------------------------------------- // Summary: // This method is called to draw pane item. Override it to draw custom pane. // Parameters: // pDC - Pointer to a valid device context // rcItem - Item rectangle //----------------------------------------------------------------------- virtual void OnDraw(CDC* pDC, CRect rcItem); virtual void OnLButtonDown(CPoint point); virtual void OnMouseMove(CPoint point); virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const; protected: UINT m_nID; // IDC of indicator: 0 => normal text area. int m_cxText; // Width of the string area in pixels. On both sides there is a 3 pixel gap and a 1 pixel border, making a pane 6 pixels wider. UINT m_nStyle; // Style flags (SBPS_*). CString m_strText; // Text in the pane. DWORD m_dwHideFlags; // TRUE if pane is visible COLORREF m_clrText; // Text color COLORREF m_clrBackground; // Background color CString m_strToolTip; // Tooltip text for the item.. CRect m_rcPane; HWND m_hWndPane; // Child handle BOOL m_bAutoDeleteWnd; // TRUE to auto delete child. int m_nAlignment; // Alignment of the item. CXTPStatusBar* m_pStatusBar; // Parent StatusBar object int m_nIndex; // Index of the item CFont m_fntText; // Font of an item text int m_nIconIndex; // Icon index of the pane CRect m_rcPadding; // Margins of the pane CRect m_rcMargins; // Margins of the pane BOOL m_bButton; // TRUE if pane is clickable button BOOL m_bPressed; // TRUE if button was pressed CXTPMarkupUIElement* m_pMarkupUIElement; BOOL m_bBeginGroup; CString m_strCaption; CString m_strValue; int m_nBestFit; friend class CXTPStatusBar; }; //=========================================================================== // Summary: // CXTPStatusBar is a CControlBar derived class. //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBar : public CControlBar { //{{AFX_CODEJOCK_PRIVATE DECLARE_DYNAMIC(CXTPStatusBar) //}}AFX_CODEJOCK_PRIVATE private: class CStatusCmdUI; class CControlCustomization; public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPStatusBar object //----------------------------------------------------------------------- CXTPStatusBar(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPStatusBar object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTPStatusBar(); public: //----------------------------------------------------------------------- // Summary: // Creates a status bar (a child window) and associates it with the CStatusBar object. // Also sets the initial font and sets the status bar's height to a default value. // Parameters: // pParentWnd - Pointer to the CWnd object whose Windows window is the parent of the status bar. // dwStyle - The status-bar style. In addition to the standard Windows styles, these styles are supported // nID - The toolbar's child-window ID // Returns: // Nonzero if successful; otherwise 0. //----------------------------------------------------------------------- BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, UINT nID = AFX_IDW_STATUS_BAR); public: //----------------------------------------------------------------------- // Summary: // Sets each indicator's ID to the value specified by the corresponding // element of the array lpIDArray, loads the string resource specified // by each ID, and sets the indicator's text to the string. // Parameters: // lpIDArray - Pointer to an array of IDs. // nIDCount - Number of elements in the array pointed to by lpIDArray. // Returns: // TRUE if successful; otherwise returns FALSE //----------------------------------------------------------------------- BOOL SetIndicators (const UINT* lpIDArray, int nIDCount); //----------------------------------------------------------------------- // Summary: // Call this member to set the command bar's object. // Parameters: // pCommandBars - CXTPCommandBars to be set. //----------------------------------------------------------------------- void SetCommandBars(CXTPCommandBars* pCommandBars); //----------------------------------------------------------------------- // Summary: // Retrieves the paint manager. // Returns: // A pointer to a CXTPPaintManager object. //----------------------------------------------------------------------- CXTPPaintManager* GetPaintManager() const; public: //----------------------------------------------------------------------- // Summary: // This member function is called by the status bar to reposition pane // item controls. //----------------------------------------------------------------------- void PositionControls(); //----------------------------------------------------------------------- // Summary: // Call this member function to add a control to an indicator pane. // Parameters: // pWnd - Points to a control window. // nID - ID of the indicator pane. // bAutoDelete - TRUE if the control is to be deleted when destroyed. // Returns: // TRUE if successful, otherwise returns FALSE. //----------------------------------------------------------------------- BOOL AddControl(CWnd* pWnd, UINT nID, BOOL bAutoDelete = TRUE); //----------------------------------------------------------------------- // Summary: // Call this member function to set the width for an indicator pane. // Parameters: // nIndex - Index of the indicator pane. // cxText - New width for the indicator pane. //----------------------------------------------------------------------- void SetPaneWidth(int nIndex, int cxText); //----------------------------------------------------------------------- // Summary: // Call this member function to add an indicator pane to the status bar. // Parameters: // nID - ID of the indicator pane. // nIndex - Index of the indicator pane. // pPane - New CXTPStatusBarPane object // Returns: // CXTPStatusBarPane pointer if successful, otherwise returns NULL. //----------------------------------------------------------------------- CXTPStatusBarPane* AddIndicator(UINT nID, int nIndex = -1); CXTPStatusBarPane* AddIndicator(CXTPStatusBarPane* pPane, UINT nID, int nIndex = -1); // //----------------------------------------------------------------------- // Summary: // Call this member function to remove an indicator pane from the status bar. // Parameters: // nID - ID of the indicator pane. // Returns: // TRUE if successful, otherwise returns FALSE. //----------------------------------------------------------------------- BOOL RemoveIndicator(UINT nID); //----------------------------------------------------------------------- // Summary: // Call this member function to return the number of panes that are created // for the status bar. // Returns: // An integer value that represents the number of panes for the status bar. //----------------------------------------------------------------------- int GetPaneCount() const; //----------------------------------------------------------------------- // Summary: // Calculates total number of visible panes. // Returns: // Total number of panes currently visible. //----------------------------------------------------------------------- int GetVisiblePaneCount() const; //----------------------------------------------------------------------- // Summary: // Call this member function to get the pane information for the given index. // Parameters: // nIndex - Index of the indicator pane. // Returns: // A pointer to an CXTPStatusBarPane class. //----------------------------------------------------------------------- CXTPStatusBarPane* GetPane(int nIndex) const; //----------------------------------------------------------------------- // Summary: // Call this member function to find the pane for the given Identifier. // Parameters: // nID - Identifier of the indicator pane. // Returns: // A pointer to an CXTPStatusBarPane class. //----------------------------------------------------------------------- CXTPStatusBarPane* FindPane(UINT nID) const; //----------------------------------------------------------------------- // Summary: // Call this member function to remove all indicators. //----------------------------------------------------------------------- void RemoveAll(); //----------------------------------------------------------------------- // Summary: // Call this member function to remove an indicator pane from the status bar. // Parameters: // nIndex - Index of the indicator pane. // Returns: // TRUE if successful, otherwise returns FALSE. //----------------------------------------------------------------------- BOOL RemoveAt(int nIndex); //----------------------------------------------------------------------- // Summary: // Call this member to retrieve the image manager of the image manager. // Returns: // A pointer to a CXTPImageManager object //----------------------------------------------------------------------- CXTPImageManager* GetImageManager() const; //----------------------------------------------------------------------- // Summary: // Call this function to determine which pane, if any, is at the // specified screen position. // Parameters: // pt - Point to be tested. // lpRect - Returns rectangle of the item under point pt. // Returns: // CXTPStatusBarPane pointer, or returns NULL if no pane is // at the specified position. //----------------------------------------------------------------------- CXTPStatusBarPane* HitTest(CPoint pt, CRect* lpRect = NULL) const; public: //----------------------------------------------------------------------- // Summary: // Call this method to enable/disable customization of the statusbar // Parameters: // bEnable - TRUE to enable customization. //----------------------------------------------------------------------- void EnableCustomization(BOOL bEnable = TRUE); void LoadState(LPCTSTR lpszProfileName); void SaveState(LPCTSTR lpszProfileName); public: //----------------------------------------------------------------------- // Summary: // Call this member to draw disabled text. // Parameters: // bDraw - TRUE to draw disabled text, FALSE otherwise. //----------------------------------------------------------------------- void SetDrawDisabledText(BOOL bDraw); //----------------------------------------------------------------------- // Summary: // Call this member to determine if paint manager draw disabled text. //----------------------------------------------------------------------- BOOL GetDrawDisabledText() const; //----------------------------------------------------------------------- // Summary: // Call this method to get tooltip context pointer. //----------------------------------------------------------------------- CXTPToolTipContext* GetToolTipContext() const; public: //----------------------------------------------------------------------- // Summary: // This method is called to draw a single pane of the status bar. // Parameters: // pDC - Pointer to a valid device context // nIndex - Index of the pane to draw. // rcItem - Bounding rectangle of the pane //----------------------------------------------------------------------- virtual void DrawPaneEntry(CDC* pDC, int nIndex, CRect rcItem); public: //----------------------------------------------------------------------- // Summary: // Call this function to create a status bar // Parameters: // pParentWnd - Pointer to the CWnd object whose Windows window is the parent of the status bar. // dwCtrlStyle - Additional styles for the creation of the embedded CStatusBarCtrl object. // dwStyle - The status-bar style // nID - The status bar's child-window ID. // Returns: Nonzero if successful; otherwise 0. //----------------------------------------------------------------------- BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = 0, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR); //----------------------------------------------------------------------- // Summary: // Gets the indicator index for a given ID. The index of the first indicator is 0 // Parameters: // nIDFind - String ID of the indicator whose index is to be retrieved // Returns: // The index of the indicator if successful; -1 if not successful. // See Also: GetItemID //----------------------------------------------------------------------- int CommandToIndex(UINT nIDFind) const; //----------------------------------------------------------------------- // Summary: // Returns the ID of the indicator specified by nIndex // Parameters: // nIndex - Index of the indicator whose ID is to be retrieved. // Returns: // The ID of the indicator specified by nIndex. // See Also: CommandToIndex //----------------------------------------------------------------------- UINT GetItemID(int nIndex) const; //----------------------------------------------------------------------- // Summary: // Copies the coordinates of the indicator specified by nIndex into the structure pointed to by lpRect. // Coordinates are in pixels relative to the upper-left corner of the status bar. // Parameters: // nIndex - Index of the indicator whose rectangle coordinates are to be retrieved. // lpRect - Points to aRECT structure or a CRect object that will receive the coordinates of the indicator specified by nIndex. // See Also: GetPaneInfo, CommandToIndex //----------------------------------------------------------------------- void GetItemRect(int nIndex, LPRECT lpRect) const; //----------------------------------------------------------------------- // Summary: // Call this member function to retrieve the text that appears in a status-bar pane. // The second form of this member function fills a CString object with the string text. // Parameters: // nIndex - Index of the pane whose text is to be retrieved // rString - A reference to a CString object that contains the text to be retrieved. // See Also: SetPaneText //----------------------------------------------------------------------- CString GetPaneText(int nIndex) const; void GetPaneText(int nIndex, CString& rString) const; // //----------------------------------------------------------------------- // Summary: // Sets the pane text to the string pointed to by lpszNewText. // Parameters: // nIndex - Index of the pane whose text is to be set. // lpszNewText - Pointer to the new pane text // bUpdate - If TRUE, the pane is invalidated after the text is set. // Returns: // Nonzero if successful; otherwise 0. // See Also: GetPaneText //----------------------------------------------------------------------- BOOL SetPaneText(int nIndex, const CString& lpszNewText); //----------------------------------------------------------------------- // Summary: // Sets nID, nStyle, and cxWidth to the ID, style, and width of the indicator // pane at the location specified by nIndex. // Parameters: // nIndex - Index of the pane whose information is to be retrieved. // nID - Reference to a UINT that is set to the ID of the pane // nStyle - Reference to a UINT that is set to the style of the pane. // cxWidth - Reference to an integer that is set to the width of the pane // See Also: SetPaneInfo, GetItemRect //----------------------------------------------------------------------- void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const; //----------------------------------------------------------------------- // Summary: // Sets the specified indicator pane to a new ID, style, and width. // Parameters: // nIndex - Index of the indicator pane whose style is to be set. // nID - New ID for the indicator pane // nStyle - New style for the indicator pane // cxWidth - New width for the indicator pane // See Also: GetPaneInfo //----------------------------------------------------------------------- void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth); //----------------------------------------------------------------------- // Summary: // Call this member function to retrieve the style of a status bar's pane. A pane's style determines how the pane appears. // Parameters: // nIndex - Index of the pane whose style is to be retrieved. // Returns: // The style of the status-bar pane specified by nIndex // See Also: SetPaneStyle //----------------------------------------------------------------------- UINT GetPaneStyle(int nIndex) const; //----------------------------------------------------------------------- // Summary: // Call this member function to set the style of a status bar's pane. A pane's style determines how the pane appears. // Parameters: // nIndex - Index of the pane whose style is to be set. // nStyle - Style of the pane whose style is to be set // See Also: GetPaneStyle //----------------------------------------------------------------------- void SetPaneStyle(int nIndex, UINT nStyle); //----------------------------------------------------------------------- // Summary: // This member function allows direct access to the underlying common control // Returns: // Contains a reference to a CStatusBarCtrl object. //----------------------------------------------------------------------- CStatusBarCtrl& GetStatusBarCtrl() const; //----------------------------------------------------------------------- // Summary: // Call this method to set font for status bar // Parameters: // pFont - Font to set // bRedraw - TRUE to redraw status bar //----------------------------------------------------------------------- void SetFont(CFont* pFont, BOOL bRedraw = TRUE); CFont* GetFont(); void SetRibbonDividerIndex(int nIndex); int GetRibbonDividerIndex() const; void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText); void EnableMarkup(BOOL bEnableMarkup = TRUE); CXTPMarkupContext* GetMarkupContext() const; //{{AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1100 void SetBorders(LPCRECT lpRect); void SetBorders(int cxLeft = 0, int cyTop = 0, int cxRight = 0, int cyBottom = 0); #endif //}}AFX_CODEJOCK_PRIVATE protected: //----------------------------------------------------------------------- // Summary: // Draws the stretch gripper of the status bar. // Parameters: // pDC - Pointer to a valid device context. // rcClient - Client rectangle. //----------------------------------------------------------------------- virtual void DrawStretch(CDC* pDC, CRect& rcClient); protected: //{{AFX_CODEJOCK_PRIVATE virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz); BOOL PreCreateWindow(CREATESTRUCT& cs); void CalcInsideRect(CRect& rect, BOOL bHorz) const; virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; void EnableDocking(DWORD dwDockStyle); #endif public: virtual void RecalcLayout(); virtual void OnPaneClick(CXTPStatusBarPane* pPane); virtual void OnSwitchPaneClick(CXTPStatusBarPane* pPane, long Id); virtual CXTPPopupBar* CXTPStatusBar::GetStatusBarPopup(); //}}AFX_CODEJOCK_PRIVATE protected: //{{AFX_CODEJOCK_PRIVATE DECLARE_MESSAGE_MAP() virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const; virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult); //{{AFX_MSG(CXTPStatusBar) public: afx_msg void OnPaint(); afx_msg void OnDraw(CDC* pDC); afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg int OnCreate(LPCREATESTRUCT lpcs); afx_msg LRESULT OnIdleUpdateCmdUI (WPARAM wParam, LPARAM lParam); protected: afx_msg LRESULT OnNcHitTest(CPoint); afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*); afx_msg void OnNcPaint(); afx_msg void OnWindowPosChanging(LPWINDOWPOS); afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam); afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnMouseLeave(); afx_msg void OnLButtonDown(UINT nFlags, CPoint pt); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); //}}AFX_MSG //}}AFX_CODEJOCK_PRIVATE private: BOOL IsWin4(); private: DISABLE_WNDCREATE() DISABLE_WNDCREATEEX() protected: CArray m_arrPanes; // Array of panes int m_nMinHeight; // Minimum client height CFont m_fontStatus; // Font of status bar BOOL m_bDrawDisabledText; // TRUE to draw disabled text CXTPStatusBarPane* m_pHighlightedPane; // Pane currently highlighted int m_nRibbonDividerIndex; // Position of dark part for Ribbon Theme BOOL m_bShowSizeGripper; // TRUE to show size gripper CXTPMarkupContext* m_pMarkupContext; int m_cxPaneSpacing; int m_bCustomizable; private: CXTPCommandBars* m_pCommandBars; CXTPToolTipContext* m_pToolTipContext; // Tooltip Context. friend class CXTPStatusBarPane; }; //=========================================================================== // Summary: // CXTPStatusBarSwitchPane is a CXTPStatusBarPane derived class. CXTPStatusBarSwitchPane works with // CXTStatusBar and allows you to create switches in your status // bar area. //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBarSwitchPane : public CXTPStatusBarPane { DECLARE_DYNAMIC(CXTPStatusBarSwitchPane) public: struct SWITCH { CString strToolTip; UINT nID; int nWidth; BOOL bChecked; BOOL bHighlighted; BOOL bPressed; }; public: CXTPStatusBarSwitchPane(); ~CXTPStatusBarSwitchPane(); public: BOOL SetSwitches(const UINT* lpIDArray, int nIDCount); SWITCH* AddSwitch(UINT nID, LPCTSTR lpszToolTip); SWITCH* AddSwitch(UINT nID); SWITCH* GetSwitch(int nIndex) const; int GetSwitchCount() const; void RemoveAll(); void RemoveSwitch(UINT nID); void SetChecked(UINT nID); virtual int GetWidth(); public: SWITCH* HitTest(CPoint point, CRect& rcItem) const; protected: virtual void OnLButtonDown(CPoint point); virtual void OnDraw(CDC* pDC, CRect rcItem); virtual void OnMouseMove(CPoint point); virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const; protected: CArray m_arrSwitches; SWITCH* m_pHighlighted; }; //=========================================================================== // Summary: // CXTPStatusBarScrollBarPane is a CXTPStatusBarPane derived class. CXTPStatusBarScrollBarPane works with // CXTStatusBar and allows you to create themed ScrollBar in your status // bar area. //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBarScrollBarPane : public CXTPStatusBarPane, public CXTPScrollBase { DECLARE_DYNAMIC(CXTPStatusBarScrollBarPane) public: CXTPStatusBarScrollBarPane(); ~CXTPStatusBarScrollBarPane(); public: //----------------------------------------------------------------------- // Summary: // Call this method to set position of scrollbar // Parameters: // nValue - Scrollbar position to be set //----------------------------------------------------------------------- void SetPos(int nValue); void SetRange(int nMin, int nMax); int GetPos() const; public: //----------------------------------------------------------------------- // Summary: // Call this method to set tooltip for scroll part of scrollbar. // Parameters: // nPart - Part of scrollbar to set tooltip. Can be XTP_HTSCROLLUP, XTP_HTSCROLLDOWN, XTP_HTSCROLLUPPAGE, XTP_HTSCROLLDOWNPAGE, XTP_HTSCROLLTHUMB // lpszTooltip - Text of tooltip to set //----------------------------------------------------------------------- void SetTooltipPart(int nPart, LPCTSTR lpszTooltip); protected: //{{AFX_CODEJOCK_PRIVATE virtual CRect GetScrollBarRect(); virtual void GetScrollInfo(SCROLLINFO* psi); virtual void DoScroll(int cmd, int pos); virtual void RedrawScrollBar(); virtual CXTPScrollBarPaintManager* GetScrollBarPaintManager() const; virtual BOOL IsScrollBarEnabled() const; virtual CWnd* GetParentWindow() const; virtual INT_PTR CXTPStatusBarScrollBarPane::OnToolHitTest(CPoint point, TOOLINFO* pTI) const; virtual void OnDraw(CDC* pDC, CRect rcItem); virtual void OnMouseMove(CPoint point); virtual void OnLButtonDown(CPoint point); //}}AFX_CODEJOCK_PRIVATE protected: int m_nMin; int m_nMax; int m_nValue; int m_nPage; CString m_strToolTipPart[5]; }; //=========================================================================== // Summary: // CXTPStatusBarSliderPane is a CXTPStatusBarPane derived class. CXTPStatusBarSliderPane works with // CXTStatusBar and allows you to create themed Slider in your status // bar area. //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBarSliderPane : public CXTPStatusBarScrollBarPane { DECLARE_DYNAMIC(CXTPStatusBarSliderPane) public: CXTPStatusBarSliderPane(); ~CXTPStatusBarSliderPane(); protected: virtual CXTPScrollBarPaintManager* GetScrollBarPaintManager() const; public: void SetTicks(double* pTicks, int nCount); }; //=========================================================================== // Summary: // CXTPStatusBarProgressPane is a CXTPStatusBarPane derived class. CXTPStatusBarProgressPane works with // CXTStatusBar and allows you to create progress bar in your status bar area. //=========================================================================== class _XTP_EXT_CLASS CXTPStatusBarProgressPane : public CXTPStatusBarPane, public CXTPProgressBase { DECLARE_DYNAMIC(CXTPStatusBarProgressPane) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPStatusBarProgressPane object //----------------------------------------------------------------------- CXTPStatusBarProgressPane(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPStatusBarProgressPane object, handles cleanup and deallocation //----------------------------------------------------------------------- ~CXTPStatusBarProgressPane(); protected: //---------------------------------------------------------------------- // Summary: // This method is called to redraw progress bar //---------------------------------------------------------------------- virtual void RedrawProgress(); //---------------------------------------------------------------------- // Summary: // This method is called to retrieve pointer to CXTPProgressPaintManager //---------------------------------------------------------------------- virtual CXTPProgressPaintManager* GetProgressPaintManager() const; //---------------------------------------------------------------------- // Summary: // This method is called to get bounding rectangle of progressbar //---------------------------------------------------------------------- virtual CRect GetProgressRect(); // Summary: // This method is called to draw pane item. Override it to draw custom pane. // Parameters: // pDC - Pointer to a valid device context // rcItem - Item rectangle //----------------------------------------------------------------------- virtual void OnDraw(CDC* pDC, CRect rcItem); public: }; ////////////////////////////////////////////////////////////////////// AFX_INLINE void CXTPStatusBarPane::SetCaption(LPCTSTR lpszCaption){ m_strCaption = lpszCaption; } AFX_INLINE CString CXTPStatusBarPane::GetCaption() const{ return m_strCaption; } AFX_INLINE void CXTPStatusBarPane::SetValue(LPCTSTR lpszValue){ m_strValue = lpszValue; } AFX_INLINE CString CXTPStatusBarPane::GetValue() const{ return m_strValue; } AFX_INLINE BOOL CXTPStatusBarPane::IsHighlighted() const { return m_pStatusBar->m_pHighlightedPane == this; } AFX_INLINE BOOL CXTPStatusBarPane::IsPressed() const { return m_bPressed; } AFX_INLINE void CXTPStatusBarPane::SetBeginGroup(BOOL bBeginGroup) { m_bBeginGroup = bBeginGroup; } AFX_INLINE BOOL CXTPStatusBarPane::GetBeginGroup() const { return m_bBeginGroup; } AFX_INLINE BOOL CXTPStatusBarPane::HasBorders() const { return ((m_nStyle & SBPS_NOBORDERS) == 0); } AFX_INLINE void CXTPStatusBarPane::ShowBorders(BOOL bShowBorders) { SetStyle(bShowBorders ? m_nStyle & ~SBPS_NOBORDERS : m_nStyle | SBPS_NOBORDERS); } AFX_INLINE void CXTPStatusBar::SetRibbonDividerIndex(int nIndex) { m_nRibbonDividerIndex = nIndex; } AFX_INLINE int CXTPStatusBar::GetRibbonDividerIndex() const { return m_nRibbonDividerIndex; } AFX_INLINE void CXTPStatusBar::SetCommandBars(CXTPCommandBars* pCommandBars) { m_pCommandBars = pCommandBars; } AFX_INLINE int CXTPStatusBar::GetPaneCount() const { return (int)m_arrPanes.GetSize(); } AFX_INLINE CStatusBarCtrl& CXTPStatusBar::GetStatusBarCtrl() const{ return *(CStatusBarCtrl*)this; } #if _MSC_VER > 1100 AFX_INLINE void CXTPStatusBar::SetBorders(int cxLeft, int cyTop, int cxRight, int cyBottom){ ASSERT(cyTop >= 2); CControlBar::SetBorders(cxLeft, cyTop, cxRight, cyBottom); }AFX_INLINE void CXTPStatusBar::SetBorders(LPCRECT lpRect) { SetBorders(lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); } #endif #ifdef _DEBUG // status bars do not support docking AFX_INLINE void CXTPStatusBar::EnableDocking(DWORD) { ASSERT(FALSE); } #endif AFX_INLINE void CXTPStatusBar::SetDrawDisabledText(BOOL bDraw) { m_bDrawDisabledText = bDraw; } AFX_INLINE BOOL CXTPStatusBar::GetDrawDisabledText() const { return m_bDrawDisabledText; } AFX_INLINE CXTPToolTipContext* CXTPStatusBar::GetToolTipContext() const { return m_pToolTipContext; } AFX_INLINE CXTPMarkupContext* CXTPStatusBar::GetMarkupContext() const { return m_pMarkupContext; } AFX_INLINE CXTPMarkupUIElement* CXTPStatusBarPane::GetMarkupUIElement() const { return m_pMarkupUIElement; } #endif //#if !defined(__XTPSTATUSBAR_H__)