隨筆-17  評論-64  文章-79  trackbacks-1
          //參數(shù) 圖片路徑,窗口句柄,圖片寬,高
          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);//獲取文件字節(jié)數(shù)
          ??
          ??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)//鎖定分配內(nèi)存塊
          ??return E_FAIL;
          ?
          ?ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件讀入內(nèi)存緩沖區(qū)
          ?
          ?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;//圖片的真實(shí)寬度
          ?OLE_YSIZE_HIMETRIC hmHeight;//圖片的真實(shí)高度
          ?pPic->get_Width(&hmWidth);
          ?pPic->get_Height(&hmHeight);
          ?
          ?
          ?//將圖形輸出到屏幕上(有點(diǎn)像BitBlt)
          ?bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,
          ??0,hmHeight,hmWidth,-hmHeight,NULL);
          ?
          ?pPic->Release();
          ?
          ?CloseHandle(hFile);//關(guān)閉打開的文件
          ?
          ?if (SUCCEEDED(bResult))
          ?{
          ??return S_OK;
          ?}
          ?else
          ?{
          ??return E_FAIL;
          ?}
          }
          posted on 2007-02-25 21:16 飛鳥 閱讀(1248) 評論(0)  編輯  收藏 所屬分類: VC
          主站蜘蛛池模板: 纳雍县| 洛隆县| 德安县| 万年县| 高淳县| 宝鸡市| 瓦房店市| 墨江| 安陆市| 永川市| 齐河县| 苗栗市| 崇礼县| 永宁县| 华阴市| 陇川县| 乐至县| 定陶县| 靖江市| 河北省| 平泉县| 清远市| 瑞金市| 闽侯县| 临夏市| 祥云县| 舞阳县| 鄂尔多斯市| 永修县| 晋宁县| 长岭县| 岳普湖县| 新郑市| 信宜市| 金寨县| 长沙县| 田林县| 甘泉县| 威信县| 德阳市| 三亚市|