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

相關文章
相關標籤/搜索