博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[WM C++]从资源文件中加载显示png/jpg图片
阅读量:5792 次
发布时间:2019-06-18

本文共 939 字,大约阅读时间需要 3 分钟。

一、 实现代码

void
 DrawImage(HDC hdc,RECT
&
 rc,UINT nIDResource,CString lpType)
{
    HINSTANCE hInst 
=
 AfxGetResourceHandle();
    HRSRC hRsrc 
=
 ::FindResource(hInst, MAKEINTRESOURCE(nIDResource), lpType); 
    
if
 (
!
hRsrc)
        
return
;
    
    
//
资源大小
    DWORD len 
=
 SizeofResource(hInst, hRsrc);
    
//
转换图片资源为字节数组
    BYTE
*
 lpRsrc 
=
 (BYTE
*
)LoadResource(hInst, hRsrc);
    
if
 (
!
lpRsrc)
        
return
;
    IImagingFactory 
*
pImgFactory 
=
 NULL;
    IImage 
*
pImage 
=
 NULL;
    CoInitializeEx(NULL, COINIT_MULTITHREADED);
    
if
 (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
                                    NULL,
                                    CLSCTX_INPROC_SERVER,
                                    IID_IImagingFactory,
                                    (
void
 
**
)
&
pImgFactory)))
    {
        
if
 (SUCCEEDED(pImgFactory
->
CreateImageFromBuffer(lpRsrc,len,BufferDisposalFlagNone,
&
pImage)))
        {
            pImage
->
Draw(hdc, 
&
rc, NULL);
            pImage
->
Release();
        }
        pImgFactory
->
Release();
    }
    CoUninitialize();
    
    
//
释放资源
    FreeResource(hRsrc);
}

    代码说明:

      a).  关键部分为将LoadResource转换成BYTE*以及CreateImageFromBuffer方法。

本文转自博客园农民伯伯的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
如何向 Linux 内核上游提交 Patch ?
查看>>
Go编程笔记(7)
查看>>
Go语言int类型绑定方法
查看>>
pid控制的文章
查看>>
MySQL中EXPLAIN命令详解
查看>>
redis 单点部署
查看>>