高手们:
    本人现在要用VFW编写一个小程序用于控制摄像头定时拍摄一幅bmp,然后在内存中对这张bmp进行数据处理。
    但是本人遇到了困难。就是capDriverConnect连接到摄像头后,也能够读取驱动的名字,定时读取一次剪贴板放到bmp结构中,OnPaint后发现竟然是一片绿色。请问我究竟连接到摄像头没有?为什么摄像头不工作呢?
    以下是我的连接源代码和OnPaint源代码,请问哪位高手能够帮我找一下原因。
    如果实在没救,能否给一个可行的程序,只要简单读到数据放到内存CBitmap对象中就可以了。
    void CLightIIDlg::OnBnClickedStart()
{
// TODO: 在此添加控件通知处理程序代码
CAPDRIVERCAPS gCapDriverCaps;
TCHAR szDeviceName[80];
TCHAR szDeviceVersion[80];
TCHAR szDeviceInfo[100];
hWndC=capCreateCaptureWindow(L"Capture Window",WS_CHILD|WS_DLGFRAME,
m_rect.TopLeft().x,m_rect.TopLeft().y,320,240,GetSafeHwnd(),1);
if(hWndC)
{
capDriverConnect(hWndC,0);
capGetDriverDescription(0,szDeviceName,sizeof(szDeviceName),szDeviceVersion,sizeof(szDeviceVersion));
lstrcpy(szDeviceInfo,szDeviceName);
lstrcat(szDeviceInfo,szDeviceVersion);
m_info.SetWindowText(szDeviceInfo);
}
else
{
AfxMessageBox(L"Error!Cannot connect to Camera.",0,0);
exit(1);
}
capDriverGetCaps(hWndC,&gCapDriverCaps,sizeof(CAPDRIVERCAPS));
capPreviewRate(hWndC,66);
capPreview(hWndC,true);
start=true;
SetTimer(1,1000,NULL);
}
OnPaint()代码:
m_bmp.GetBitmap(&bm);
dcMem.DeleteDC();
dcMem.CreateCompatibleDC(&dc);
dcMem.SelectObject(&m_bmp);
dc.StretchBlt(m_rect.left,m_rect.top,m_rect.Width(),m_rect.Height(),
&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);