取出数据库中的图片并显示出来
我要做的是读取数据库中保存的JPG图片然后显示在PICTURE CONTROL上面
下面是代码:
_variant_t pvList ;
long lDataSize = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->ActualSize;
m_nFileLen = (DWORD)lDataSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->GetChunk(lDataSize);
//把二进制格式的图片转为图片格式
try
{
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(m_pJPGBuffer = new char[lDataSize+1])
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(m_pJPGBuffer,pBuf,lDataSize);
SafeArrayUnaccessData (varBLOB.parray);
m_nFileLen = lDataSize;
//m_pJPGBuffer -> pPicture
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, m_nFileLen );
LPVOID lpBuf = ::GlobalLock( hMem );
memcpy(lpBuf,m_pJPGBuffer,m_nFileLen);
::GlobalUnlock( hMem );
if ( CreateStreamOnHGlobal( hMem, TRUE, &pStream ) !=S_OK )
return 0 ;
if ( OleLoadPicture( pStream, m_nFileLen, TRUE, IID_IPicture, ( LPVOID * )&pPicture ) !=S_OK )
return 0;
CRect rect;
m_picture.GetClientRect(&rect); //m_picture为Picture Control控件变量,获得控件的区域对象
CDC* pDC = m_picture.GetWindowDC(); //获得显示控件的DC
if (pPicture != NULL)
{
long nWidth,nHeight;
pPicture->get_Width( &nWidth );
pPicture->get_Height( &nHeight );
//图片原大显示
//CSize sz( nWidth, nHeight );
//pDC->HIMETRICtoDP( &sz );
//pPicture->Render(pDC->m_hDC,x,y,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);
pPicture->Render(pDC->m_hDC,rect.left,rect.top,rect.Width(),rect.Height(),0,nHeight,nWidth,-nHeight,NULL);
}
//UpdateData(true);
ReleaseDC(pDC);
}
}
}
catch(...)
{
AfxMessageBox("从数据库中读取jpg图像有错!");
return 0;
}
}
}
为什么在图片控件上显示不出来呢?????