#if !defined(AFX_VIDEOVIEWBASE_H__6BAAA595_35DB_4D0B_8DD1_F65CF09A8886__INCLUDED_)
#define AFX_VIDEOVIEWBASE_H__6BAAA595_35DB_4D0B_8DD1_F65CF09A8886__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// VideoViewBase.h : header file
//
#include <afxtempl.h>
#include "videowndchn.h"
/////////////////////////////////////////////////////////////////////////////
// CVideoViewBase window
#define WINDOW_SPACE  1
#define VCHN_MAX	  32

//画面分割类型
enum{
	VIDEO_MODE_1 = 1,
	VIDEO_MODE_2 = 2,
	VIDEO_MODE_4 = 4,
	VIDEO_MODE_6 = 6,
	VIDEO_MODE_8 = 8,
	VIDEO_MODE_9 = 9,
	VIDEO_MODE_13= 13,
	VIDEO_MODE_16 = 16,
	VIDEO_MODE_20 = 20,
	VIDEO_MODE_25 = 25,
	VIDEO_MODE_36 = 36,

	VIDEO_MODE_PAN = 128,
	VIDEO_MODE_PAN_2 = VIDEO_MODE_PAN + 2,
	VIDEO_MODE_PAN_3 = VIDEO_MODE_PAN + 3,
	VIDEO_MODE_PAN_4 = VIDEO_MODE_PAN + 4,
	VIDEO_MODE_PAN_5 = VIDEO_MODE_PAN + 5,
	VIDEO_MODE_PAN_6 = VIDEO_MODE_PAN + 6,
	VIDEO_MODE_PAN_7 = VIDEO_MODE_PAN + 7,
	VIDEO_MODE_PAN_8 = VIDEO_MODE_PAN + 8,
};

class CVideoViewBase : public CWnd
{
	// Construction
public:
	CVideoViewBase();
	
	// Attributes
public:
	BOOL	   m_bAutoSizeAdj;
	int		   m_nWorkMode;
	int		   m_nButtom, m_nRight;
	// 当前显示的分割模式
	int			m_nCurViewMode;
	// Operations
public:
	
	// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CVideoViewBase)
	//}}AFX_VIRTUAL
	
	// Implementation
public:
	virtual ~CVideoViewBase();
	
	// Generated message map functions
protected:
	//{{AFX_MSG(CVideoViewBase)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
public:
	// interface
	BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
	//	全屏显示
	void SetFullScreen(BOOL bFlag);
	BOOL GetFullScreen() {return m_bFullScreen;}
	//	多屏显示
	void SetMultiScreen(BOOL bFlag);
	BOOL GetMultiScreen() {return m_bMultiScreen;}
	
	///////////////////////////////////////////////////
	// 设置激活窗口
	void SetActivePage(VideoWndChn *pWnd, BOOL bRepaint = FALSE);
	// 得到激活窗口
	VideoWndChn *GetActivePage() {return m_pActivePage;}

	// 
	virtual int audioplay(BOOL bOpen) = 0;

	void GetRefrenRect(CRect &rcRect);
protected:
	void SetDrawActiveRect(BOOL bFlag, COLORREF clrRect=RGB(255, 0, 0));
	// 计算窗口位置和尺寸
	void CalcPageRect(LPRECT lpRect,int nIndex,int nPageCount);
	//	画激活窗口边框
	void DrawActivePage(BOOL bFlag);
	// 更新窗口
	void UpdateWnd();
	// 添加窗口
	BOOL AddPage(VideoWndChn *pWnd);
	// 删除窗口(只是从链表中删除,实际对象的必须外部删除) 
	VideoWndChn *DelPage(VideoWndChn *pWnd);
	///////////////////////////////////////////////////
	CList<VideoWndChn*, VideoWndChn*> m_PageList;
	// 激活窗口指针
	VideoWndChn *m_pActivePage;
	// 多屏标记
	BOOL m_bMultiScreen;
	
	// 画边框标记
	BOOL m_bDrawActive;
	
	//	窗口边框颜色
	COLORREF m_clrRect, m_clrBack;
	
	//	全屏时保存原窗口信息,用来恢复窗口
	WINDOWPLACEMENT _temppl;		//window's placement
	CWnd*			_tempparent;	//window's parent
	// 全屏标记
	BOOL m_bFullScreen;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_VIDEOVIEWBASE_H__6BAAA595_35DB_4D0B_8DD1_F65CF09A8886__INCLUDED_)
