![自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第1頁](http://file4.renrendoc.com/view/ce05d11486839b95aa357d1d0f69e15d/ce05d11486839b95aa357d1d0f69e15d1.gif)
![自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第2頁](http://file4.renrendoc.com/view/ce05d11486839b95aa357d1d0f69e15d/ce05d11486839b95aa357d1d0f69e15d2.gif)
![自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第3頁](http://file4.renrendoc.com/view/ce05d11486839b95aa357d1d0f69e15d/ce05d11486839b95aa357d1d0f69e15d3.gif)
![自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第4頁](http://file4.renrendoc.com/view/ce05d11486839b95aa357d1d0f69e15d/ce05d11486839b95aa357d1d0f69e15d4.gif)
![自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第5頁](http://file4.renrendoc.com/view/ce05d11486839b95aa357d1d0f69e15d/ce05d11486839b95aa357d1d0f69e15d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
...v.自己動手開發(fā)音樂播放器?五?播放功能的實現(xiàn)
小伙伴們注意了,我在上一篇博客介紹了文件操作,在這篇博客中將承受音樂播放器的核心功能,播放、暫停、停頓、繼續(xù)、上一曲、下一曲等功能,在這些功能中會用到一個非常重要的函數(shù)mmciSendString,mciSendString函數(shù)是一個處理多媒體文件的函數(shù),其中音樂播放器中的播放、暫停、停頓、等功能都需要用到這個函數(shù),居然這個函數(shù)這么重要,我們就來看看這個函數(shù)的用法,
函數(shù)原型:
MCIERRORmciSendString(
LPCTSTRlpszmand,命令字符串
LPTSTRlpszReturnString,返回的字符串
UINTcchReturn,返回字符串的大小
HANDLEhwndCallback回調(diào)句柄(一般為NULL)
);
其中的第一個參數(shù)的格式:
播放命令+音樂文件
如:mciSendString("playD:\\1.mp3",NULL,0,NULL);
中play表示播放命令D:\\1.mp3表示音樂文件
在寫代碼前先定義一些全局變量和函數(shù)
全局變量
/**************************************************************************
播放歌曲所需的全局變量
****************************************************************************/
staticintnumPlayMusiow=0;//正在播放的歌曲的序號
PlayMusic函數(shù)用于播放音樂
/****************************************************************************
函數(shù)名:voidPlayMusic(HWNDhwnd)
函數(shù)功能:播放歌曲
****************************************************************************/
voidPlayMusic(HWNDhwnd)
{
TCHARcmd[MAX_PATH];//保存播放歌曲的命令
//打印關(guān)閉歌曲的命令
wsprintf(cmd,"close%s",OpenMusicFile);
///發(fā)送關(guān)閉歌曲的命令
mciSendString(cmd,"",0,NULL);
GetMusic(hwnd);//得到選擇的歌曲
//顯示正在播放的歌曲
SetDlgItemText(hwnd,IDC_PLAYEDIT,line);
wsprintf(cmd,"open%salias",OpenMusicFile);
mciSendString(cmd,0,0,NULL);
//打印播放歌曲的命令
wsprintf(cmd,"play%s",OpenMusicFile);
//發(fā)送播放歌曲的命令
mciSendString(cmd,0,0,NULL);
}
然后在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代碼
//播放歌曲
caseIDC_PLAY:
{
PlayMusic(hwnd);
}
break;
運(yùn)行結(jié)果(播放成龍的少年強(qiáng))
暫停的實現(xiàn)代碼暫停和播放類似也是定義一些全局變量和函數(shù)
首先定義一個全局變量
/***********************************************************************************************
實現(xiàn)暫停播放所需的全局變量
*************************************************************************************************/
staticintflagPauseOrPlay=0;//暫停播放的標(biāo)志位(歌曲是暫停還是播放)
然后定義一個函數(shù)PauseMusic實現(xiàn)暫停播放
/**********************************************************************************************
函數(shù)名:voidPauseMusic(HWNDhwnd)
函數(shù)功能:暫停歌曲
***********************************************************************************************/
voidPauseMusic(HWNDhwnd)
{
//得到暫停按鈕上的句柄
HWNDhwndPause=GetDlgItem(hwnd,IDC_PAUSE);
TCHARcmd[256];
//當(dāng)按下了繼續(xù)按鈕
if(1==flagPauseOrPlay)
{
//繼續(xù)按鈕變成暫停按鈕
SetWindowText(hwndPause,TEXT("暫停"));
//打印播放命令
wsprintf(cmd,"play%s",OpenMusicFile);
//發(fā)送播放命令
mciSendString(cmd,NULL,0,0);
//修改標(biāo)志位(表示用戶按下了繼續(xù)按鈕)
flagPauseOrPlay=0;
}
elseif(0==flagPauseOrPlay)//當(dāng)按了暫停后
{
//暫停按鈕變成繼續(xù)按鈕
SetWindowText(hwndPause,TEXT("繼續(xù)"));
//打印暫停命令
wsprintf(cmd,"pause%s",OpenMusicFile);
//執(zhí)行暫停命令
mciSendString(cmd,NULL,0,0);
//修改標(biāo)志位(表示用戶按下了暫停按鈕)
flagPauseOrPlay=1;
}
}
最后在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代碼
//暫停
caseIDC_PAUSE:
{
PauseMusic(hwnd);
}
break;
實現(xiàn)效果
停頓播放的實現(xiàn)
/***********************************************************************************************
函數(shù)名:voidStopMusic(HWNDhwnd)
函數(shù)功能:停頓播放
************************************************************************************************/
voidStopMusic(HWNDhwnd)
{
TCHARcmd[256];
wsprintf(cmd,"stop%s",OpenMusicFile);
mciSendString(cmd,NULL,0,0);
}
在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代碼
//停頓
caseIDC_STOP:
{
StopMusic(hwnd);
}
break;
上一曲或下一曲的實現(xiàn)
全局變量
/****************************************************************************************************************
實現(xiàn)上一曲和下一曲所需的全局變量
*****************************************************************************************************************/
staticinttotalMusicCount;//播放列表中歌曲的總數(shù)
staticNumPlayMusiow;//選擇歌曲的編號
staticintiLoopType=0;//播放方式:初始為單曲模式
函數(shù)
/***********************************************************************************************
函數(shù)名:voidJumpMusic(HWNDhwnd,intnum)
函數(shù)功能:實現(xiàn)上一曲(num=0)或下一曲(num=1)
************************************************************************************************/
voidJumpMusic(HWNDhwnd,intnum)
{
HWNDhwndList=GetDlgItem(hwnd,IDC_LIST1);
//得到選擇的歌曲的序號
numPlayMusiow=ListBox_GetCurSel(hwndList);
//得到歌曲總數(shù)
totalMusicCount=ListBox_GetCount(hwndList);
/*下面的代碼是處理隨機(jī)播放中的上一曲和下一曲*/
if(0==num)//上一曲
{
//隨機(jī)播放
if(3==iLoopType)
{
//隨機(jī)生成歌曲的序號
numPlayMusiow=rand()%totalMusicCount;
}
else
{
//當(dāng)正在播放的歌曲的序號大于0時
if(numPlayMusiow>0)
{
//上一曲
numPlayMusiow=numPlayMusiow-1;
}
elseif(0==numPlayMusiow)//當(dāng)在播放第1首歌時
{
//跳到最后一首歌曲
numPlayMusiow=totalMusicCount-1;
}
}
}
elseif(1==num)//下一曲
{
if(3==iLoopType)
{
//隨機(jī)生成歌曲的序號
numPlayMusiow=rand()%totalMusicCount;
}
else
{
//當(dāng)正在播放的歌曲的序號小于歌曲的最大序號時
if(numPlayMusiow<totalMusicCount-1)
{
//下一曲
numPlayMusiow=numPlayMusiow+1;
}
//當(dāng)正在播放最后一首歌時
elseif(numPlayMusiow==totalMusicCount-1)
{
//跳到第一首歌
numPlayMusiow=0;
}
}
}
//設(shè)置歌曲的序號
ListBox_SetCurSel(hwndList,numPlayMusiow);
//得到歌曲的序號
numPlayMusiow=ListBox
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程施工綠色施工合同范本及環(huán)保要求
- 2025年油泵項目深度研究分析報告
- 2025年渣漿泵項目可行性研究報告
- 2025年自動波箱測試表行業(yè)深度研究分析報告
- 2024-2025年中國金屬包裝材料市場運(yùn)行態(tài)勢及行業(yè)發(fā)展前景預(yù)測報告
- 2025年單層罐籠項目投資可行性研究分析報告
- 2025年度建筑工程承包合作協(xié)議(含BIM技術(shù)應(yīng)用)
- 2025年度建筑涂料施工綠色施工技術(shù)咨詢服務(wù)合同
- 2025年度建筑渣土運(yùn)輸合同范本(升級版)
- 2025年度建筑材料采購合同綠色評價體系
- 脾破裂術(shù)后健康宣教課件
- 財務(wù)管控的間接成本
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設(shè)計報告
- 《學(xué)校體育科研方法》課件
- 護(hù)士團(tuán)隊的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計算公式計分標(biāo)準(zhǔn)說明模板
- 慢阻肺試題練習(xí)
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問題研究
- 國有資產(chǎn)管理辦法-國有資產(chǎn)管理辦法條例
- 公務(wù)車輛定點(diǎn)維修車輛保養(yǎng)(附彩圖) 投標(biāo)方案
評論
0/150
提交評論