capPreviewRate(m_hVideo,50);//设置Preview模式的显示速率 capPreview(m_hVideo,TRUE);//启动Preview模式 //DO: Add extra initialization here SetTimer(1,10,NULL);//启动定时器1,定时时间是10毫秒
}
在回调函数中将相应的BITMAP数据头和图像数据各存入一个指针数组中 程序如下: BITMAPINFO m_BitmapInfo; LPBITMAPINFO lpbi; BYTE* pDIBDate ; DWORD dataBytes ; BITMAPINFO* lp; DWORD dwSize ; long dibwidth; long dibheight; long m_iCameraheight ; long m_iCamerawidth ; unsigned char * m_pImageIniDIB ;LRESULT CALLBACK FrameCallbackProc(HWND ghVideo, LPVIDEOHDR lpVHdr) { if (!ghVideo) return FALSE; //dwSize=capGetVideoFormatSize(ghVideo);
void CTEST1Dlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_hVideo=::capCreateCaptureWindow("Me",WS_CHILD | WS_VISIBLE,
0,0,240,220,m_hWnd,0); ghVideo=m_hVideo;
capSetCallbackOnFrame(m_hVideo, FrameCallbackProc);
char szDeviceName[80];
char szDeviceVersion[80];
int wIndex; for (wIndex = 0; wIndex < 10; wIndex++)
{
if (capGetDriverDescription (wIndex, szDeviceName,
sizeof (szDeviceName), szDeviceVersion,
sizeof (szDeviceVersion)) )
{
if(capDriverConnect(m_hVideo,wIndex))
{
m_Combo3.AddString(szDeviceName);
}
} } GlobalAllocPtr(GHND,dwSize);
capGetVideoFormat(m_hVideo,&m_BitmapInfo,sizeof(BITMAPINFO));
m_iCameraheight=m_BitmapInfo.bmiHeader.biHeight;
m_iCamerawidth=m_BitmapInfo.bmiHeader.biWidth;
m_pImageIniDIB = new unsigned char [m_BitmapInfo.bmiHeader.biSizeImage];
capPreviewRate(m_hVideo,50);//设置Preview模式的显示速率
capPreview(m_hVideo,TRUE);//启动Preview模式
//DO: Add extra initialization here SetTimer(1,10,NULL);//启动定时器1,定时时间是10毫秒
}
程序如下:
BITMAPINFO m_BitmapInfo;
LPBITMAPINFO lpbi;
BYTE* pDIBDate ;
DWORD dataBytes ;
BITMAPINFO* lp;
DWORD dwSize ;
long dibwidth;
long dibheight;
long m_iCameraheight ;
long m_iCamerawidth ;
unsigned char * m_pImageIniDIB ;LRESULT CALLBACK FrameCallbackProc(HWND ghVideo, LPVIDEOHDR lpVHdr)
{
if (!ghVideo)
return FALSE; //dwSize=capGetVideoFormatSize(ghVideo);
//dibwidth = lpbi->bmiHeader.biWidth;
//dibheight = lpbi->bmiHeader.biHeight;
//dataBytes = lpbi->bmiHeader.biSizeImage ;
//pDIBDate = (BYTE*) new char[dataBytes];
//memcpy(lp,&(m_BitmapInfo.bmiHeader ) ,sizeof(BITMAPINFOHEADER));
memcpy(m_pImageIniDIB,(char *)lpVHdr->lpData ,m_BitmapInfo.bmiHeader.biSizeImage);
return (LRESULT) TRUE ;
}