TAnimate控件的ResName,ResHandle,ResID这三个属性怎么个用法
编号:QA004226
建立日期: 2001年5月31日 最后修改日期:2001年5月31日
所属类别:
RedCoat:
请问BCB5中的TAnimate控件的ResName,ResHandle,ResID这三个属性怎么个用法?在给这三个属性赋值后BCB5运行时均提示错误信息"Can't open AVI"。这是为什么?现在我把所要的AVI文件已经包含进了EXE文件,成为了EXE资源的一部分,我想用TAnimate控件直接来播放资源里的AVI怎么做呢?
回答:
1。TAnimate控件的ResHandle属性,是AVI资源所在的模块句柄,如果你将资源包含进了可执行文件中, 则这项可以不指定或直接指定为HInstance;如果你将资源放在DLL中,则该属性是LoadLibrary的返回值。
2。ResName属性是AVI资源的名字,要注意在使用这个属性时,要将 CommonAVI属性设置成aviNone,并将FileName 属性设置为空字串,将ResId属性设为0。
3。ResId属性是AVI资源的ID号,要注意在使用这个属性时,要将 CommonAVI属性设置成aviNone,并将FileName属性设置为空,将ResName属性设为空字串。
4。如果以上这些没有问题,应该没有问题,否则,你应检查你的可执行程序中是否真正包括了这个AVI资源。
下面是一个例子:
资源文件1.rc:
#ifndef WORKSHOP_INVOKED
#include <windows.h>
#endif
MYAVI AVI dillo.avi
用BRCC32.exe将该文件编译成1.res文件
在CB中新建一工程,并放入一个TAnimate控件。
Unit1.cpp文件内容如下:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "1.res" // 包含资源文件,不要忘记这句话
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Animate1->ResName="MYAVI";
Animate1->Active=true;
}
另外,请注意:这个控件只能播放无声音的AVI文件。
此问题由赵生回答。
| |
|
|
| |
|
|