www.pudn.com > SpliterViewduoshipinxianshi.rar > LocalView.cpp, change:2004-11-03,size:3521b


// LocalView.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "SpliterView.h" 
#include "LocalView.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData); 
 
///////////////////////////////////////////////////////////////////////////// 
// CLocalView 
 
IMPLEMENT_DYNCREATE(CLocalView, CFormView) 
 
CLocalView::CLocalView() 
	: CFormView(CLocalView::IDD) 
{ 
	//{{AFX_DATA_INIT(CLocalView) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
CLocalView::~CLocalView() 
{ 
} 
 
void CLocalView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CLocalView) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CLocalView, CFormView) 
	//{{AFX_MSG_MAP(CLocalView) 
	ON_COMMAND(ID_LOCALVIDEO, OnLocalvideo) 
	ON_WM_DESTROY() 
	ON_COMMAND(ID_SAVEFILE, OnSavefile) 
	ON_COMMAND(ID_VIDEOFORMAT, OnVideoformat) 
	ON_COMMAND(ID_VIDEOSOURCE, OnVideosource) 
	ON_COMMAND(ID_VIDEOENABLE, OnVideoenable) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CLocalView diagnostics 
 
#ifdef _DEBUG 
void CLocalView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CLocalView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CLocalView message handlers 
 
void CLocalView::OnLocalvideo()  
{ 
	// TODO: Add your command handler code here 
	CRect ClientRect; 
	GetClientRect(&ClientRect); 
	 
	CRect VideoRect(0,0,160,120); 
	VideoRect.OffsetRect(0,ClientRect.bottom-120-5); 
	 
	m_LocalVideo.DestroyWindow(); 
	m_LocalVideo.Create("", WS_CHILD | WS_VISIBLE |WS_BORDER,VideoRect,this,9988); 
	 
	m_LocalVideo.GetWindowRect(&VideoRect); 
	m_hCapWnd = capCreateCaptureWindow("video",WS_CHILD|WS_VISIBLE|WS_BORDER|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME, 
		0,0,VideoRect.Width(),VideoRect.Height(),m_LocalVideo.GetSafeHwnd(),0); 
	 
	ASSERT(m_hCapWnd); 
	if(capDriverConnect(m_hCapWnd,0)) 
	{ 
		capDriverGetCaps(m_hCapWnd,&m_CapDrvCaps,sizeof(CAPDRIVERCAPS)); 
		if(m_CapDrvCaps.fCaptureInitialized) 
		{ 
			capPreviewRate(m_hCapWnd,33); 
			capPreview(m_hCapWnd,TRUE); 
			capSetCallbackOnFrame(m_hCapWnd,FrameCallbackProc); 
		} 
	} 
	else 
	{//初始化不成功 
		AfxMessageBox("捕获卡初始化失败");//初始化不成功的消息框显示 
		AfxGetMainWnd()->PostMessage(WM_CLOSE);//发送WM CLOSE消息,关闭对话框 
	} 
	 
} 
 
LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData) 
{ 
    unsigned char *data; 
	data = lpVData->lpData;//获得视频数据首址并将数据存入data数组中以便处理 
	return 0; 
} 
 
void CLocalView::OnDestroy()  
{ 
	CFormView::OnDestroy(); 
	 
	// TODO: Add your message handler code here 
	capDriverDisconnect(m_hCapWnd); 
	 
} 
 
void CLocalView::OnSavefile()  
{ 
	// TODO: Add your command handler code here 
	capCaptureSequence(m_hCapWnd); 
	 
} 
 
void CLocalView::OnVideoformat()  
{ 
	// TODO: Add your command handler code here 
	capDlgVideoFormat(m_hCapWnd); 
	 
} 
 
void CLocalView::OnVideosource()  
{ 
	// TODO: Add your command handler code here 
	capDlgVideoSource(m_hCapWnd); 
	 
} 
 
void CLocalView::OnVideoenable()  
{ 
	// TODO: Add your command handler code here 
	static flag = FALSE; 
	 
	flag = !flag; 
	capPreview(m_hCapWnd,flag); 
}