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.

308 lines
12 KiB
C

2 years ago
// XTPRibbonControlTab.h: interface for the CXTPRibbonControlTab class.
//
// This file is a part of the XTREME RIBBON 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(__XTPRIBBONCONTROLTAB_H__)
#define __XTPRIBBONCONTROLTAB_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPRibbonGroups;
class CXTPRibbonBar;
class CXTPRibbonGroup;
class CXTPRibbonTab;
//-----------------------------------------------------------------------
// Summary:
// Structure used as parameter for TCN_SELCHANGING and TCN_SELCHANGE messages when Ribbon tab is changed
//-----------------------------------------------------------------------
struct NMXTPTABCHANGE : public NMXTPCONTROL
{
CXTPRibbonTab* pTab; // Ribbon Tab to be selected
};
//===========================================================================
// Summary:
// CXTPRibbonControlTab is a CXTPTabManager derived class, It represents tabs of the ribbon bar
//===========================================================================
class _XTP_EXT_CLASS CXTPRibbonControlTab : public CXTPControlPopup, public CXTPTabManager
{
DECLARE_XTP_CONTROL(CXTPRibbonControlTab)
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPRibbonControlTab object
//-----------------------------------------------------------------------
CXTPRibbonControlTab();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPRibbonControlTab object, handles cleanup and deallocation
//-----------------------------------------------------------------------
virtual ~CXTPRibbonControlTab();
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member to get a pointer to the tab paint manager.
// The tab paint manager is used to customize the appearance of
// CXTPTabManagerItem objects and the tab manager. I.e. Tab colors,
// styles, etc... This member must be overridden in
// derived classes.
// Returns:
// Pointer to CXTPTabPaintManager that contains the visual elements
// of the tabs.
//-----------------------------------------------------------------------
virtual CXTPTabPaintManager* GetPaintManager() const;
//-----------------------------------------------------------------------
// Summary:
// Retrieves parent CXTPRibbonBar object
//-----------------------------------------------------------------------
CXTPRibbonBar* GetRibbonBar() const;
//-----------------------------------------------------------------------
// Summary:
// Cal this method to find tab by its identifier
// Parameters:
// nId - Identifier of tab to be found
// Returns:
// Pointer to CXTPRibbonTab object with specified identifier
// See Also: GetTab
//-----------------------------------------------------------------------
CXTPRibbonTab* FindTab(int nId) const;
//-----------------------------------------------------------------------
// Summary:
// Cal this method to get tab in specified position
// Parameters:
// nIndex - Index of tab to retrieve
// Returns:
// Pointer to CXTPRibbonTab object in specified position
// See Also: FindTab
//-----------------------------------------------------------------------
CXTPRibbonTab* GetTab(int nIndex) const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to select a tab in the ribbon bar.
// Parameters:
// pItem - Points to a CXTPTabManagerItem object to be selected.
//-----------------------------------------------------------------------
void SetSelectedItem(CXTPTabManagerItem* pItem);
protected:
//-----------------------------------------------------------------------
// Summary:
// This method is called to update position of TabManager.
//-----------------------------------------------------------------------
void Reposition();
//-------------------------------------------------------------------------
// Summary:
// This virtual member is called to determine if control has focus and need
// to draw focused rectangle around focused item
// Returns:
// TRUE if header has has focus
//-------------------------------------------------------------------------
virtual BOOL HeaderHasFocus() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set focus to the control.
// Parameters:
// bFocused - TRUE to set focus
//-----------------------------------------------------------------------
virtual void SetFocused(BOOL bFocused);
//-----------------------------------------------------------------------
// Summary:
// Call this member to get the focused state of the control.
// Returns:
// TRUE if the control has focus; otherwise FALSE.
//-----------------------------------------------------------------------
virtual BOOL IsFocused() const;
//----------------------------------------------------------------------
// Summary:
// This method is called when the user activate control using its underline.
//----------------------------------------------------------------------
void OnUnderlineActivate();
//----------------------------------------------------------------------
// Summary:
// This method is called to check if control accept focus
// See Also: SetFocused
//----------------------------------------------------------------------
virtual BOOL IsFocusable() const;
//----------------------------------------------------------------------
// Summary:
// This method is called when the control becomes selected.
// Parameters:
// bSelected - TRUE if the control becomes selected.
// Returns:
// TRUE if successful; otherwise returns FALSE
//----------------------------------------------------------------------
BOOL OnSetSelected(int bSelected);
//----------------------------------------------------------------------
// Summary:
// This method is called when a non-system key is pressed.
// Parameters:
// nChar - Specifies the virtual key code of the given key.
// lParam - Specifies additional message-dependent information.
// Returns:
// TRUE if key handled, otherwise returns FALSE
//----------------------------------------------------------------------
BOOL OnHookKeyDown (UINT nChar, LPARAM lParam);
//----------------------------------------------------------------------
// Summary:
// This method is called when an item(tab button) is clicked.
// Parameters:
// pItem - Item that was clicked.
//----------------------------------------------------------------------
void OnItemClick(CXTPTabManagerItem* pItem);
protected:
//-----------------------------------------------------------------------
// Summary:
// This member is called when the icon of the ribbon tab needs to be
// drawn.
// Parameters:
// pDC - Pointer to the destination device context.
// pt - Specifies the location of the image.
// pItem - CXTPTabManagerItem object to draw icon on.
// bDraw - TRUE if the icon needs to be drawn, I.e. the icon size
// changed. FALSE if the icon does not need to be
// drawn or redrawn.
// szIcon - Size of the tab icon.
// Remarks:
// For example, on mouseover. This member is overridden by its
// descendants. This member must be overridden in
// derived classes.
// Returns:
// TRUE if the icon was successfully drawn, FALSE if the icon
// was not drawn.
//-----------------------------------------------------------------------
BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const;
//-----------------------------------------------------------------------
// Summary:
// Initiates redrawing of the ribbon bar control.
// Remarks:
// Call this member function if you want to initialize redrawing
// of the control. The control will be redrawn taking into account
// its latest state.
// Parameters:
// lpRect - The rectangular area of the window that is invalid.
// bAnimate - TRUE to animate changes in bounding rectangle.
//-----------------------------------------------------------------------
void RedrawControl(LPCRECT lpRect, BOOL bAnimate);
//-----------------------------------------------------------------------
// Summary:
// Checks to see if the mouse is locked.
// Remarks:
// The mouse is locked when a CXTPCommandBarsPopup is currently visible.
// Returns:
// TRUE if locked; otherwise returns FALSE.
//-----------------------------------------------------------------------
BOOL IsMouseLocked() const;
//----------------------------------------------------------------------
// Summary:
// This method is called to draw the control.
// Parameters:
// pDC - Pointer to a valid device context.
//----------------------------------------------------------------------
void Draw(CDC* pDC);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to Store/Load a properties collection
// using the specified data object.
// Parameters:
// pPX - Source or destination CXTPPropExchange data object reference.
// Remarks:
// This member function is used to store or load properties collection
// data to or form an storage.
//-----------------------------------------------------------------------
void DoPropExchange(CXTPPropExchange* pPX);
//----------------------------------------------------------------------
// Summary:
// This method is called to copy the control.
// Parameters:
// pControl - Points to a source CXTPControl object
// bRecursive - TRUE to copy recursively.
//----------------------------------------------------------------------
void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Call this member to get the tracking state.
// Returns:
// TRUE if the ribbon is in the tracking mode.
//-----------------------------------------------------------------------
BOOL IsPopupBarTracking() const;
protected:
//{{AFX_CODEJOCK_PRIVATE
void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
void ShowPopupBar(BOOL bKeyboard);
BOOL OnSetPopup(BOOL bPopup);
void SetEnabled(BOOL bEnabled);
CString GetItemTooltip(const CXTPTabManagerItem* pItem) const;
virtual void AdjustExcludeRect(CRect& rc, BOOL bVertical);
//}}AFX_CODEJOCK_PRIVATE
protected:
//{{AFX_CODEJOCK_PRIVATE
virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
//}}AFX_CODEJOCK_PRIVATE
protected:
BOOL m_bFocused; // TRUE if groups focused
friend class CXTPRibbonBar;
};
AFX_INLINE CXTPRibbonBar* CXTPRibbonControlTab::GetRibbonBar() const {
return (CXTPRibbonBar*)m_pParent;
}
#endif // !defined(__XTPRIBBONCONTROLTAB_H__)