HRESULT SnapStill()
{
HRESULT hr;long cbBuffer = 0;
hr = pGrabber->GetCurrentBuffer(&cbBuffer, NULL);
if(FAILED(hr)) return E_FAIL;char *pBuffer = new char[cbBuffer];
if (!pBuffer) {
// Deal Out of memory. Return an error code.
}
hr = pGrabber->GetCurrentBuffer(&cbBuffer, (long*)pBuffer);
if(FAILED(hr)) return E_FAIL;//生成Bitmap
AM_MEDIA_TYPE mt;
hr = pGrabber->GetConnectedMediaType(&mt);
if (FAILED(hr)) return E_FAIL;VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)mt.pbFormat;
if(pVideoHeader==NULL) return E_FAIL;BITMAPINFO BitmapInfo;
ZeroMemory(&BitmapInfo, sizeof(BitmapInfo));
CopyMemory(&BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));HBITMAP hBitmap;
hBitmap = ::CreateDIBitmap(::GetDC(NULL), &(pVideoHeader->bmiHeader), CBM_INIT, pBuffer, &BitmapInfo, DIB_RGB_COLORS);if(hBitmap==NULL) return E_FAIL;
CString strSaveFileName="";
CFileDialog filedlg(FALSE,_T("bmp"),_T(""),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("BMP(*.bmp)"));
if(filedlg.DoModal()==IDOK){
strSaveFileName=filedlg.GetPathName();
SaveBitmapToFile(hBitmap,strSaveFileName.GetBuffer(0));
}return hr;
}
找的这段代码是保存图片,怎么能保存的同时图片也显示在Picture或Panel上?