capFileSaveDIB(hWnd,str);

capFileSaveDIB(hWnd,str);

LRESULT CALLBACK VideoCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
static int counter = 0;
char str[]="a.bmp";
str[0] = counter + '0';
counter++;
counter = counter % 10;//预留保存10张图片
capFileSaveDIB(hWnd,str);
return 0;
}

void CVFMDlg::OnBtnStart()
{
// TODO: Add your control notification handler code here
m_hCaptureWnd = capCreateCaptureWindow(NULL,WS_CHILD | WS_VISIBLE,1,1,10,10,m_hWnd,0);
capSetCallbackOnFrame(m_hCaptureWnd,VideoCallbackProc);
//capSetCallbackOnVideoStream(m_hCaptureWnd,&capVideoStreamCallback);
//capSetCallbackOnVideoStream意思是说当采集视频发生的时候,每采集一桢之后都会调用capVideoStreamCallback函数
if(m_hCaptureWnd == NULL)
{
   MessageBox("创建显示窗口失败");
   return;
}
//连接驱动程序
if (capDriverConnect(m_hCaptureWnd,0))
{
  
   ::SetParent(m_hCaptureWnd,*this);
   ::SetWindowLong(m_hCaptureWnd,GWL_STYLE,WS_CHILD);
   //把采集窗口置于Static控件内
   CRect wndRC;
   m_panel.GetClientRect(wndRC);
   m_panel.MapWindowPoints(this,wndRC);
   wndRC.DeflateRect(1,1,1,1);
   ::SetWindowPos(m_hCaptureWnd,NULL,wndRC.left,wndRC.top,wndRC.Width(),wndRC.Height(),SWP_NOZORDER);
   ::ShowWindow(m_hCaptureWnd,SW_SHOW);
   //设置捕捉源对话框
   CAPDRIVERCAPS CapDrvCaps;
   capDriverGetCaps(m_hCaptureWnd,&CapDrvCaps,sizeof(CAPDRIVERCAPS));
   if(CapDrvCaps.fHasDlgVideoSource) //设置捕捉源对话框
    capDlgVideoSource(m_hCaptureWnd);
   else
    return;
   //视频采集
   capDlgVideoFormat(m_hCaptureWnd);   //设置视频格式
   capPreviewRate(m_hCaptureWnd,30);   //每30秒监视一次
   capPreview(m_hCaptureWnd,TRUE);   //开始监视
}
else
{
   MessageBox("连接失败!");
   return ;
}
}

void CVFMDlg::OnBtnStop()
{
// TODO: Add your control notification handler code here
capCaptureStop(m_hCaptureWnd);
capPreview(m_hCaptureWnd, FALSE);
CWnd* pWnd=CWnd::FromHandle(m_hCaptureWnd);
pWnd->SendMessage(WM_CAP_DRIVER_DISCONNECT,0, 0L);
}

其余代码看看吧,没什么意义。

然后用MCI实现播放和录音,现在可以播放了,33行代码……
录音放到明天,太晚了,不录了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值