简单的播放AVI方法:CAnimateCtrl类

CAnimateCtrl


CAnimateCtrl是MFC中的类。它提供了Windows通用动画控件的功能。此控件只对运行在Windows 95和Windows NT 3.51版及其更高版本下的程序有效。动画控件是显示AVI(视听交错)格式──标准Windows视/听格式片段的矩形窗口。一个AVI片段是一系列位图帧,就象电影。
动画控件只能运行简单的AVI片段。特别的,通过动画控件运行的片段必须符合下列要求:
·必须确切地是一个视频流并且它必须至少有一个帧。·文件中至多有两个流(典型地,其它流,比如音频流,尽管动画控件忽略音频流)。·片段必须是非压缩的或用RLE8压缩的。·在视频流中不允许调色板改变。
可以将AVI片段作为一个AVI资源加入到自己的应用中去,或作为一个独立的AVI文件伴随应用。
既然当AVI片段显示时,线程继续执行,所以一个动画控件的一个通用使用就是在一个长时间的操作时确定系统是活动状态。例如,当系统查找一个文件时,Windows 95 Explorer的查找对话框显示一个移动的放大镜。
如果在一个对话框或由使用对话 编辑器的对话资源创建一个CAnimateCtrl对象,当关闭对话框时,它会自动被毁弃。如果在一个窗口中创建CAnimateCtrl对象,可能需要去毁弃它。如果在栈上创建CAnimateCtrl对象,它会自动地被毁弃。如果使用new函数在堆上创建CAnimateCtrl对象,必须调用delete来毁弃它。如果由CAnimateCtrl派生一个新类并且给这个类分配内存,则要覆盖CAnimateCtrl析构程序来释放分配的内存。

编辑本段CAnimateCtrl类成员介绍

构造函数
构造一个CAnimateCtrl对象
初始化
创建一个动画控件并将它附加给CanimateCtrl对象
操作
由一个文件打开一个动画控件或资源并显示第一帧
播放不带声音的AVI片段
播放AVI片段的选定的一帧
停止播放AVI片段
关闭原先打开的AVI片段
内容可参见MSDN



CAnimateCtrl m_AviCtrl;


//选择AVI文件


void CAviPlayDlg::OnBrowser() 
{
CFileDialog dlg( TRUE,_T("AVI"),_T("*.AVI"),
                OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
                _T("Animation (*.AVI)|*.AVI|"));
if(dlg.DoModal()==IDOK)
{
AviName=dlg.GetPathName();
UpdateData(FALSE);
AviChanges();
}
}

void CAviPlayDlg::AviChanges()
{//设置当前要播放的AVI文件
m_AviCtrl.Stop();
m_AviCtrl.Close();


::SetWindowLong(m_AviCtrl.GetSafeHwnd(),GWL_STYLE,WS_CHILD|WS_VISIBLE|WS_BORDER|ACS_CENTER|ACS_TRANSPARENT);
m_AviCtrl.SetWindowPos(NULL,0,0,AviRect.Width(),AviRect.Height(),
SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE|SWP_SHOWWINDOW);
m_AviCtrl.Open(AviName);
// InvalidateRect(&AviRect);
UpdateWindow();
}


void CAviPlayDlg::OnPlay() 
{//播放
m_AviCtrl.Play(0,-1,1);
}


void CAviPlayDlg::OnStop() 
{//停止
m_AviCtrl.Stop();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值