visual c+ 2010开发的播放器

VC2010可谓是微软的王牌产品,它以强大的功能而赢得了广大程序员的爱好。而用VC的AppWizard、ClassWizard和其中的各类控件能够方便地创建应用程序。 本文就介绍用VC6.0自带的一个ActiveX控件----ActiveMovieControl Object,来创建本身的多媒体播放器。程序员

此多媒体具备通常的播放功能,能播放*.mp3,.wma,.mdi,.wav,.avi,*.dat等文件,还有Repeat功能。ide

  具体步骤:函数

  1. 打开VC2010,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,而后创建基于对话框(Dialog Based)的运用程序。布局

  2. 打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“肯定”按钮,保留“取消”,将Caption改成“Exit”。而后再在上面加上九个按钮,ID和Caption分别为orm

  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:Nomal产品

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

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

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

void CMediaPlayerDlg::OnOpen() {  char szFileFilter[]="Mp3 File(.mp3)|.mp3|" "Wma File(.wma)|.wma|" "Video File(.dat)|.dat|" "Wave File(.wav)|.wav|" "AVI File(.avi)|.avi|" "Movie File(.mov)|.mov|" "Media File(.mmm)|.mmm|" "Mid File(.mid;,rmi)|.mid;.rmi|" "MPEG File(.mpeg)|.mpeg|" "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文件听听,不错吧!以下图: 在此输入图片描述

一切ok后,能够再给播放器软件润色, great

相关文章
相关标签/搜索