DragonNest/Third/XTToolkitPro/Source/Controls/XTTabCtrlButtons.h
2024-12-19 09:48:26 +08:00

132 lines
3.7 KiB
C++

// XTTabCtrlbuttons.h : interface for the CXTTabCtrlbuttons class.
//
// This file is a part of the XTREME CONTROLS 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
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(__XTTABCTRLBUTTONS_H_)
#define __XTTABCTRLBUTTONS_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CXTTabCtrlButtons;
class CXTTabBase;
#define XT_IDC_TAB_CLOSE 106
//////////////////////////////////////////////////////////////////////
// Summary: CXTTabCtrlButton is a stand alone structure class. It is internal used in CXTTabCtrlButtons class.
class CXTTabCtrlButton
{
public:
CXTTabCtrlButton (DWORD wStyle);
void Draw(CDC* pDC, COLORREF clrButton);
DWORD Click(CXTTabCtrlButtons* pWnd, CPoint pt, BOOL bRepeat = FALSE);
void SetRect(CRect rc);
CRect GetRect();
BOOL PtInRect(POINT pt) const;
void CheckForMouseOver (CWnd* pWnd, CPoint pt);
void SetEnable(BOOL bEnable);
CRect m_Rect;
DWORD m_wStyle;
CTabCtrl* m_pTabCtrl;
CXTTabCtrlButtons* m_pButtons;
};
//////////////////////////////////////////////////////////////////////
AFX_INLINE CXTTabCtrlButton::CXTTabCtrlButton(DWORD wStyle) {
m_wStyle = wStyle;
m_pButtons = 0;
m_pTabCtrl = 0;
m_Rect.SetRectEmpty();
}
AFX_INLINE void CXTTabCtrlButton::SetRect (CRect rc) {
m_Rect = rc;
}
AFX_INLINE CRect CXTTabCtrlButton::GetRect() {
return m_Rect;
}
AFX_INLINE BOOL CXTTabCtrlButton::PtInRect (POINT pt) const {
return m_Rect.PtInRect (pt) != 0;
}
//////////////////////////////////////////////////////////////////////
// Summary: CXTTabCtrlButtonsis a CWnd derived class. It is internally used in the CXTTabBase class.
class CXTTabCtrlButtons: public CWnd
{
public:
CXTTabCtrlButtons();
~CXTTabCtrlButtons();
BOOL Create(CXTTabBase* pCtrlBase);
int GetWidth();
void ShowButtons(BOOL bShow);
BOOL ShowButtons();
void Refresh();
void SubclassTabButtons(CWnd* pWnd);
void SetButtonStyle(DWORD dwFlags);
void UnSubclassTabButtons();
CTabCtrl* GetTabCtrl() const;
private:
CRect AdjustRect();
private:
CXTTabCtrlButton m_btnClose;
CXTTabCtrlButton m_btnLeft;
CXTTabCtrlButton m_btnRight;
DWORD m_dwFlags;
CTabCtrl* m_pTabCtrl;
CXTTabBase* m_pTabCtrlBase;
BOOL m_bShow;
HWND m_hwndSubclassed;
HWND m_hwndPrimary;
private:
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
DECLARE_MESSAGE_MAP()
friend class CXTTabBase;
friend class CXTTabCtrlButton;
};
AFX_INLINE CTabCtrl* CXTTabCtrlButtons::GetTabCtrl() const {
return m_pTabCtrl;
}
AFX_INLINE BOOL CXTTabCtrlButtons::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
#endif // #if !defined(__XTTABCTRLBUTTONS_H_)