自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第1頁
自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第2頁
自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第3頁
自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第4頁
自己動手開發(fā)音樂播放器《五》播放功能的實現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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;

運行結(jié)果(播放成龍的少年強)

暫停的實現(xiàn)代碼暫停和播放類似也是定義一些全局變量和函數(shù)

首先定義一個全局變量

/***********************************************************************************************

實現(xiàn)暫停播放所需的全局變量

*************************************************************************************************/

staticintflagPauseOrPlay=0;//暫停播放的標志位(歌曲是暫停還是播放)

然后定義一個函數(shù)PauseMusic實現(xiàn)暫停播放

/**********************************************************************************************

函數(shù)名:voidPauseMusic(HWNDhwnd)

函數(shù)功能:暫停歌曲

***********************************************************************************************/

voidPauseMusic(HWNDhwnd)

{

//得到暫停按鈕上的句柄

HWNDhwndPause=GetDlgItem(hwnd,IDC_PAUSE);

TCHARcmd[256];

//當按下了繼續(xù)按鈕

if(1==flagPauseOrPlay)

{

//繼續(xù)按鈕變成暫停按鈕

SetWindowText(hwndPause,TEXT("暫停"));

//打印播放命令

wsprintf(cmd,"play%s",OpenMusicFile);

//發(fā)送播放命令

mciSendString(cmd,NULL,0,0);

//修改標志位(表示用戶按下了繼續(xù)按鈕)

flagPauseOrPlay=0;

}

elseif(0==flagPauseOrPlay)//當按了暫停后

{

//暫停按鈕變成繼續(xù)按鈕

SetWindowText(hwndPause,TEXT("繼續(xù)"));

//打印暫停命令

wsprintf(cmd,"pause%s",OpenMusicFile);

//執(zhí)行暫停命令

mciSendString(cmd,NULL,0,0);

//修改標志位(表示用戶按下了暫停按鈕)

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);

/*下面的代碼是處理隨機播放中的上一曲和下一曲*/

if(0==num)//上一曲

{

//隨機播放

if(3==iLoopType)

{

//隨機生成歌曲的序號

numPlayMusiow=rand()%totalMusicCount;

}

else

{

//當正在播放的歌曲的序號大于0時

if(numPlayMusiow>0)

{

//上一曲

numPlayMusiow=numPlayMusiow-1;

}

elseif(0==numPlayMusiow)//當在播放第1首歌時

{

//跳到最后一首歌曲

numPlayMusiow=totalMusicCount-1;

}

}

}

elseif(1==num)//下一曲

{

if(3==iLoopType)

{

//隨機生成歌曲的序號

numPlayMusiow=rand()%totalMusicCount;

}

else

{

//當正在播放的歌曲的序號小于歌曲的最大序號時

if(numPlayMusiow<totalMusicCount-1)

{

//下一曲

numPlayMusiow=numPlayMusiow+1;

}

//當正在播放最后一首歌時

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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論