fstream file;
file.open("C:\\test11.jpg",ios::binary|ios::in|ios::out,_SH_DENYRW);
if (file.fail())
{
AfxMessageBox("打开文件出错!");
}
file.seekg(0,ios_base::end);
streampos ps = file.tellg();
int filesize = ps;
file.seekg(0,ios_base::beg);
char * filebuffer = (char*)malloc(filesize);
file.read(filebuffer,filesize);
file.close();
HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE,filesize);
void * pImageMemoy = GlobalLock(hImageMemory);
memcpy(pImageMemoy,filebuffer,filesize);
file.close();
GlobalUnlock(hImageMemory);
IStream *pIStream;
IPicture *pIPicture;
HRESULT ss = CreateStreamOnHGlobal(hImageMemory,FALSE,&pIStream);
HRESULT hr = OleLoadPicture(pIStream,filesize,FALSE,IID_IPicture,(LPVOID*)&(pIPicture));
if (SUCCEEDED(hr)&&pIPicture)
{
OLE_XSIZE_HIMETRIC hmwidth;
OLE_XSIZE_HIMETRIC hmheihgt;
pIPicture->get_Width(&hmwidth);
pIPicture->get_Height(&hmheihgt);
CDC *pcdc = this->GetDlgItem(IDC_STATIC_PICTURE)->GetDC();//控件
HDC hDC = pcdc->GetSafeHdc();
pIPicture->Render(hDC,0,0,200,200,0,hmheihgt,hmwidth,-hmheihgt,NULL);
pIPicture->Release();
this->ReleaseDC(pcdc);
}
GlobalFree(hImageMemory);
pIStream->Release();
file.open("C:\\test11.jpg",ios::binary|ios::in|ios::out,_SH_DENYRW);
if (file.fail())
{
AfxMessageBox("打开文件出错!");
}
file.seekg(0,ios_base::end);
streampos ps = file.tellg();
int filesize = ps;
file.seekg(0,ios_base::beg);
char * filebuffer = (char*)malloc(filesize);
file.read(filebuffer,filesize);
file.close();
HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE,filesize);
void * pImageMemoy = GlobalLock(hImageMemory);
memcpy(pImageMemoy,filebuffer,filesize);
file.close();
GlobalUnlock(hImageMemory);
IStream *pIStream;
IPicture *pIPicture;
HRESULT ss = CreateStreamOnHGlobal(hImageMemory,FALSE,&pIStream);
HRESULT hr = OleLoadPicture(pIStream,filesize,FALSE,IID_IPicture,(LPVOID*)&(pIPicture));
if (SUCCEEDED(hr)&&pIPicture)
{
OLE_XSIZE_HIMETRIC hmwidth;
OLE_XSIZE_HIMETRIC hmheihgt;
pIPicture->get_Width(&hmwidth);
pIPicture->get_Height(&hmheihgt);
CDC *pcdc = this->GetDlgItem(IDC_STATIC_PICTURE)->GetDC();//控件
HDC hDC = pcdc->GetSafeHdc();
pIPicture->Render(hDC,0,0,200,200,0,hmheihgt,hmwidth,-hmheihgt,NULL);
pIPicture->Release();
this->ReleaseDC(pcdc);
}
GlobalFree(hImageMemory);
pIStream->Release();