VC 6.0 用IPicture接口显示JPEG图片代码
来源:互联网 发布:流量话费充值分销源码 编辑:程序博客网 时间:2024/06/05 15:32
- HRESULT ShowPic(LPCWSTR lpstrFile,HWND hWnd,int nScrWidth,int nScrHeight)
- {
- HDC hDC_Temp=GetDC(hWnd);
- IPicture *pPic;
- IStream *pStm;
- BOOL bResult; HANDLE hFile=NULL;
- DWORD dwFileSize,dwByteRead;
-
- hFile=CreateFile(lpstrFile,GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
- if (hFile != INVALID_HANDLE_VALUE)
- {
- dwFileSize=GetFileSize(hFile,NULL);
- if(dwFileSize==0xFFFFFFFF)
- return E_FAIL;
- }
- else
- {
- return E_FAIL;
- }
- HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
- LPVOID pvData = NULL;
- if (hGlobal == NULL)
- return E_FAIL;
- if ((pvData = GlobalLock(hGlobal)) == NULL)
- return E_FAIL;
- ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);
- GlobalUnlock(hGlobal);
- CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
- bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
- if(FAILED(bResult)) return E_FAIL;
- OLE_XSIZE_HIMETRIC hmWidth;
- OLE_YSIZE_HIMETRIC hmHeight;
- pPic->get_Width(&hmWidth);
- pPic->get_Height(&hmHeight);
- RECT rc;
- GetClientRect(hWnd, &rc);
- bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight, 0,hmHeight,hmWidth,-hmHeight,&rc);
- ::ReleaseDC(hWnd,hDC_Temp);
- pPic->Release();
- CloseHandle(hFile);
- if (SUCCEEDED(bResult))
- {
- return S_OK;
- }
- else
- {
- return E_FAIL;
- }
- }
没有测试过,今天随手偶得,整理了放上来,以备后用。