##
1.定義畫圖函數
HRESULT CIPCamDlg::draw(char *lpImageFile, 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(lpImageFile,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) {AfxMessageBox("圖形文件分配出錯.");return E_FAIL; }if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配內存塊 {AfxMessageBox("內存塊鎖定出問題");return E_FAIL;}ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件讀入內存緩沖區 GlobalUnlock(hGlobal);if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) != S_OK){AfxMessageBox("流初始化失敗");return E_FAIL; }bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);//裝入圖形文件 if(FAILED(bResult)) {AfxMessageBox("圖形文件裝載出錯.");return E_FAIL; }OLE_XSIZE_HIMETRIC hmWidth;//圖片的真實寬度 OLE_YSIZE_HIMETRIC hmHeight;//圖片的真實高度 pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight);//char str[20]={'\0'}; bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL);//將圖形輸出到屏幕上 CloseHandle(hFile);//關閉打開的文件 pPic->Release(); GlobalFree(hGlobal);// Free memory. if (SUCCEEDED(bResult)) { return S_OK; } else { AfxMessageBox("圖形文件裝載出錯.");return E_FAIL; } }
2.調用
HWND m_hWnd; GetDlgItem(IDC_STATIC_VIEW,&m_hWnd); //IDC_STATIC_VIEW是picture控件(不用做任何修改) draw("D://a.jpg",m_hWnd,寬度,高度);
?