// XTPMessageBar.h : interface for the CXTPMessageBar class. // // This file is a part of the XTREME COMMANDBARS 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(__XTPMESSAGEBAR_H__) #define __XTPMESSAGEBAR_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define XTP_IDW_MESSAGE_BAR 0xE806 class CXTPCommandBars; class CXTPMarkupUIElement; class CXTPMarkupContext; class CXTPMessageBar; class CXTPPaintManager; //=========================================================================== // Summary: // CXTPMessageBarButton is a standalone class. It represents single button of message bar //=========================================================================== class _XTP_EXT_CLASS CXTPMessageBarButton { public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPMessageBarButton object //----------------------------------------------------------------------- CXTPMessageBarButton(); ~CXTPMessageBarButton(); public: //----------------------------------------------------------------------- // Input: pBar - Reference to the message bar the button belongs to. // pt - Poiont in which to simulate a click. // Summary: Generates a click event for the button, simulating a click by a user. //----------------------------------------------------------------------- void PerformClick(CXTPMessageBar* pBar, CPoint pt); public: CRect m_rcButton; // Bounding rectangle for the button CString m_strCaption; // Text displayed in the button CString m_strToolTip; // Tooltip text displayed for the button BOOL m_bPressed; // TRUE if the button is currently pressed BOOL m_bHot; // TRUE if the button is in a "hot" state, meaning the mouse cursor is hovered over the button UINT m_nID; // Id of the button CXTPMarkupUIElement* m_pUIElement; // Store pointer to CXTPMarkupUIElement object. }; //=========================================================================== // Summary: // CXTPMessageBar is a CControlBar derived class. It can be used to show some information in top of Frame //=========================================================================== class _XTP_EXT_CLASS CXTPMessageBar : public CControlBar { public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPMessageBar object. //----------------------------------------------------------------------- CXTPMessageBar(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPMessageBar object, handles cleanup and // deallocation //----------------------------------------------------------------------- virtual ~CXTPMessageBar(); public: //----------------------------------------------------------------------- // Input: pCommandBars - Parent CommandBar control to attache the // MessageBar. // dwStyle - Style of the MessageBar. // nID - Id of the MessageBar // Summary: Creates a MessageBar. // Returns: TRUE if successful, FALSE otherwise. //----------------------------------------------------------------------- BOOL Create(CXTPCommandBars* pCommandBars, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = XTP_IDW_MESSAGE_BAR); public: //----------------------------------------------------------------------- // Input: lpszMessage - Sting of text or XML Markup to display in the // MessageBar. // Summary: Sets the message displayed in the message bar. // Remarks: The message displayed can contain simple text or it can // contain a XML string as in the sample below. Use XML strings // to add items such as images and formatted text. //----------------------------------------------------------------------- void SetMessage(LPCTSTR lpszMessage); //----------------------------------------------------------------------- // Input: bEnableMarkup - TRUE to enable markup // Summary: Call this method to enable markup for the text inside the // MessageBar //----------------------------------------------------------------------- void EnableMarkup(BOOL bEnableMarkup = TRUE); //----------------------------------------------------------------------- // Input: nID - Id of the button. // lpszCaption - Text displayed inside the button. // lpszToolTop - Text displayed as a tooltip when the mouse is placed over the button. // Summary: Adds a button to the message bar. //----------------------------------------------------------------------- void AddButton(UINT nID, LPCTSTR lpszCaption, LPCTSTR lpszToolTop = NULL); //------------------------------------------------------------------------- // Summary: Removes all buttons from the message bar. //------------------------------------------------------------------------- void RemoveButtons(); //----------------------------------------------------------------------- // Input: pButton - Reference to the button to click. // Summary: Generates a click event for the button, simulating a click by a user. //----------------------------------------------------------------------- virtual void Click(CXTPMessageBarButton* pButton); public: //----------------------------------------------------------------------- // Summary: Call this member to get the bounding rectangle of the // MessageBox. // Returns: The bounding rectangle of the MessageBox. //----------------------------------------------------------------------- CRect GetMessageRect(); //----------------------------------------------------------------------- // Summary: This member function obtains a pointer to the associated // paint manager. // Returns: A CXTPPaintManager pointer to the associated paint manager // object. // Remarks: Call this member function to obtain the paint manager object // used for drawing a MessageBar. // ---------------------------------------------------------------------- CXTPPaintManager* GetPaintManager() const; //----------------------------------------------------------------------- // Input: point - POINT structure that contains the point to be hit // test, in client coordinates. // Summary: Tests a point to determine which messagebar button, if any, // is at the specified point. // Returns: If the hit test is successful, contains a reference to the // CXTPMessageBarButton at the hit test point, if any, or - 1 otherwise. //----------------------------------------------------------------------- CXTPMessageBarButton* HitTestButton(CPoint point) const; //----------------------------------------------------------------------- // Input: nID - Button's Id. // Summary: Call this member to find the specified button. // Returns: The CXTPMessageBarButton object if successful; otherwise NULL. //----------------------------------------------------------------------- CXTPMessageBarButton* FindButton(UINT nID) const; //----------------------------------------------------------------------- // Summary: Returns markup context // Returns: Returns markup context //----------------------------------------------------------------------- CXTPMarkupContext* GetMarkupContext() const; public: //----------------------------------------------------------------------- // Summary: This member function sets the default height of the message bar. // If auto-sizing is enabled this value will be used as the minimum // height of the message bar. // ---------------------------------------------------------------------- void SetHeight(int nHeight); //----------------------------------------------------------------------- // Summary: This member function enables auto-sizing of the message bar. // If auto-sizing is enabled, the height of the message bar will // be adjusted to the content. // ---------------------------------------------------------------------- void SetAutoSize(BOOL bAutoSize); protected: //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // Summary: Draws the message bar. //----------------------------------------------------------------------- virtual void FillMessageBar(CDC* pDC); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // Summary: Gets the size of the content in the message bar. // Returns: Returns the size of the content. //----------------------------------------------------------------------- virtual CSize MeasureContent(CDC* pDC); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // pButton - Button to measure. // Summary: Gets the size of a button. // Returns: Returns the size of a button. //----------------------------------------------------------------------- virtual CSize MeasureButton(CDC* pDC, CXTPMessageBarButton* pButton); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // Summary: Draws the content of the message bar. //----------------------------------------------------------------------- virtual void DrawContent(CDC* pDC); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // Summary: Call this member function to recalculate the layout of the // message bar. //----------------------------------------------------------------------- virtual void RecalcLayout(CDC* pDC); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // pButton - Button to draw. // Summary: Call this member to draw a button in the message bar. //----------------------------------------------------------------------- virtual void DrawButton(CDC* pDC, CXTPMessageBarButton* pButton); //----------------------------------------------------------------------- // Input: pDC - Pointer to a valid device context. // Summary: Call this member to draw the buttons in the message bar. //----------------------------------------------------------------------- void DrawButtons(CDC* pDC); protected: DECLARE_MESSAGE_MAP() //{{AFX_VIRTUAL(CXTPMessageBar) virtual CSize CalcFixedLayout(BOOL, BOOL bHorz); virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult); virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const; //}}AFX_VIRTUAL //{{AFX_MSG(CXTPMessageBar) afx_msg void OnPaint(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnMouseLeave(); //}}AFX_MSG protected: int m_nHeight; // Height of the message bar BOOL m_bAutoSize; // If TRUE the height of the bar will be adjusted to the content CString m_strContent; // Content string of the message bar. CXTPMarkupUIElement* m_pUIElement; // Store pointer to CXTPMarkupUIElement object. CXTPMarkupContext* m_pMarkupContext;// Store pointer to CXTPMarkupContext object. CXTPCommandBars* m_pCommandBars; // Store pointer to CXTPCommandBars object. CXTPMessageBarButton* m_pHotButton; // Current hot button. CArray m_arrButtons; // Collection of buttons in the message bar. CRect m_rcBorder; // Border of the message bar. CRect m_rcPadding; // Padding around the content of the message bar. CRect m_rcContent; // Bounding rectangle of the content in the message bar. }; ///////////////////////////////////////////////////////////////////////////// AFX_INLINE CXTPMarkupContext* CXTPMessageBar::GetMarkupContext() const { return m_pMarkupContext; } #endif // !defined(__XTPMESSAGEBAR_H__)