我已经保存了图片在数据库中,现在要把它显示在对话框的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);
                                              ....................................
                                              ....................................

}
}
省略号的地方不知道怎么写了,请大侠们帮帮忙!

解决方案 »

  1.   

    BITMAPINFOHEADER header;
    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);