⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcgpdockbarrow.h

📁 远程网络监视程序的源码
💻 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 + -