隨筆-17  評論-64  文章-79  trackbacks-1
          //參數 圖片路徑,窗口句柄,圖片寬,高
          HRESULT ShowPic(char *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);
          ?
          ?
          ?//將圖形輸出到屏幕上(有點像BitBlt)
          ?bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,
          ??0,hmHeight,hmWidth,-hmHeight,NULL);
          ?
          ?pPic->Release();
          ?
          ?CloseHandle(hFile);//關閉打開的文件
          ?
          ?if (SUCCEEDED(bResult))
          ?{
          ??return S_OK;
          ?}
          ?else
          ?{
          ??return E_FAIL;
          ?}
          }
          posted on 2007-02-25 21:16 飛鳥 閱讀(1248) 評論(0)  編輯  收藏 所屬分類: VC
          主站蜘蛛池模板: 咸丰县| 海阳市| 五莲县| 积石山| 子长县| 梁河县| 长葛市| 武冈市| 贺兰县| 上林县| 古蔺县| 措美县| 张掖市| 读书| 农安县| 广汉市| 普宁市| 镇远县| 永兴县| 长沙市| 福州市| 嵊州市| 南投市| 玛多县| 新乡市| 新乐市| 始兴县| 泰宁县| 精河县| 平度市| 阿合奇县| 阳朔县| 海晏县| 嘉荫县| 和平县| 澳门| 清苑县| 特克斯县| 新沂市| 万源市| 尖扎县|