Files
2026-06-01 12:46:52 +02:00

237 lines
9.6 KiB
C++

//-----------------------------------------------------------------------
// Summary:
// CWorkspace is a CXTPTabManager derived class. internal used.
//-----------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPTabClientWnd::CWorkspace : public CXTPTabManager
{
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CWorkspace object
//-----------------------------------------------------------------------
CWorkspace();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CWorkspace object, handles cleanup and deallocation.
//-----------------------------------------------------------------------
virtual ~CWorkspace();
protected:
//-----------------------------------------------------------------------
// Summary:
// Retrieves the paint manager.
// Returns:
// A pointer to a CXTPTabPaintManager object.
//-----------------------------------------------------------------------
virtual CXTPTabPaintManager* GetPaintManager() const;
//-----------------------------------------------------------------------
// Summary:
// This member is called when a tab navigation button is clicked.
// Parameters:
// pButton - the tab navigation button that was clicked.
//-----------------------------------------------------------------------
virtual void OnNavigateButtonClick(CXTPTabManagerNavigateButton* pButton);
//-----------------------------------------------------------------------
// Summary:
// This member is called when a tab button is clicked. This
// will select the tab that was clicked.
// Parameters:
// pItem - Pointer to the CXTPTabManagerItem tab that was clicked.
//-----------------------------------------------------------------------
virtual void OnItemClick(CXTPTabManagerItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// This method is called before item click
// Parameters:
// pItem - Pointer to item is about to be clicked
// Returns:
// TRUE if cancel process
//-----------------------------------------------------------------------
virtual BOOL OnBeforeItemClick(CXTPTabManagerItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// This member recalculates the layout of the tab manager and
// then repositions itself. This member must be overridden in
// derived classes.
//-----------------------------------------------------------------------
virtual void Reposition();
//-----------------------------------------------------------------------
// Summary:
// This member is called when the icon of the 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.
//-----------------------------------------------------------------------
virtual BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const;
//-----------------------------------------------------------------------
// Summary:
// Initiates redrawing of the 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.
//-----------------------------------------------------------------------
virtual void RedrawControl(LPCRECT lpRect, BOOL bAnimate);
//-----------------------------------------------------------------------
// Summary:
// Call this member to select the specified item.
// Parameters:
// pItem - Points to a CXTPTabManagerItem object.
//-----------------------------------------------------------------------
virtual void SetSelectedItem(CXTPTabManagerItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// This member is called when a CXTPTabManagerItem is clicked
// and dragged within the tab header. This will reorder the
// selected tab to the location it is dragged to.
// Parameters:
// hWnd - Handle to the CWnd object beneath the mouse cursor.
// pt - CPoint object specifies xy coordinates.
// pItem - Points to a CXTPTabManagerItem object
//-----------------------------------------------------------------------
virtual void ReOrder(HWND hWnd, CPoint pt, CXTPTabManagerItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// Checks to see if the mouse is locked.
// Returns:
// TRUE if locked; otherwise returns FALSE.
//-----------------------------------------------------------------------
virtual BOOL IsMouseLocked() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the tooltip associated with the specified item.
// Parameters:
// pItem - Points to a CXTPTabManagerItem object.
// Returns:
// Associated tooltip
//-----------------------------------------------------------------------
virtual CString GetItemTooltip(const CXTPTabManagerItem* pItem) const;
//-----------------------------------------------------------------------
// Summary:
// Returns whether or not reorder is allowed.
// Returns:
// TRUE when reorder is allowed; FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsAllowReorder() const;
//-----------------------------------------------------------------------
// Summary:
// Allows/disallows reorder.
// Parameters:
// bAllowReorder - TRUE for allowing reorder; FALSE for disallowing.
//-----------------------------------------------------------------------
virtual void SetAllowReorder(BOOL bAllowReorder);
//-----------------------------------------------------------------------
// Summary:
// Determines if frame must be drawn.
//-----------------------------------------------------------------------
virtual BOOL IsDrawStaticFrame() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to get window handle of workspace
//-----------------------------------------------------------------------
virtual CWnd* GetWindow() const;
protected:
//-----------------------------------------------------------------------
// Summary:
// Finds the tab item that corresponds to the specified window
// Parameters:
// hWnd - Handle of MDI child window to find.
// Returns:
// Returns a pointer to the specified tab if it was found.
//-----------------------------------------------------------------------
CXTPTabManagerItem* FindItem(const HWND hWnd) const;
//-----------------------------------------------------------------------
// Summary:
// Adds new tab item for the specified window
// Parameters:
// pChildWnd - Pointer to MDI child window to add.
// Returns:
// Returns a pointer to the newly added tab.
//-----------------------------------------------------------------------
CXTPTabManagerItem* AddItem(const CWnd* pChildWnd);
//-----------------------------------------------------------------------
// Summary:
// This member function gets the index for the current icon.
// Parameters:
// pItem - Pointer to a CXTPTabManagerItem.
// Returns:
// An icon index for the current item.
//-----------------------------------------------------------------------
HICON GetItemIcon(const CXTPTabManagerItem* pItem) const;
//-----------------------------------------------------------------------
// Summary:
// This member function returns the RGB value for the referenced
// item text or (COLORREF)-1, if the color was not set.
// Parameters:
// pItem - Pointer to a CXTPTabManagerItem.
// Returns:
// The RGB value for the referenced item text, or (COLORREF)-1,
// if the color was not set
//-----------------------------------------------------------------------
COLORREF GetItemColor(const CXTPTabManagerItem* pItem) const;
//-------------------------------------------------------------------------
// Summary:
// This method is called to recalculate layout of tab client
//-------------------------------------------------------------------------
virtual void OnRecalcLayout();
protected:
//-----------------------------------------------------------------------
// Summary: Returns markup context.
// Returns: Returns markup context.
//-----------------------------------------------------------------------
virtual CXTPMarkupContext* GetMarkupContext() const;
virtual void AddNewWindowItem();
BOOL DrawParentBackground(CDC* pDC, CRect rc);
protected:
CXTPTabClientWnd* m_pTabClientWnd; // Parent tabbed client.
double m_dHeight; // Height of the workspace
CRect m_rcSplitter; // Splitter position.
CXTPTabManagerItem* m_pNewWindowItem;
friend class CXTPTabClientWnd;
};