www.pudn.com > ÍøÂç¶Ë¿Ú¼àÊÓ.rar > BCGPBarContainer.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* 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 m_lstSavedSiblingBarIDsLeft; 
	CList 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& lstBarIDs); 
	void FreeReleasedContainer (); 
 
	BOOL IsSliderHorz () const; 
}; 
 
#endif // !defined(AFX_BCGPBARCONTAINER_H__12D1AE1B_A125_4319_B94F_1A4F0C396BFD__INCLUDED_)