程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 制作自動循環播放的MP3播放器(上)

制作自動循環播放的MP3播放器(上)

編輯:vc教程

   【實現內容】自動循環播放的MP3播放器

  【應用】自動循環播放的MP3播放器主要用於企業文化的應用。在每天的休息時段,播放器自動循環播放指定的MP3音樂。本自動播放器主要根據本公司的情況編寫,包括早上上班,中午吃飯和下午下班三個時間段各播放1小時左右的音樂。播放器啟動後,只在托盤中有圖標,配置好各個時間段的音樂目錄後,不需要人工干預,音樂可以自動啟動、循環播放和結束。現已在本公司使用。

  【特點】本軟件用到許多常用的技巧:

  1.  目錄選擇對話框

  2.  文件選擇對話框中的多個文件類型過濾設定

  3.  應用程序在任務欄上隱藏,而在托盤上顯示圖標

  4.  進度條的制作

  5.  定時器使用

  6.  帶有鏈接功能的按鈕――點擊按鈕可以打開電子信箱

  7.  橢圓型的彩色按鈕,彩色文本

  8.  彩色標題條,彩色標題文字。等等

  【實現原理】主要使用定時器。程序一旦運行,定時器將每秒響應一次。直到手工退出程序。

  【主要控件】

  m_MusicList---ComboBox類型  音樂文件列表

  【主要程序段及說明】

   void CMp3PlayerDlg::OnOpen() //點擊打開按鈕,選擇音樂文件。可以多選

  {

       m_MusicList.ResetContent();

       m_MusicAry.RemoveAll();

       m_Music.Close();   //m_Music是CCOMMCI對象

       Init();

       m_Pause.SetWindowText("暫停");

       //

       CString filter = "媒體文件(所有類型)|*.cda;*.mid;*.rmi;*.midi;*.asf;*.wm;*.wma;*.asx;*.wax;*.m3u;*.wvx;
*.mpeg;*.mpg;*.m1v;*.mp3;*.avi;*.wmv;*.wav;*.snd;*.au;*.aif;*.aifc|";

       filter = filter +"CD音樂曲目(*.cda)|*.cda|" +

                                    "MIDI文件(*.mid;*.rmi;*.midi)|*.mid;*.rmi;*.midi|" +

                                    "Windows Media文件(*.asf;*.wm;*.wma;*.wa?)|*.asf;*.wm;*.wma;|" +
 

                                     "媒體播放表(*.asx;*.wax;*.m3u;*.wvx)|*.asx;*.wax;*.m3u;*.wvx|" +
                                    "電影文件(*.mpeg;*.mpg;*.m1v;*.mp3)|*.mpeg;*.mpg;*.m1v;*.mp3|" +

                                    "視頻文件(*.avi;*.wmv)|*.avi;*.wmv)|" +

                                    "音頻文件(*.wav;*.snd;*.au;*.aif;*.aifc)|*.wav;*.snd;*.au;*.aif;*.aifc|" +

                                    "所有文件(*.*)|*.*|";

       CFileDialog music(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,filter);

       if(music.DoModal() == IDOK)

       {

              POSITION pos = music.GetStartPosition();

              while (pos != NULL)

              {

                     CString str = music.GetNextPathName(pos);

                     m_MusicAry.Add(str);

                     int index = str.ReverseFind('');

                     if(index == -1)

                            m_MusicList.AddString(str);

                     else

                     {

                            CString name = str.Mid(index + 1);

                            m_MusicList.AddString(name);

                     }

              }

       }

  }
 


   void CMp3PlayerDlg::Play(int index)//播放函數,index為曲目的序號

  {

       m_Music.Close();

       m_MusicList.SetCurSel(index);
        CString sPath = m_MusicAry.GetAt(index);
       m_Music.Open(sPath);

       m_Status.SetWindowText(sPath + _T(" 正在播放..."));//在狀態條中顯示提示信息

       m_nLength = m_Music.GetLength();//獲取音樂長度

       m_nPos = 0;

       m_nTime = m_nLength/1000;//除以1000即為播放時間

       //

       m_sMusicLen.Format("%d分%d秒",m_nTime/60,m_nTime%60);//顯示播放時間

       m_sMusicPos.Format("%d分%d秒",m_nPos/60,m_nPos%60);//顯示當前播放位置

       //

       UpdateData(false);

       m_MPBar.SetScrollRange(0,m_nTime);//設置音樂播放的進度條范圍

       //

       m_Volume.SetRange(0,1000);//設置音量調節范圍

       m_Volume.SetPos(m_nVolume);

       //

       m_Music.Play(this->m_hWnd);//開始播放

       SetTimer(2,1000,NULL);//啟動2號定時器

  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved