动画显示(50分)

  • 主题发起人 主题发起人 herald
  • 开始时间 开始时间
H

herald

Unregistered / Unconfirmed
GUEST, unregistred user!
动画显示

我把一个avi文件作为资源放置在资源文件中,在程序运行中想用Animate1来
显示她,但ResHandle这个函数我一直搞不懂
Animate1.ResHandle:=Cardinal(self);
这一行程序该怎么写? 我这样写不能执行.
(运行的程序和资源在一个exe文件中)
.
.
.
.
Animate1.ResId:=101;
Animate1.ResName:='AVI'; Animate1.Play(1,8,0);
 
{$R 包含avi.res}了吗?
我怎么试了没问题?
 
呵呵,一定是.RES没有AVI的RESOURCE.
 
Animate1.ResHandle:=Application.Handle
 
1. RESHANDLE只有在AVI不放在本执行文件时才使用. 如果强行使用, 会导致
CAN'T OPEN AVI错误. 但第二次就不会再报错.
2. RESID和RESNAME是二者选一的关系, 只可设定一个, 后设的自动清除前一个
的设定.
所以, 程序为:
ANIMATE1.RESNAME:='AVI'; //OR ANIMATE1.RESID:=101;
ANIMATE1.PLAY(1,8,0);

 
那要是有avi几个资源呢?这么区分开来?
 
用不同的资源name或资源ID啊!
 
aNIMATE2.RESNAME:='AVI1'; //OR ANIMATE1.RESID:=102;
ANIMATE2.PLAY(1,8,0);
RESNAME或RESID不同就可以呀.

 
可以做个.rc, 包含几个avi文件, 然后用brcc32.exe把这个.rc生成一个.res即可.
例如:
用notepad建立一个myresource.rc, 写入:
AVIFILE1 AVI "c:/temp/avifile1.avi"
AVIFILE2 AVI "c:/temp/avifile2.avi"
.....

其中AVIFILE1是resourcename, AVI是类型(如果要TAnimate使用必须为AVI), "c:/....."是要放入的文件名.
 
昨天忘了说明RESHANDLE的使用了:
1. RESHANDLE:=0好象就是EXE本身的HANDLE. 设此句没错误提示.
2. RESHANDLE:=HINSTANCE,也是EXE本身的HANDLE, 但第一次出错, 第二次就
运行正常了.
3. RESHANDLE:=APPLICATION.HANDLE, 取的是HWND, 绝对错误! 无法正常显示.

 
多人接受答案了。
 

Similar threads

后退
顶部