首页 > 编程语言 > 详细

MFC载入JPG图片

时间:2017-08-14 11:12:38      阅读:251      评论:0      收藏:0      [点我收藏+]

##

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,宽度,高度);

 

MFC载入JPG图片

原文:http://www.cnblogs.com/tinaluo/p/7356559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!