vc 中播放 mp3

转帖:记录

ActiveX里的ActiveMovieControl Object 控件能放mp3
具体步骤:
1. 打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框(Dialog Based)的运用程序。

2. 打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Exit”。然后再在上面加上九个按钮,ID和Caption分别为
IDC_OPEN,Open;
IDC_PLAY,Play;
IDC_PAUSE,Pause;
IDC_STOP,Stop;
IDC_CLOSE,Close;
IDC_LOWER,<<=;
IDC_UPPER,=>>;
IDC_FULLSCREEN,Full;
IDC_REPEAT,Repeat;
再加入两个静态文本控件,分别为IDC_STATIC,Volume;IDC_STATIC2,Status:Normal。

3. 再打开Projects->Add to Project->Components and Controls->Registered ActiveX Controls对话框,选择其中的ActiveMovieControl Object, Insert,OK之后,你会发现你的控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3 m_ActiveMovie。各控件的布局如图:



4. 接下来,就是为程序添加消息处理函数。打开 ClassWizard,为各个按钮加入消息处理函数。在MediaPlayerDlg.cpp文件里为各消息处理函数添加代码,各代码如下:

void CMediaPlayerDlg::OnClose()
{
m_ActiveMovie.CloseWindow();//关闭窗口
}

void CMediaPlayerDlg::OnOpen()
{
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"All File(*.*)|*.*||";//文件类型过滤
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK){
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_ActiveMovie.SetFileName(PathName);
}
}

void CMediaPlayerDlg::OnPlay()
{
m_ActiveMovie.Run();//播放文件
SetTimer(0,20,NULL);//设置定时器
}

void CMediaPlayerDlg::OnStop()
{
m_ActiveMovie.Stop();//停止播放文件
KillTimer(0);//关掉定时器
}

void CMediaPlayerDlg::OnPause()
{
m_ActiveMovie.Pause();
}

void CMediaPlayerDlg::OnUpper()
{
long Volume=m_ActiveMovie.GetVolume();
m_ActiveMovie.Pause();
m_ActiveMovie.SetVolume(Volume+100);
m_ActiveMovie.Run();
}

void CMediaPlayerDlg::OnLower()
{
long Volume=m_ActiveMovie.GetVolume();
m_ActiveMovie.Pause();
m_ActiveMovie.SetVolume(Volume-100);
m_ActiveMovie.Run();
}



void CMediaPlayerDlg::OnRepeat()
{
if(!isRepeat){
isRepeat=TRUE;
SetDlgItemText(IDC_STATIC2,"Status:Repeat");
}
else{
isRepeat=FALSE;
SetDlgItemText(IDC_STATIC2,"Status:Normal");
}
}

void CMediaPlayerDlg::OnFulscreeen()
{
m_ActiveMovie.Pause();
m_ActiveMovie.SetFullScreenMode(true);
m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);
m_ActiveMovie.Run();
}


(注释:函数OnTimer()需通过ClassWizard(Ctrl+W)来添加,不能直接复制)
void CMediaPlayerDlg::OnTimer(UINT nIDEvent)
{
double CurrentPos=m_ActiveMovie.GetCurrentPosition();
if(CurrentPos==0&&isRepeat)//如果当前是文件的起始位置而且为重复播放状态
m_ActiveMovie.Run();

CDialog::OnTimer(nIDEvent);
}
5. 为使播放器具有Repeat功能,需在头文件MediaPlayerDlg.h 加入控制变量BOOL isRepeat;类型可为Private。同时修改OnInitDialog()函数: BOOL CMediaPlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();

isRepeat=FALSE;
……
}
(注:第6步可以不做,只是按钮仍是方形按钮,而做了第6步后则为圆形的)

6. 这样此播放器就具有一般的媒体播放功能了,但为了有更好的用户界面,我将按钮变成了圆形的。为此,要在工程里加入文件RoundButton.h以及RoundButton.cpp用CRoundButton来代替CButton。先打开类向导,为上述按钮添加对应变量。

CRoundButton m_FullScreen;
CRoundButton m_Repeat;
CRoundButton m_Upper;
CRoundButton m_Lower;
CRoundButton m_Close;
CRoundButton m_Exit;
CRoundButton m_Stop;
CRoundButton m_Play;
CRoundButton m_Pause;
CRoundButton m_Open;
(注:以上的个变量本来是Cbutton类型的,你要手动将他们改为CRoundButton,并在此头文件里加上#include "RoundButton.h"。)

7. 好,现在可以编译、连接并运行了,直接按Ctrl+F5,OK便可以看自己的杰作了,打开个mp3文件听听,不错吧!  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值