陆老师,来看看???
陆老师,我按你的例子,该写了抓图,但是保存为bmp文件,打不开,
IBasicVideo *mBasicVideo = NULL;
g_pGraph->QueryInterface(IID_IBasicVideo, (void **)&mBasicVideo);
long bitmapSize = 0;
mBasicVideo->GetCurrentImage(&bitmapSize,0);
BOOL pass = false;
BYTE *buffer = new BYTE[bitmapSize];
mBasicVideo->GetCurrentImage(&bitmapSize,(long*)buffer);
BITMAPFILEHEADER hdr;
LPBITMAPINFOHEADER lpbi;
lpbi = (LPBITMAPINFOHEADER)buffer;
int ihandle;
HANDLE hf = CreateFile(
"c:\\cc.bmp", GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, NULL, NULL );
BITMAPFILEHEADER bfh;
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB'; //((WORD) ('M' << 8) | 'B')
bfh.bfSize = sizeof( bfh ) + bitmapSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );
DWORD dwWritten = 0;
long hr = WriteFile( hf, &bfh, sizeof(bfh), &dwWritten, NULL );
BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = long(320);
bih.biHeight = long(240);
bih.biPlanes = 1;
bih.biBitCount = 24;
dwWritten = 0;
WriteFile( hf, &bih, sizeof( bih ), &dwWritten, NULL );
dwWritten = 0;
WriteFile( hf, buffer, bitmapSize, &dwWritten, NULL );
CloseHandle( hf );
delete buffer;
mBasicVideo->Release();