用VC設(shè)計自動循環(huán)MP3播放器
發(fā)布時間:2008-07-27 閱讀數(shù): 次 來源:網(wǎng)樂原科技
【實現(xiàn)內(nèi)容】自動循環(huán)播放的MP3播放器
【應(yīng)用】自動循環(huán)播放的MP3播放器主要用于企業(yè)文化的應(yīng)用。在每天的休息時段,播放器自動循環(huán)播放指定的MP3音樂。本自動播放器主要根據(jù)本公司的情況編寫,包括早上上班,中午吃飯和下午下班三個時間段各播放1小時左右的音樂。播放器啟動后,只在托盤中有圖標(biāo),配置好各個時間段的音樂目錄后,不需要人工干預(yù),音樂可以自動啟動、循環(huán)播放和結(jié)束。現(xiàn)已在本公司使用。
【特點】本軟件用到許多常用的技巧:
1. 目錄選擇對話框
2. 文件選擇對話框中的多個文件類型過濾設(shè)定
3. 應(yīng)用程序在任務(wù)欄上隱藏,而在托盤上顯示圖標(biāo)
4. 進(jìn)度條的制作
5. 定時器使用
6. 帶有鏈接功能的按鈕――點擊按鈕可以打開電子信箱
7. 橢圓型的彩色按鈕,彩色文本
8. 彩色標(biāo)題條,彩色標(biāo)題文字。等等
【實現(xiàn)原理】主要使用定時器。程序一旦運(yùn)行,定時器將每秒響應(yīng)一次。直到手工退出程序。
【主要控件】
m_MusicList---ComboBox類型 音樂文件列表
【主要程序段及說明】
void CMp3PlayerDlg::OnOpen() //點擊打開按鈕,選擇音樂文件??梢远噙x
{
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);
}
}
}
}
?。剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑?BR>
void CMp3PlayerDlg::Play(int index)//播放函數(shù),index為曲目的序號
{
m_Music.Close();
m_MusicList.SetCurSel(index);
CString sPath = m_MusicAry.GetAt(index);
m_Music.Open(sPath);
m_Status.SetWindowText(sPath + _T(" 正在播放..."));//在狀態(tài)條中顯示提示信息
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);//顯示當(dāng)前播放位置
//
UpdateData(false);
m_MPBar.SetScrollRange(0,m_nTime);//設(shè)置音樂播放的進(jìn)度條范圍
//
m_Volume.SetRange(0,1000);//設(shè)置音量調(diào)節(jié)范圍
m_Volume.SetPos(m_nVolume);
//
m_Music.Play(this->m_hWnd);//開始播放
SetTimer(2,1000,NULL);//啟動2號定時器
}