三、 建立工程
利用 VC++(www.cppentry.com)6.0的AppWizard生成一个基于对话框的工程Player,去掉对话框上的"确定" 和"取消"按钮,并加入ActiveMovie控件(通常情况下ActiveMovie控件并不出现在控件面板中,可在菜单中依次选择"project- >Add To Project- >Components And Controls",在出现的"Components And Controls Gallery"对话框中打开"Registered Active Controls"文件夹,选中"ActiveMovie Control Object"选项,按"Insert"后关闭该对话框,ActiveMovie控件便出现在控件面板中),调整好控件在对话框中的位置。为了能够控制控件的操作,应为对话框设计三个按钮("选择曲目"、"循环播放"、"关闭"),一个列表框。
四、添加代码
首先利用ClassWizard为ActiveMovie控件声明一个变量m_ActiveMovie。然后为 "选择曲目"按钮声明一个变量m_ChoiceFile,为"循环播放"按钮声明一个变量m_Play,为"关闭"按钮声明一个变量m_Close,为一个列表框声明一个变量m_list。
1、为了将所需播放的文件加入列表框,我们采用OnChoiceFile()函数来显示"打开"对话框,通过该对话框选择要执行的文件。以便为以后调用作准备。代码如下:
void Cplayer::OnChoiceFile( ) { // TODO: Add your command handler code here CFileDialog fileDialog( TRUE,"*.OCX",NULL,NULL,"|所有文件(*.*)|*.*||"); if (fileDialog.DoModal() == IDOK) { //选择文件 Cstring m_FileName=fileDialog.GetPathName(); m_list.AddString(m_FileName); //加入到列表框。 } } |
2、 为了循环播放,我们利用定时器来工作,采用OnPlay()函数来激活定时器,代码如下:
void Cplayer::OnPlay() { // TODO: Add your command handler code here //设置定时器 SetTimer(0,500,NULL); } void CMy1Dlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default CString m_filename; //定义文件变量 double CurPos=m_ActiveMovie.GetCurrentPosition(); //获得播放位置 if(CurPos= = 0) { //选择列表框的第一个文件 m_list.SetCurSel(0); m_list.GetText(0,m_filename); //设置自动播放 m_ActiveMovie.SetAutoStart(1); //设置文件 m_ActiveMovie.SetFileName(m_filename);
//播放 m_ActiveMovie.Run(); m_list.GetCurSel();
//插入列表框最后 m_list.InsertString(-1,m_filename);
//删除用过的文件 m_list.DeleteString(0); } CDialog::OnTimer(nIDEvent); } |
3、 关闭播放,我们可以利用函数OnClose()来实现,代码如下:
void Cplayer::OnClose() { // TODO: Add your command handler code here //设置定时器 KillTimer(0); m_ActiveMovie.Stop(); } |
五、结束语
目前很多程序介绍的播放器,只能播放单个音频文件,很少讲述多个文件播放,本文试着通过控件,介绍连续播放音频文件的方法。我们还可以根据上述提供函数常用属性,解决程序中间的暂停、设置音量,还可以设置平衡、全屏播放等,希望通过本文给大家一个启示。
下载源代码 |