从资源中加载特殊资源方法
在资源中保存了GIF,PNG,ANI等等资源时怎样加载呢?
可以使用如下方法
加载动态图标(光标)的方法
注意再将光标导入到资源时候资源类型输入ANI
// 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的值)
加载的方法可以为:
- HCURSOR hAniCur = ::LoadCursor(AfxFindResourceHandle(ATL_MAKEINTRESOURCE(IDR_ANI1),
- ATL_RT_ANICURSOR), ATL_MAKEINTRESOURCE(IDR_ANI1));
GIF PNG 图片加载方法(使用了GDI+)
... {
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;
}
从资源中加载特殊资源方法相关推荐
- spring配置中加载properties文件方法
首先,遇到一个问题,spring配置中加载properties文件配置如下: <context:property-placeholder ignore-unresolvable="tr ...
- grasemonkey ajax页面,Greasemonkey 中使用 GM_xmlhttpRequest 如何在 https 页面中加载 http 资源?...
之前写过一个ff下的gm脚本,功能是在豆瓣读书页面加载图书馆的馆藏信息,但是随着豆瓣全站https,脚本失效,尝试更改,但是仍然无法使用,请大家看看这个问题改如何解决. 目前的代码段 // ==Use ...
- java中加载驱动程序的方法_下面哪一项不是加载驱动程序的方法?
JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lan ...
- 网页中加载flash的方法
自06年4月IE升级之后,网页中的flash就需要先激活ActiveX控件才能使用.不爽.SWFObject是有效解决这个问题的js代码(原来叫 FlashObject),目前版本是1.4,完全开源的 ...
- 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html
- java怎么将加载图片消除_Java中加载图片的方法
Java中添加图片,我知道有两种方法 用new ImageIcon("地址")函数,将图片放到JLabel中,然后把JLabel放到需要的地方就可以了 ImageIcon bg=n ...
- Webpack实战(九):实现资源按需加载-资源异步加载
第八篇[<教你搞懂webpack如果实现代码分片(code splitting)>] (https://blog.csdn.net/lfcss/article/details/104099 ...
- SpringBoot加载静态资源
在SpringBoot中加载静态资源和在普通的web应用中不太一样.默认情况下,Spring Boot从classpath下一个叫/static(/public,/resources或/META-IN ...
- 《R数据可视化手册》一1.4 从Excel文件中加载数据
本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...
最新文章
- python第二阶段 第六天 模块
- pyglet and opengl -- 纹理映射以及动画
- 编程开发之--java多线程学习总结(5)
- Excel基础操作(五)--图表基础
- njx如何实现负载均衡_负载均衡是怎么做的~
- GetAdaptersInfo获取MAC地址
- Redis:07---Redis数据结构
- 升值加薪Excel神助攻,数据透视表堪称神器!
- 服务器配置列表在哪个文件夹,FolderMagic
- NYOJ-58 最少步数
- Flutter拓展 android studio如何连接夜神模拟器(亲测!!!)
- 【交换机在江湖】第十二章 VLAN基础篇
- 存储服务器内的温度检测信号线 用线,常用的3线和4线电阻温度检测器介绍
- QCC512x QCC302x PIO 按键
- C语言之求两个数的最大公因数和最小公倍数
- 图片鉴黄的原理和应用
- 计算机黑屏启动超慢,电脑开机慢黑屏时间长怎么解决
- 100篇精选文章带你玩转TCP/IP协议
- java如何表格一样对齐_如何水平对齐表格? (How can I horizontally align a form?)
- 软件测试:三角形问题