怎样能够将jpg图片显示在CStatic或者其他控件上呢?
解决方案 »
- 请教高手关于进程反注入的问题
- 关于驱动程序与应用程序的信息交互,DeviceIoControl
- 关于biBitCount值的一点疑问
- directx9.0c 的开发包安装以后Samples\c++下面怎么没有Common的通用框架呢?
- 空间物体求体积交算法实现
- 请问关于fstream和CList 问题
- 安装时的问题?
- 请问windows安装的标准ActiveX控件哪些可以从web服务器上读取文件到本地?
- edit_control刷新不了
- 请问谁有MS Excel文件的格式??太感谢
- 'AnimateWindow' : undeclared identifier,怎么解决啊
- 求OpenGL屏幕截图代码片段
HRESULT CXXXX::ShowPic(CDC *pDC,CString lpstrFile,int sx,int sy,int nScrWidth, int nScrHeight)在OnPaint()里调用ShowPic(&dc,"C:\\A.JPG",开始x坐标,开始y坐标,宽度,高度);ShowPic内容如下:
HRESULT CGoHomeDlg::ShowPic(CDC *pDC,CString lpstrFile,int sx,int sy,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,sx,sy,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL); pPic->Release(); if(SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}