📄 bcgpcontrolbar.h
字号:
#if !defined(AFX_BCGPCONTROLBAR_H__7227A114_C3AC_47D9_B989_821621680BFE__INCLUDED_)
#define AFX_BCGPCONTROLBAR_H__7227A114_C3AC_47D9_B989_821621680BFE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// BCGPControlBar.h : header file
//
#include "BCGCBPro.h"
#include "BCGPBaseControlBar.h"
#include "BCGPRecentDockInfo.h"
#include "BCGPDragFrameImpl.h"
/////////////////////////////////////////////////////////////////////////////
// CBCGPControlBar window
class CBCGPDockBar;
class CBCGPFrameWnd;
class CBCGPDockBarRow;
class CBCGPMiniFrameWnd;
class CBCGPDockManager;
// CS - change state status
typedef enum BCGP_CS_STATUS
{
CS_NOTHING,
CS_DOCK_IMMEDIATELY,
CS_DELAY_DOCK,
CS_DELAY_DOCK_TO_TAB
};
static const DWORD dwDefaultCBStyle = CBRS_BCGP_FLOAT | CBRS_BCGP_CLOSE;
static const int dwDefaultToolbarStyle = (WS_CHILD | WS_VISIBLE | CBRS_TOP |
CBRS_GRIPPER | CBRS_HIDE_INPLACE);
/////////////////////////////////////////////////////////////////////////////
// CBCGPControlBar window
class BCGCBPRODLLEXPORT CBCGPControlBar : public CBCGPBaseControlBar
{
friend class CBCGPMiniFrameWnd;
friend class CBCGPMultiMiniFrameWnd;
DECLARE_DYNCREATE(CBCGPControlBar)
// Construction
protected:
CBCGPControlBar();
// Attributes
public:
virtual BOOL CanBeDocked (CBCGPBaseControlBar* pDockBar) const;
virtual BOOL IsResizable () const
{
return FALSE;
}
virtual BOOL IsDragMode () const
{
return m_bDragMode;
}
virtual void GetMinSize (CSize& size) const
{
size = m_sizeMin;
}
void SetMinSize (const CSize& size)
{
m_sizeMin = size;
}
virtual int GetMinLength () const
{
return IsHorizontal () ? 10 : 10;
}
virtual int GetResizeStep () const
{
return -1;
}
CPoint GetHotSpot () const {return m_dragFrameImpl.m_ptHot;}
CPoint GetClientHotSpot () const {return m_ptClientHotSpot;}
void SetClientHotSpot (const CPoint& ptNew) {m_ptClientHotSpot = ptNew;}
virtual BOOL IsFloatingMulti () const {return FALSE;}
virtual int GetAvailableExpandSize () const;
virtual int GetAvailableStretchSize () const;
virtual BOOL DoesAllowSiblingBars () const {return !m_bExclusiveRow;}
bool IsLeftOf (CRect rect, bool bWindowRect = true) const;
bool IsLastBarOnLastRow () const;
virtual BOOL IsTabbed () const;
CBCGPDockBarRow* GetDockBarRow () const {return m_pDockBarRow;}
void SetDockBarRow (CBCGPDockBarRow* pRow) {m_pDockBarRow = pRow;}
void GetVirtualRect (CRect& rectVirtual) const;
void SetVirtualRect (const CRect& rect, BOOL bMapToParent = TRUE);
void UpdateVirtualRect ();
void UpdateVirtualRect (CPoint ptOffset);
void UpdateVirtualRect (CSize sizeNew);
bool m_bDisableMove;
BOOL m_bFirstInGroup;
BOOL m_bLastInGroup;
BOOL m_bActiveInGroup;
virtual void SetActiveInGroup (BOOL bActive);
virtual void SetExclusiveRowMode (BOOL bExclusive = TRUE) {m_bExclusiveRow = bExclusive;}
virtual BOOL GetExclusiveRowMode () const {return m_bExclusiveRow;}
// Operations
public:
virtual void PrepareToDock (CBCGPDockBar* pDockBar, BCGP_DOCK_METHOD dockMethod);
virtual BOOL DockControlBar (CBCGPBaseControlBar* pDockBar, LPCRECT lpRect,
BCGP_DOCK_METHOD dockMethod);
virtual BOOL DockByMouse (CBCGPBaseControlBar* pDockBar);
virtual BOOL DockToFrameWindow (DWORD dwAlignment, LPCRECT lpRect = NULL,
DWORD dwDockFlags = DT_DOCK_LAST,
CBCGPBaseControlBar* pRelativeBar = NULL,
int nRelativeIndex = -1,
BOOL bOuterEdge = FALSE)
{
return FALSE;
}
virtual BOOL FloatControlBar (CRect rectFloat, BCGP_DOCK_METHOD dockMethod = DM_UNKNOWN,
bool bShow = true);
virtual CSize CalcSize (BOOL bVertDock) {return CSize (0, 0);}
BOOL MoveByAlignment (DWORD dwAlignment, int nOffset);
virtual CSize MoveControlBar (CRect rectNew, BOOL bForceMove, HDWP& hdwp);
virtual int StretchBar (int nStretchSize, HDWP& hdwp);
virtual CBCGPControlBar* DockControlBarStandard (BOOL& bWasDocked)
{
bWasDocked = FALSE;
return this;
}
virtual BCGP_CS_STATUS IsChangeState (int nOffset, CBCGPBaseControlBar** ppTargetBar) const;
virtual CBCGPMiniFrameWnd* CreateDefaultMiniframe (CRect rectInitial);
virtual BOOL LoadState (LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT) -1);
virtual BOOL SaveState (LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT) -1);
virtual void SetDockState (CBCGPDockManager* pDockManager);
virtual void OnProcessDblClk ();
virtual BOOL OnBeforeFloat (CRect& rectFloat, BCGP_DOCK_METHOD dockMethod);
virtual void OnAfterFloat ();
virtual void UnDockControlBar (BOOL bDelay = FALSE);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBCGPControlBar)
public:
virtual BOOL Create(LPCTSTR lpszClassName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwBCGStyle = dwDefaultCBStyle, CCreateContext* pContext = NULL);
virtual BOOL CreateEx(DWORD dwStyleEx, LPCTSTR lpszClassName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwBCGStyle = dwDefaultCBStyle, CCreateContext* pContext = NULL);
//}}AFX_VIRTUAL
virtual void OnBeforeChangeParent (CWnd* pWndNewParent, BOOL bDelay = FALSE);
virtual void OnAfterChangeParent (CWnd* pWndOldParent);
virtual void RecalcLayout ();
virtual CSize CalcAvailableSize (CRect rectRequired);
void SetMiniFrameRTC (CRuntimeClass* pClass) {m_pMiniFrameRTC = pClass;}
virtual void AdjustSizeImmediate (BOOL bRecalcLayout = TRUE);
protected:
virtual void OnContinueMoving ();
virtual void OnDrawDragRect (LPCRECT /*lprectNew*/, LPCRECT /*lprectOld*/) {}
virtual BOOL OnBeforeDock (CBCGPBaseControlBar** ppDockBar, LPCRECT lpRect, BCGP_DOCK_METHOD dockMethod);
virtual void OnAfterDock (CBCGPBaseControlBar* /*pBar*/, LPCRECT /*lpRect*/, BCGP_DOCK_METHOD /*dockMethod*/) {}
virtual void OnBeforeStretch (int& /*nStretchSize*/) {}
virtual void OnAfterStretch (int /*nStretchSize*/) {}
virtual void RemoveFromMiniframe (CWnd* pNewParent, BCGP_DOCK_METHOD dockMethod);
virtual void SetDragMode (BOOL bOnOff);
virtual BOOL Dock (CBCGPBaseControlBar* pDockBar, LPCRECT lpRect,
BCGP_DOCK_METHOD dockMethod);
virtual void EnterDragMode (BOOL bChangeHotPoint);
// Implementation
public:
virtual ~CBCGPControlBar();
//---------------------------------------------------------------------------------------------
// FOR COMPATIBILITY with MFC's CControlBar - may be temporary
//----------------------------------------------------------------------------------------------
void SetBorders (int cxLeft = 0, int cyTop = 0, int cxRight = 0, int cyBottom = 0);
void SetBorders (LPCRECT lpRect);
CRect GetBorders () const;
// array of elements
int m_nCount;
void* m_pData; // m_nCount elements - type depends on derived class
// info about bar (for status bar and toolbar)
int m_cxLeftBorder, m_cxRightBorder;
int m_cyTopBorder, m_cyBottomBorder;
int m_cxDefaultGap; // default gap value
int m_nMRUWidth;
void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
BOOL AllocElements(int nElements, int cbElement);
//----------------------------------------------------------------------------------------------
// Generated message map functions
protected:
virtual void DoPaint(CDC* pDC);
//{{AFX_MSG(CBCGPControlBar)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnNcDestroy ();
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
afx_msg void OnCancelMode();
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnDestroy();
afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
CRect m_rectVirtual;
CRect m_rectDragImmediate;
bool m_bCaptured;
UINT m_nID;
CPoint m_ptClientHotSpot;
bool m_bDisableChangeHot;
bool m_bDblClick;
BOOL m_bDragMode;
CRuntimeClass* m_pMiniFrameRTC;
CBCGPDragFrameImpl m_dragFrameImpl;
HWND m_hwndMiniFrameToBeClosed;
BOOL m_bExclusiveRow;
BOOL m_bPinState;
CSize m_sizeMin;
//-----------------------------------------------
// Recent dock/float state
//-----------------------------------------------
public:
CBCGPRecentDockInfo m_recentDockInfo;
CRect m_rectSavedDockedRect; // in client coordinates
BOOL m_bRecentFloatingState;
BOOL m_bWasFloatingBeforeMove;
void SetRecentTabWindowInfo (DWORD dwFrameAlignment,
const CList<UINT, UINT&>& lstSiblingBars);
void CalcRecentDockedRect ();
protected:
virtual void StoreRecentDockInfo ();
//-----------------------------------------------
};
_inline BOOL CBCGPControlBar::CanBeDocked (CBCGPBaseControlBar* pDockBar) const
{
ASSERT_VALID (this);
return ((GetEnabledAlignment () & pDockBar->GetCurrentAlignment ()) != 0);
}
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BCGPCONTROLBAR_H__7227A114_C3AC_47D9_B989_821621680BFE__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -