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

📄 bcgpbarcontainer.h

📁 远程网络监视程序的源码
💻 H
字号:
// BCGBarContainer.h: interface for the CBCGPBarContainer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BCGPBARCONTAINER_H__12D1AE1B_A125_4319_B94F_1A4F0C396BFD__INCLUDED_)
#define AFX_BCGPBARCONTAINER_H__12D1AE1B_A125_4319_B94F_1A4F0C396BFD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "BCGCBPro.h"

class CBCGPBaseControlBar;
class CBCGPControlBar;
class CBCGPDockingControlBar;
class CBCGPSlider;

class BCGCBPRODLLEXPORT CBCGPBarContainer : public CObject  
{
	friend class CBCGPBarContainerManager;
	friend class CBCGPRecentContainerInfo;

	DECLARE_DYNAMIC (CBCGPBarContainer);
public:
	CBCGPBarContainer  (CBCGPBarContainerManager* pManager = NULL,
						CBCGPDockingControlBar* pLeftBar = NULL, 
						CBCGPDockingControlBar* pRightBar = NULL, 
					    CBCGPSlider* pSlider = NULL);
	virtual ~CBCGPBarContainer();

	CBCGPDockingControlBar* AddControlBar (CBCGPDockingControlBar* pBar);	
	BOOL AddSubContainer (CBCGPBarContainer* pContainer, BOOL bRightNodeNew);

	enum BC_FIND_CRITERIA
	{
		BC_FIND_BY_LEFT_BAR,
		BC_FIND_BY_RIGHT_BAR,
		BC_FIND_BY_SLIDER,
		BC_FIND_BY_CONTAINER
	};

	CBCGPBarContainer* FindSubContainer (const CObject* pObject, 
										 BC_FIND_CRITERIA findCriteria);

	BOOL IsContainerEmpty () const;
	BOOL IsLeftPartEmpty (BOOL bCheckVisibility = FALSE) const;
	BOOL IsRightPartEmpty (BOOL bCheckVisibility = FALSE) const;

	BOOL IsContainerVisible () const;

	int  GetNodeCount () const;
	int  GetTotalReferenceCount () const;

	const CBCGPDockingControlBar* GetLeftBar () const {return m_pBarLeftTop;}
	const CBCGPDockingControlBar* GetRightBar () const {return m_pBarRightBottom;}
	const CBCGPSlider* GetSlider () const {return m_pSlider;}
	const CBCGPBarContainer* GetLeftContainer () const {return m_pLeftContainer;}
	const CBCGPBarContainer* GetRightContainer () const {return m_pRightContainer;}

	DWORD GetRecentSliderStyle () const {return m_dwRecentSliderStyle;}
	CRect GetRecentSliderRect  () const {return m_rectRecentSlider;}

	CBCGPBarContainer* GetParentContainer () const {return m_pParentContainer;}

	void SetBar (CBCGPDockingControlBar* pBar, BOOL bLeft);
	void SetContainer (CBCGPBarContainer* pContainer, BOOL bLeft);
	void SetSlider (CBCGPSlider* pSlider) {m_pSlider = pSlider;}

	BOOL IsLeftContainer () const;
	BOOL IsLeftBar (CBCGPDockingControlBar* pBar) const;

	void SetParentContainer (CBCGPBarContainer* p) {m_pParentContainer = p;}

	BOOL SetUpByID (UINT nID, CBCGPDockingControlBar* pBar);
	CBCGPDockingControlBar* FindTabbedBar (UINT nID);

// Overrides
	virtual void GetWindowRect  (CRect& rect, BOOL bIgnoreVisibility = FALSE) const;
	virtual void GetMinSize	    (CSize& size) const;	
	virtual void GetMinSizeLeft (CSize& size) const;	
	virtual void GetMinSizeRight(CSize& size) const;	
	virtual int  GetResizeStep  () const;

	virtual void OnShowControlBar (CBCGPDockingControlBar* pBar, BOOL bShow);

	virtual void RemoveControlBar (CBCGPDockingControlBar* pBar);
	virtual void DeleteControlBar (CBCGPDockingControlBar* pBar, 
								   BC_FIND_CRITERIA barType);
	virtual void StoreRecentDockInfo (CBCGPDockingControlBar* pBar);

	void OnDeleteHideControlBar (CBCGPDockingControlBar* pBar, BOOL bHide);


	virtual void Move (CPoint ptNewLeftTop);

	int StretchContainer (int nOffset, BOOL bStretchHorz, BOOL bLeftBar, 
						  BOOL bMoveSlider, HDWP& hdwp);
	int OnMoveInternalSlider (int nOffset, HDWP& hdwp);
	void ResizeBar (int nOffset, CBCGPControlBar* pBar, CBCGPBarContainer* pContainer, 
								  BOOL bHorz, BOOL bLeftBar, HDWP& hdwp);
	int CalcAvailableBarSpace (int nRequiredOffset, CBCGPControlBar* pBar,
								CBCGPBarContainer* pContainer, BOOL bLeftBar);
	CSize CalcAvailableSpace (CSize sizeStretch, BOOL bLeftBar);

	void ResizeContainer (CRect rect, HDWP& hdwp, BOOL bRedraw = FALSE);
	void ResizePartOfContainer (int nOffset, BOOL bLeftPart, HDWP& hdwp);

	void SetRecentPercent (int nRecentPercent) {m_nRecentPercent = nRecentPercent;};
	int GetRecentPercent () {return m_nRecentPercent;}
	void CalculateRecentSize ();


	void CheckSliderVisibility ();
	void RemoveNonValidBars ();

	void AddRef ();
	DWORD Release ();
	LONG GetRefCount () {return m_dwRefCount;}

	void Serialize (CArchive& ar);
	void ReleaseEmptyContainer ();

	CBCGPBarContainer* Copy (CBCGPBarContainer* pParentContainer);

	CList<UINT, UINT>* GetAssociatedSiblingBarIDs (CBCGPDockingControlBar* pBar);

protected:
	CBCGPDockingControlBar*		m_pBarLeftTop;
	CBCGPDockingControlBar*		m_pBarRightBottom;
	CBCGPSlider*				m_pSlider;

	CBCGPBarContainer*			m_pLeftContainer;
	CBCGPBarContainer*			m_pRightContainer;
	CBCGPBarContainer*			m_pParentContainer;

	CBCGPBarContainerManager*	m_pContainerManager;

	int							m_nRecentPercent;
	BOOL						m_bIsRecentSliderHorz;

	LONG						m_dwRefCount;

	DWORD						m_dwRecentSliderStyle;
	CRect						m_rectRecentSlider;

	UINT	m_nSavedLeftBarID;
	UINT	m_nSavedRightBarID;
	UINT	m_nSavedSliderID;

	CList<UINT, UINT> m_lstSavedSiblingBarIDsLeft;
	CList<UINT, UINT> m_lstSavedSiblingBarIDsRight;

	CRect	m_rectSavedSliderRect;
	BOOL	m_bSavedSliderVisibility;

protected:
	void AddNode (CBCGPBarContainer* pContainer);
	void CleanUp ();
	
	void SetContainerManager (CBCGPBarContainerManager* p, BOOL bDeep = FALSE);

	void MoveWnd (CWnd* pWnd, int nOffset, BOOL bHorz);

	void SaveTabbedBar (CArchive& ar, CBCGPDockingControlBar* pBar);
	CBCGPDockingControlBar* LoadTabbedBar (CArchive& ar, CList<UINT, UINT>& lstBarIDs);
	void FreeReleasedContainer ();

	BOOL IsSliderHorz () const;
};

#endif // !defined(AFX_BCGPBARCONTAINER_H__12D1AE1B_A125_4319_B94F_1A4F0C396BFD__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -