CAnimateCtrl::Open的使用问题

2016-01-29 12:00 41 1 收藏

CAnimateCtrl::Open的使用问题,CAnimateCtrl::Open的使用问题

【 tulaoshi.com - C语言心得技巧 】

CAnimateCtrl::Open的使用问题 VCKBASE 提出问题:使用CAnimateCtrl::Open( LPCTSTR lpszFileName )时,参数lpszFileName 是个字符串,表示AVI文件名。因此在分发应用程序时,除了分发可执行程序外,还必须单独分发AVI文件。是否有办法从资源中得到AVI文件?

    在这个程序中,如果要从外部获取文件是相当不方便的,万一谁不小心将文件删除或改名的话。。。。所以最好的方法是将文件作为资源存储在可执行文件中。幸亏CAnimateCtrl类有一个成员函数 CAnimateCtrl::Open 以UINT为参数,也就是说,它UINT可以是资源的ID号。

    但是如何将AVI文件放入EXE文件呢?这是需要技巧的。animation控件寻找AVI类型的资源,所以你要做的事情是在资源文件(.rc)中加入代码:

IDR_MYANIMATION AVI DISCARDABLE "resmyanim.avi" 

    事先必须定义IDR_MYANIMATION为一个整型数,(注意不能使用一个串名作为资源)并且AVI文件要放在工程目录下的RES目录中。资源编译器会一个字节一个字节地将myanim.avi拷贝到可执行文件中,以便动画控件能找到它。

另外,使用相同的方法可以将任何文件作为资源放入EXE文件。方法是:

IDR_MYFOOFILE FOO DISCARDABLE "resmyanim.foo" 

一旦在EXE文件中包含了foo类型文件,如何访问它呢?那就需要自己写一些代码。首先,你必须调用FindResource函数来获得资源句柄。

HINSTANCE hInst = AfxGetResourceHandle(); 
HRSRC hRsrc = ::FindResource(hInst,
MAKEINTRESOURCE(IDR_MYFOOFILE), // ID
"FOO"); // type 
ASSERT(hRsrc); 

假设hRsrc非空,再调用两个函数来获得资源(FOO文件)的大小及数据本身。

DWORD len = SizeofResource(hInst, hRsrc); 
BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc); 
ASSERT(lpRsrc); 

现在,在内存中lpRsrc指向FOO文件,如果你想要象访问普通磁盘文件一样访问这个内存,可以使用类库的CMemFile,它将一块存储区域当作CFile来对待。

CMemFile file(lpRsrc, len); 
file.Read(...); // etc. 

你甚至可以象重载OnOpenDocument打开磁盘文件一样用CDocument打开资源。

来源:http://www.tulaoshi.com/n/20160129/1484216.html

延伸阅读
标签: Web开发
大家也可以在jquery easyui来下载,或者去官网下载和查看文档帮助。 我最近也使用了一下jquery easyui里tabs,但是发现一个问题:如果你把tabs的div开始设置为display:none,然后写个function change(){$("#tabs").css("display","block")}来让tabs显示,当执行change()时,结果tabs显示不正常。 本来应该显示为: 结果显示为: ...
标签: Web开发
很多时候,希望能够在 HTML 中使用空格排版。但浏览器在解析 HTML 时,会把连续的空格解析成一个,所以我们会使用   等这样的占位符。 但是   也不是很可靠,比如空格间距非常大,那么我们必须增加多个占位符,同时页面的体积会变得非常大。 同时,注意到 Safari 中的   宽度是已设定字符的空格宽度(Safari ...
标签: ASP
RS.OPEN SQL,CONN,A,B A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动 ADOPENSTATIC(=3) 只读,当前数据记录可自由移动 ADOPENKEYSET(=1) 可读写,当前数据记录可自由移动 ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动,可看到新增记录 B: ADLOCKREADONLY(=1) 默认值,用来打开只读...
标签: 电脑入门
open和fopen是Linux系统的调用函数,因为较为相似,很多人会将其混淆,下面图老师小编给大家介绍下open和fopen的区别之处,不明白的朋友可以来了解下。 1.缓冲文件系统 缓冲文件系统的特点是:在内存开辟一个缓冲区,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存缓冲区, 装满后再从内存缓冲区依此读入...
标签: 主板 电脑入门
主板使用问题解析大全 主板又称母板。主板是电脑系统的重要组成部分。下面我们看一下主板的作用 板与高速缓存 故障1:高速缓存芯片不稳定 故障现象:在COMS设置中如果允许板上二级高速缓存(L2 Cache或External Cache),运行软件时就容易死机,而禁止二级高速缓存系统就可以正常运行,但速度比同档电脑要慢不少。 分析与解决:因为是在别...

经验教程

178

收藏

43
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部