在资源中保存了GIF,PNG,ANI等等资源时怎样加载呢?

可以使用如下方法

加载动态图标(光标)的方法

注意再将光标导入到资源时候资源类型输入ANI

//  在一般mfc程序中使用
// HINSTANCE hInstance = AfxGetInstanceHandle();
//  如果是atlcom组件中使用
// HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance();
HCURSOR LoadAniCursor(HINSTANCE hInstance, UINT nID)
... {
    HRSRC hRes = FindResource(hInstance, MAKEINTRESOURCE(nID), L"ANI");
    if (hRes == NULL)
    ...{
        ATLTRACE("cannot find resource errcode: %d", GetLastError());
        return NULL;
    }
    DWORD dwSize = SizeofResource(hInstance, hRes);
    HGLOBAL hGlob = LoadResource(hInstance, hRes);
    if (hGlob == NULL)
    ...{
        ATLTRACE("cannot Load resource errcode: %d", GetLastError());
        return NULL;
    }
    LPBYTE pBytes = (LPBYTE)LockResource(hGlob); 
    HCURSOR hCursor = (HCURSOR)CreateIconFromResource(pBytes, dwSize, FALSE, 0x00030000);
    if (hCursor == NULL)
    ...{
        ATLTRACE("cannot create ani cursor errcode: %d", GetLastError());
        return NULL;
    }
    UnlockResource(hGlob);
    FreeResource(hRes);
    return hCursor;
}

// 成功调用
SetCursor(hAniCursor);

上面的方法在非dll(包括ATL com Dll)的普通应用程序中使用是没有问题的。在dll中使用时某些ani(可能有alpha通道32位以上)的加载可能不成功。

另外介绍一种在MFC exe程序中使用的最简单的方法在加入ani 文件到资源中时候资源类型输入21( ATL_RT_ANICURSOR的值)

加载的方法可以为:

  1. HCURSOR hAniCur = ::LoadCursor(AfxFindResourceHandle(ATL_MAKEINTRESOURCE(IDR_ANI1),
  2. ATL_RT_ANICURSOR), ATL_MAKEINTRESOURCE(IDR_ANI1));

GIF PNG  图片加载方法(使用了GDI+)

BOOL ImageFromIDResource(HINSTANCE hInstance, UINT nID, LPCTSTR sTR, Image  *   & pImg)
... {
    HRSRC hRsrc = ::FindResource (hInstance, MAKEINTRESOURCE(nID), sTR); // type
    if (!hRsrc)
        return FALSE;

    // load resource into memory
    DWORD len = SizeofResource(hInstance, hRsrc);
    BYTE* lpRsrc = (BYTE*)LoadResource(hInstance, hRsrc);
    if (!lpRsrc)
        return FALSE;

    // Allocate global memory on which to create stream
    HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);
    BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
    memcpy(pmem,lpRsrc,len);
    IStream* pstm;
    CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);

    // load from stream
    pImg = Gdiplus::Image::FromStream(pstm);

    // free/release stuff
    GlobalUnlock(m_hMem);
    pstm->Release();
    FreeResource(lpRsrc);
    return TRUE;
}

从资源中加载特殊资源方法相关推荐

  1. spring配置中加载properties文件方法

    首先,遇到一个问题,spring配置中加载properties文件配置如下: <context:property-placeholder ignore-unresolvable="tr ...

  2. grasemonkey ajax页面,Greasemonkey 中使用 GM_xmlhttpRequest 如何在 https 页面中加载 http 资源?...

    之前写过一个ff下的gm脚本,功能是在豆瓣读书页面加载图书馆的馆藏信息,但是随着豆瓣全站https,脚本失效,尝试更改,但是仍然无法使用,请大家看看这个问题改如何解决. 目前的代码段 // ==Use ...

  3. java中加载驱动程序的方法_下面哪一项不是加载驱动程序的方法?

    JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lan ...

  4. 网页中加载flash的方法

    自06年4月IE升级之后,网页中的flash就需要先激活ActiveX控件才能使用.不爽.SWFObject是有效解决这个问题的js代码(原来叫 FlashObject),目前版本是1.4,完全开源的 ...

  5. 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL

    暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html

  6. java怎么将加载图片消除_Java中加载图片的方法

    Java中添加图片,我知道有两种方法 用new ImageIcon("地址")函数,将图片放到JLabel中,然后把JLabel放到需要的地方就可以了 ImageIcon bg=n ...

  7. Webpack实战(九):实现资源按需加载-资源异步加载

    第八篇[<教你搞懂webpack如果实现代码分片(code splitting)>] (https://blog.csdn.net/lfcss/article/details/104099 ...

  8. SpringBoot加载静态资源

    在SpringBoot中加载静态资源和在普通的web应用中不太一样.默认情况下,Spring Boot从classpath下一个叫/static(/public,/resources或/META-IN ...

  9. 《R数据可视化手册》一1.4 从Excel文件中加载数据

    本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...

最新文章

  1. python第二阶段 第六天 模块
  2. pyglet and opengl -- 纹理映射以及动画
  3. 编程开发之--java多线程学习总结(5)
  4. Excel基础操作(五)--图表基础
  5. njx如何实现负载均衡_负载均衡是怎么做的~
  6. GetAdaptersInfo获取MAC地址
  7. Redis:07---Redis数据结构
  8. 升值加薪Excel神助攻,数据透视表堪称神器!
  9. 服务器配置列表在哪个文件夹,FolderMagic
  10. NYOJ-58 最少步数
  11. Flutter拓展 android studio如何连接夜神模拟器(亲测!!!)
  12. 【交换机在江湖】第十二章 VLAN基础篇
  13. 存储服务器内的温度检测信号线 用线,常用的3线和4线电阻温度检测器介绍
  14. QCC512x QCC302x PIO 按键
  15. C语言之求两个数的最大公因数和最小公倍数
  16. 图片鉴黄的原理和应用
  17. 计算机黑屏启动超慢,电脑开机慢黑屏时间长怎么解决
  18. 100篇精选文章带你玩转TCP/IP协议
  19. java如何表格一样对齐_如何水平对齐表格? (How can I horizontally align a form?)
  20. 软件测试:三角形问题

热门文章

  1. Asp.net(C#/2.0) 部分全选 CheckBoxList
  2. 千聊资费说明和提现须知
  3. grafana监控nginx日志
  4. INSERT 插入语句 零基础自学SQL课程系列Day8
  5. 蓝桥杯(单片机开发)训练笔记
  6. C#控件CheckListBox的使用
  7. MPC5744P-DMA模块及SPI DMA发送
  8. 《Kotlin 程序设计》第五章 Kotlin 面向对象编程(OOP)
  9. 聊聊企业无线网络安全
  10. Zotero更改citation key format 后导出bib文件标签仍然很长,没有改变