📄 bcgpdockbarrow.h
字号:
//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a part of the BCGControlBar Library
// Copyright (C) 1998-2000 BCGSoft Ltd.
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions
// of the accompanying license agreement.
//*******************************************************************************
// BCGPDockBarRow.h: interface for the CBCGPDockBarRow class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BCGPDOCKBARROW_H__233112C0_FD5E_48EF_AF12_941920CCFBE3__INCLUDED_)
#define AFX_BCGPDOCKBARROW_H__233112C0_FD5E_48EF_AF12_941920CCFBE3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "BCGCBPro.h"
class CBCGPDockBar;
class CBCGPControlBar;
/////////////////////////////////////////////////////////////////////////////
// CBCGPDockBar window
enum BCGP_ROW_ALIGNMENT
{
BCGP_ROW_ALIGN_TOP = 0,
BCGP_ROW_ALIGN_BOTTOM = 1
};
class BCGCBPRODLLEXPORT CBCGPDockBarRow : public CObject
{
friend class CBCGPDockManager;
friend class CBCGPToolBar;
DECLARE_DYNAMIC(CBCGPDockBarRow);
public:
CBCGPDockBarRow (CBCGPDockBar* pParentDockBar, int nOffset, int nHeight);
virtual ~CBCGPDockBarRow ();
virtual BOOL Create ()
{
return TRUE;
}
virtual void GetAvailableSpace (CRect& rect);
virtual int GetVisibleCount ();
virtual CSize CalcFixedLayout (BOOL bStretch, BOOL bHorz);
virtual void AddControlBar (CBCGPControlBar* pControlBar, BCGP_DOCK_METHOD dockMethod, LPCRECT lpRect = NULL, BOOL bAddLast = FALSE);
virtual void AddControlBarFromRow (CBCGPControlBar* pControlBar, BCGP_DOCK_METHOD dockMethod);
virtual void RemoveControlBar (CBCGPControlBar* pControlBar);
virtual void ArrangeControlBars (int nMargin, int nSpacing);
virtual int ResizeBySlider (int /*nOffset*/) {return 0;} // can'te be resized by slider
virtual int Resize (int nOffset);
virtual void Move (int nOffset);
virtual void ArrangeBars (CBCGPControlBar* pInitialBar);
virtual void RepositionBars (CRect& rectNewParentBarArea, UINT nSide = (UINT)-1, BOOL bExpand = FALSE, int nOffset = 0);
virtual BOOL IsEmpty () const {return m_lstControlBars.IsEmpty ();}
virtual void UpdateVisibleState (BOOL bDelay);
virtual void ShowDockBarRow (BOOL bShow, BOOL bDelay);
void MoveControlBar (CBCGPControlBar* pControlBar, CPoint ptOffset, BOOL bSwapControlBars,
HDWP& hdwp);
void MoveControlBar (CBCGPControlBar* pControlBar, CRect rectTarget, HDWP& hdwp);
void MoveControlBar (CBCGPControlBar* pControlBar, int nOffset, bool bForward, HDWP& hdwp);
void MoveControlBar (CBCGPControlBar* pControlBar, int nAbsolutOffset, HDWP& hdwp);
void RedrawAll ();
BOOL HasControlBar (CBCGPBaseControlBar* pControlBar)
{
return m_lstControlBars.Find (pControlBar) != NULL;
}
virtual BOOL ReplaceControlBar (CBCGPControlBar* pBarOld, CBCGPControlBar* pBarNew);
virtual BOOL ShowControlBar (CBCGPControlBar* pControlBar, BOOL bShow, BOOL bDelay = FALSE);
virtual void OnResizeControlBar (CBCGPBaseControlBar* pControlBar);
void FixupVirtualRects (bool bMoveBackToVirtualRect, CBCGPControlBar* pBarToExclude = NULL);
void ExpandStretchedBars ();
void ExpandStretchedBarsRect ();
virtual BOOL IsVisible () const {return m_bVisible;}
int GetRowHeight () const {return m_nRowHeight;}
int GetRowOffset () const {return m_nRowOffset;}
int GetBarCount () const {return m_lstControlBars.GetCount ();}
void GetWindowRect (CRect& rect) const;
void GetClientRect (CRect& rect) const;
void ScreenToClient (CRect& rect) const;
bool IsHorizontal () const {return (m_dwRowAlignment & CBRS_ALIGN_TOP || m_dwRowAlignment & CBRS_ALIGN_BOTTOM);}
DWORD GetRowAlignment () const {return m_dwRowAlignment;}
int GetID () const {return 0;}
CBCGPDockBar* GetDockBar () const {return m_pParentDockBar;}
const CObList& GetControlBarList() const { return m_lstControlBars; }
virtual int GetAvailableLength (BOOL bUseVirtualRect = FALSE) const;
void SetExtra (int nExtraSpace, BCGP_ROW_ALIGNMENT rowExtraAlign)
{
m_nExtraSpace = nExtraSpace;
m_nExtraAlignment = rowExtraAlign;
}
// exclusive row does not allows more than one bar that does allow sibling bars
virtual BOOL IsExclusiveRow () const;
void GetGroupFromBar (CBCGPControlBar* pBar, CObList& lst);
BOOL m_bIgnoreBarVisibility;
protected:
BOOL m_bVisible;
int m_nRowHeight;
int m_nRowSavedHeight;
int m_nMinHeight;
int m_nRowOffset;
CObList m_lstControlBars;
DWORD m_dwRowAlignment;
CBCGPDockBar* m_pParentDockBar;
int m_nExtraSpace; // specifies how the row is bigger than its bars
int m_nExtraAlignment; // how the bars are aligned if extra space
BOOL CheckControlBars (CRect& rectCurrentBar, CBCGPControlBar* pCurrentBar, bool bForward,
CPoint ptOffset, BOOL bSwapControlBars, HDWP& hdwp);
int GetMaxBarSize (BOOL bSkipHiddenBars = TRUE) const;
CBCGPControlBar* FindFirstVisibleBar (BOOL bForward);
protected:
virtual void OnInsertControlBar (CBCGPControlBar* pControlBar);
void AdjustBarToRowArea (CBCGPControlBar* pBar, const CRect& rectRow, HDWP& hdwp);
int CalcLastBarOffset ();
void BeginTrans ();
void CommitTrans ();
int GetAvailableLengthRect ();
int StretchBarRect (CBCGPControlBar* pBar, int nStretchSize);
void ArrangeBarsRect (CBCGPControlBar* pInitialBar);
void ResolveIntersectionRect (CBCGPControlBar* pBar, bool bForward);
int GetOutOfBoundsOffsetRect (CBCGPControlBar* pBar, BOOL bLeftTopBound);
void ShiftControlBarsRect (CBCGPControlBar* pControlBar, int nOffset, BOOL bForward);
void MoveControlBarRect (CBCGPControlBar* pControlBar, int nOffset, bool bForward);
private:
void OffsetFromRect (const CRect& rect, CPoint& pt, bool bForward);
BOOL IsEnoughSpaceToMove (CBCGPControlBar* pControlBar, bool bForward, int& nAllowedOffset);
void MoveTrailingBars (POSITION posStart, CPoint ptOffset, bool bForward, CBCGPControlBar* pBarToSkip, HDWP& hdwp);
void ResolveIntersection (CBCGPControlBar* pBar, bool bForward, HDWP& hdwp);
int GetOutOfBoundsOffset (CBCGPControlBar* pBar, BOOL bLeftTopBound);
void ShiftControlBars (CBCGPControlBar* pControlBar, int nOffset, BOOL bForward);
};
#endif // !defined(AFX_BCGPDOCKBARROW_H__233112C0_FD5E_48EF_AF12_941920CCFBE3__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -