怎么通过图片文件的路径在mfc对话框中动态显示图片
如何通过图片文件的路径在mfc对话框中动态显示图片?
其实是一个数据库,点击不同的数据项便搜索相应的图片文件路径,然后显示在对话框右下方的一个框框里。请问该如何实现?采用某个控件还是用哪个函数?
多谢!
------解决方案--------------------
用这个函数比较容易:
其实是一个数据库,点击不同的数据项便搜索相应的图片文件路径,然后显示在对话框右下方的一个框框里。请问该如何实现?采用某个控件还是用哪个函数?
多谢!
------解决方案--------------------
用这个函数比较容易:
- C/C++ code
HRESULT ShowPic(CDC *pDC,CString lpstrFile,int x,int y, int nScrWidth, int nScrHeight)//对指定路径文件缩放处理 { 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) { CloseHandle(hFile); return E_FAIL; } } else { return E_FAIL; } //分配全局存储空间 HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize); if(hGlobal==NULL) return E_FAIL; LPVOID pvData =GlobalLock(hGlobal); if(pvData==NULL)//锁定分配内存块 { GlobalFree(hGlobal); return E_FAIL; } ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区 CloseHandle(hFile);//关闭打开的文件 GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal,TRUE,&pStm); //装入图形文件 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic); GlobalFree(hGlobal); if(FAILED(bResult)) return E_FAIL; long hmWidth;//图片的真实宽度 long hmHeight;//图片的真实高度 pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight); //将图形输出到屏幕上(有点像BitBlt) bResult=pPic->Render(pDC->m_hDC,x,y,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL); pPic->Release(); if(SUCCEEDED(bResult)) { return S_OK; } else { return E_FAIL; } }