Win7下VFW控制摄像头

开发环境: Win7 + VS2008 + VFW

一. 最基础的调用

1.1  初始化

BOOL CMyDlg::Init()
{
	// HWND m_hWndVideo;
	// 创建捕捉窗口
	m_hWndVideo = capCreateCaptureWindow(
		_T("abcd"),			// 窗口名称
		WS_POPUP, 			// Windows窗口的属性
		1, 1, 10, 10, 		// 窗口的位置和大小
		0, 					// 父窗口
		0					// 我这里使用0, 如果是非0, 就创建失败, 不知为什么.
	);

	// 连接设备.
	// 在Win7下, capDriverConnect有时会调用失败, 所以需要使用一个循环来知道调用成功为止.
	// 当然, 最好加上挑除循环的判断, 否则在没有插入摄像头时, 会死循环.
	while(FALSE == (capDriverConnect(m_hWndVideo, 0)))
	{
		Sleep(10);
	}
	
	m_bCapture=TRUE;
	// 设置视频窗口的一些属性, 这些都是Windows窗口的一些属性
	// 不设置也可以, 看你的需求.
	::SetParent(m_hWndVideo, *this);
	::SetWindowLong(m_hWndVideo, GWL_STYLE,WS_CHILD);
	// 设置位置
	CRect m_rect;
	m_panel.GetClientRect(m_rect);
	m_panel.MapWindowPoints(this,m_rect);
	m_rect.DeflateRect(1,1,1,1);
	::SetWindowPos(m_hWndVideo,NULL,m_rect.left,m_rect.top,m_rect.Width(),m_rect.Height(),SWP_NOZORDER);
	// 显示窗口
	::ShowWindow(m_hWndVideo, SW_SHOW);

	return true;
}


 

1.2 播放视频

void CMyDlg::OnBtnPreview() 
{
	// TODO: Add your control notification handler code here
	if(m_bCapture)
	{
		// 播放前, 一定要设置帧率, 否则不能播放
		capPreviewRate(m_hWndVideo, 15);		// 设置预览帧频率 每15ms播放一帧
		capPreviewScale(m_hWndVi
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值