一个C++的例子:
BOOL CCapWndDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
m_bInit = FALSE;
CWnd * pWnd = AfxGetMainWnd()->GetDlgItem(IDC_VIDEO);
CRect rect ;
pWnd->GetWindowRect(&rect);//得到窗口大小
// 设置预视窗口
m_hCapWnd = capCreateCaptureWindow((LPTSTR)TEXT("Capture Test"), // 标题
WS_CHILD | WS_VISIBLE
| WS_EX_CLIENTEDGE
| WS_EX_DLGMODALFRAME, // 风格
0, 0, rect.Width(), rect.Width(), // 大小
pWnd->GetSafeHwnd(), // 窗口句柄
(int) 0);
// 窗口的ID号
ASSERT(m_hCapWnd);
// 连接驱动器
if(capDriverConnect(m_hCapWnd, 0)) // 连接第0号驱动器
{
m_bInit = TRUE;
// 得到驱动器的性能
capDriverGetCaps(m_hCapWnd, &m_CapDrvCap, sizeof(CAPDRIVERCAPS));
// 是否初始化成功
if(m_CapDrvCap.fCaptureInitialized)
{
// 得到驱动器状态
capGetStatus(m_hCapWnd ,&m_CapStatus, sizeof(m_CapStatus));
// 设置预视帧率
capPreviewRate(m_hCapWnd, 30);
// 设置为预视方式
capPreview(m_hCapWnd, TRUE);
}
else
{// 初始化未成功
AfxMessageBox("Driver not initialized!");
AfxGetMainWnd()->PostMessage(WM_CLOSE);
}
}
else
{ // 未能连接到驱动器
AfxMessageBox("Conncet to driver Fail!");
AfxGetMainWnd()->PostMessage(WM_CLOSE);
}
// 设置捕捉文件
m_CapFileName = "C://Capture.avi";
capFileSetCaptureFile(m_hCapWnd, m_CapFileName.GetBuffer(255));
return TRUE;
}