读取数据库中的图片主要在下面两个函数中实现,我已经在 CImageDlg 声明了 CBitmap Bitmap, 数据库为 ms Access,数据库的连接为 dao,DFX 映射了 CByteArray   m_column1 为数据库表中的 位图图象 字段。我是要把它输出到我的 对话框中,可是程序运行时对话框却没有输出图片(在我的数据库中确实有图片)。BOOL CImageDlg::GetImageData(CByteArray &DBArray)
{
CByteArray Array;
Array.Copy( DBArray); 
int HeaderLen =78+sizeof(BITMAPFILEHEADER); 
Array.RemoveAt( 0, HeaderLen );
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)Array.GetData() ;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)Array.GetData() ;
int nColors=bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1 << bmiHeader.biBitCount;
LPVOID lpDIBBits;
if( bmInfo.bmiHeader.biBitCount > 8 )
lpDIBBits=(LPVOID)((LPDWORD)(bmInfo.bmiColors+bmInfo.bmiHeader.biClrUsed)+
((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
else
lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
  CClientDC dc(NULL);
HBITMAP hBmp = CreateDIBitmap( dc.m_hDC, 
&bmiHeader, 
CBM_INIT, 
lpDIBBits, 
&bmInfo, 
DIB_RGB_COLORS); 
Bitmap.Attach( hBmp );
Array.RemoveAll();  
return TRUE;
}
void CImageDlg::OnPaint() 
{

imageData db;//imageData 为继承 CDaoRecordset 自的类
db.Open(); GetImageData(db.m_column1);//m_column1 为imageData类的成员变量 CPaintDC dc(this);
if (Bitmap.m_hObject == NULL)//Bitmap 为CImageDlg 的成员变量

CDC dcMem;
CSize sizeBitmap;
dcMem.CreateCompatibleDC( &dc ); 
CBitmap* pbmpOld ;
BITMAP BmpSize ; 
Bitmap.GetBitmap(&BmpSize); 
pbmpOld = dcMem.SelectObject(&Bitmap);
dc.StretchBlt( 20, 20, 200, 200, &dcMem, 0, 0, BmpSize.bmWidth, BmpSize.bmHeight, SRCCOPY);
dcMem.SelectObject( pbmpOld ); 
}
CDialog::OnPaint();
}