CAnimateCtrl::Open的使用问题

2016-01-29 12:00 37 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打开资源。

来源:https://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显示不正常。 本来应该显示为: 结果显示为: ...
空调能给人创造舒适的环境,但若不正确使用,也可能使人致病并发生事故。因此,图老师生活图老师小编在空调的使用中要注意: 如何正确使用空调?空调使用常识,空调的正确使用方法 1、 在异常情况下应立即拔下空调器的电源插头 由于常有停电发生,所以有些家庭购买了逆变器或自发电设备用于停电时照明或向家用电器供电。有些...
iPhone常见使用问题解析   你是一位果粉们,作为一名果粉,你在使用iPhone过程中,最经常的问题有哪些呢?今天图老师小编就带领大家来分享下iPhone常见的那些使用问题,不知道与你遇到的是否一样呢?果粉们赶紧学习吧,相信会有用到一天。 iPhone手机 一、iPhone 3G的实用温度范围? 了解iPhone 3G的工作温度和保...
标签: 电脑入门
1.使用过程中遇到问题该怎么反馈呢? 您可以通过以下五种渠道反馈: 1)在WPS社区中的WPS for windows‘版块反馈(http://bbs.wps.cn/forum-2-1.html)。 2)WPS界面右上角的反馈通道提问 3)如果是特殊文档出现问题,您可以直接在社区中上传附件。 或者选择发送文件到WPS客户服务邮箱: WPS@kingsoft.com" WPS@kingsoft.com 我们会...
标签: Web开发
Javascript代码 function openwindow(url,name,iWidth,iHeight)  {   var url;                                 //转向网页的地址;   va...

经验教程

398

收藏

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