我用摄像头做视频监控,截取每一针的图片,然后用 SetDIBitsToDevice 显示到图片控件上,可是老是现实不了,我截取图片得格式是YUV格式,是不是YUV格式就不能在控件上显示?怎么解决?  
   附程序:
  long lBufSize; 
HRESULT hr; 
LPBYTE pBuffer; 
BITMAPINFO lpBmpInfo; 
CWnd *pWnd; 
CRect Rect; 
VIDEOSTREAMINFO vsi; 
hr=DSStream_GetCurrentDib(0, NULL, &lBufSize); 
if (FAILED(hr)) 

MessageBox("申请内存失败!"); 
// return -1; 

//申请图像缓冲区 
pBuffer=new BYTE[lBufSize]; //采集图像到缓冲区 
hr=DSStream_GetCurrentDib( 0,  pBuffer,  &lBufSize);    // DSStream_GetCurrentDib(int iCardID, BYTE* pBuffer, long* pSize)将当前图像的 DIB 数据保存到内存中。pBuffer:指向预先分配的内存。可以为 NULL,此时 pSize 将得到保存图像需要的内存大小。pSize:若 pBuffer 不为 NULL,pSize 指示 pBuffer 的大小。为pBuffer 为 NULL, pSize 得到保存图像需要的内存大小。数     if (FAILED(hr)) 

MessageBox("采集图像失败!"); 

hr = DSStream_GetVideoInfo(0, &vsi, PREVIEW);//得到显示脚或录像脚的视频属性,包括视频子类型、帧率、图像的大小、颜色位率等。pVSI:返回视频属性。 
if(SUCCEEDED(hr)) 
{     lpBmpInfo.bmiHeader = vsi.bmiHeader;  } pWnd=GetDlgItem(IDC_XIANSHI);  //IDC_XIANSHI 为图片控件ID 
pWnd->GetClientRect(&Rect); 
int Width,Height; 
Width=Rect.Width(); 
Height=Rect.Height();         HDC hdc; 
hdc=::GetDC(pWnd->m_hWnd); 
hr=SetDIBitsToDevice(hdc, 0, 0, Width, Height, 0, 0, 0, lpBmpInfo.bmiHeader.biHeight, pBuffer, &lpBmpInfo, DIB_RGB_COLORS); 
if (hr==0) 

MessageBox("图像映射失败!"); } IDC_XIANSHI 是图片控件的ID可是程序运行结果是("图像映射失败!");