我已经保存了图片在数据库中,现在要把它显示在对话框的PICTURE CONTROL (ID=IDC_PIC)中,下面是代码:
long nSize = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->ActualSize; // 获取字段 "pic" 的当前单元的大小
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->GetChunk(nSize);// 读取 OLE 对象 --> varBLOB
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) // 申请必要的存储空间
{
void* pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
memcpy(pBuffer,pBuf,nSize); // 复制数据到缓冲区 pBuffer
SafeArrayUnaccessData (varBLOB.parray);
....................................
....................................
}
}
}
省略号的地方不知道怎么写了,请大侠们帮帮忙!
long nSize = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->ActualSize; // 获取字段 "pic" 的当前单元的大小
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = theApp.m_pRecordset->GetFields()->GetItem("IMAGE")->GetChunk(nSize);// 读取 OLE 对象 --> varBLOB
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) // 申请必要的存储空间
{
void* pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
memcpy(pBuffer,pBuf,nSize); // 复制数据到缓冲区 pBuffer
SafeArrayUnaccessData (varBLOB.parray);
....................................
....................................
}
}
}
省略号的地方不知道怎么写了,请大侠们帮帮忙!
m_header.biSize = sizeof(m_header);
header.biWidth = rect.Width();
header.biHeight = rect.Height();
header.biPlanes = 1;
header.biBitCount = 24;
header.biCompression = BI_RGB;
header.biSizeImage = 0;
header.biXPelsPerMeter = 0;
header.biYPelsPerMeter = 0;
header.biClrUsed = 0;
header.biClrImportant = 0;
::DrawDibDraw(::DrawDibOpen(), dc.GetSafeHdc(),
rect.left, rect.top, rect.Width(), rect.Height(),
&header, pBuffer,
0, 0, -1, -1, 0);