CAnimateCtrl::Open的使用问题
来源:互联网 发布:程序员的职业规划 编辑:程序博客网 时间:2024/05/18 22:08
使用CAnimateCtrl::Open( LPCTSTR lpszFileName )时,参数lpszFileName 是个字符串,表示AVI文件名。因此在分发应用程序时,除了分发可执行程序外,还必须单独分发AVI文件。是否有办法从资源中得到AVI文件?
在这个程序中,如果要从外部获取文件是相当不方便的,万一谁不小心将文件删除或改名的话。。。。所以最好的方法是将文件作为资源存储在可执行文件中。幸亏CAnimateCtrl类有一个成员函数 CAnimateCtrl::Open 以UINT为参数,也就是说,它UINT可以是资源的ID号。
但是如何将AVI文件放入EXE文件呢?这是需要技巧的。animation控件寻找AVI类型的资源,所以你要做的事情是在资源文件(.rc)中加入代码:
IDR_MYANIMATION AVI DISCARDABLE "res\\myanim.avi"
事先必须定义IDR_MYANIMATION为一个整型数,(注意不能使用一个串名作为资源)并且AVI文件要放在工程目录下的RES目录中。资源编译器会一个字节一个字节地将myanim.avi拷贝到可执行文件中,以便动画控件能找到它。
另外,使用相同的方法可以将任何文件作为资源放入EXE文件。方法是:
一旦在EXE文件中包含了foo类型文件,如何访问它呢?那就需要自己写一些代码。首先,你必须调用FindResource函数来获得资源句柄。
假设hRsrc非空,再调用两个函数来获得资源(FOO文件)的大小及数据本身。
现在,在内存中lpRsrc指向FOO文件,如果你想要象访问普通磁盘文件一样访问这个内存,可以使用类库的CMemFile,它将一块存储区域当作CFile来对待。
你甚至可以象重载OnOpenDocument打开磁盘文件一样用CDocument打开资源。
在这个程序中,如果要从外部获取文件是相当不方便的,万一谁不小心将文件删除或改名的话。。。。所以最好的方法是将文件作为资源存储在可执行文件中。幸亏CAnimateCtrl类有一个成员函数 CAnimateCtrl::Open 以UINT为参数,也就是说,它UINT可以是资源的ID号。
但是如何将AVI文件放入EXE文件呢?这是需要技巧的。animation控件寻找AVI类型的资源,所以你要做的事情是在资源文件(.rc)中加入代码:
IDR_MYANIMATION AVI DISCARDABLE "res\\myanim.avi"
事先必须定义IDR_MYANIMATION为一个整型数,(注意不能使用一个串名作为资源)并且AVI文件要放在工程目录下的RES目录中。资源编译器会一个字节一个字节地将myanim.avi拷贝到可执行文件中,以便动画控件能找到它。
另外,使用相同的方法可以将任何文件作为资源放入EXE文件。方法是:
IDR_MYFOOFILE FOO DISCARDABLE "res\\myanim.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打开资源。
- CAnimateCtrl::Open的使用问题
- 关于CAnimateCtrl类的使用
- CAnimateCtrl
- VC--CAnimateCtrl 动画控件的学习
- 简单的播放AVI方法:CAnimateCtrl类
- window.open()的问题
- 使用window.open()方法时遇到的问题
- Open Flash Chart 2.0 使用及问题的解决
- Open URL 的使用
- Open vSwitch的使用
- open函数的使用
- window.open的使用
- 采用CAnimateCtrl的AVI播放器,没有什么应用的,纯当练技术
- sitemesh的window.open问题
- Ubuntu版本的open问题
- ifstream的open函数问题
- open函数的参数问题
- 关于window.open的问题
- Flex的树形控件(Tree Control)中如何通过点击行进行展开/缩进的例子
- 听韩老师的oracle的分页存储过程
- JavaScript加密解密原理详解
- VNC多用户
- hibenrate(四)搭建Log4J日志环境(显示DDL语句)
- CAnimateCtrl::Open的使用问题
- 编译工具MinGW 5.1.6 完整本地安装包
- Access 连接字符串
- Servlet简介
- Automation服务器不能创建对象" 的解决办法
- ATL和MFC,用哪种框架来创建ActiveX控件:第一部分
- *SQL JOIN 的用法
- CTS中如何阻止Restarting device ...Restarting ADB...
- ExtJS 4 官方指南翻译:Grid组件(下)