013音樂(lè)播放器
一、基礎(chǔ)知識(shí)1strrchr(str,ch); strchr char2OPENFILENAME結(jié)構(gòu)體3所有的MCI命令字符串都是通過(guò)多媒體API函數(shù)mciSendString傳遞給MCI的,該函數(shù)的聲明為:MCIERROR mciSendString( LPCTSTR lpszCommand, /MCI命令字符串 LPTSTRlpszReturnString,/存放反饋信息的緩沖區(qū) UINTcchReturn, /緩沖區(qū)的長(zhǎng)度 HANDLEhwndCallback /回調(diào)窗口的句柄,一般為NULL); /若成功則返回0,否則返回錯(cuò)誤碼。mciSendString播放音樂(lè)(包含在mmsystem.h中,還需要把winmm.lib這個(gè)庫(kù)文件包含進(jìn)來(lái),包含這個(gè)庫(kù)文件在工程/設(shè)置中的連接標(biāo)簽中進(jìn)行),配合GetOpenFileName實(shí)現(xiàn)播放器由于Mcisendstring播放音樂(lè)只支持短文件名,所以文件放到很深的目錄中是不行的,可以使用GetShortPathName來(lái)彌補(bǔ)這個(gè)缺陷。例:TCHAR shortNameMAX_PATH;GetShortPathName(“d:中文文件夾名abcbb cc音樂(lè).mp3”,shortName,sizeof(shortName); TCHAR strMAX_PATH+10;wsprintf(str,”play %s”,shortName);把str替換下面“play 音樂(lè)全路徑名”即可。mciSendString(“play 音樂(lè)全路徑名”,"",0,NULL);mciSendString更多用法(暫停、繼續(xù)、錄音、播放進(jìn)度控制)參考wsprintf(cmd,"play %s",shortpath);mciSendString(cmd,"",0,NULL);/這個(gè)是實(shí)現(xiàn)播放音樂(lè)功能的,先將play 和shortpath組合到cmd中,然后再用mciSendString實(shí)現(xiàn)播放。wsprintf(listlen,"status %s length",shortpath);mciSendString(listlen,szLength,sizeof(szLength)/sizeof(TCHAR),NULL);/szLength里面得到的就是音樂(lè)的長(zhǎng)度。但位是毫秒。int longtime=atoi(szLength);/將得到的毫秒轉(zhuǎn)化成整數(shù)TCHAR time100;wsprintf(time,"%i:%i",int(longtime/1000/60),int(longtime/1000%60);/將毫秒轉(zhuǎn)化成分:秒形式,此時(shí)time里面存放的就是以分:秒形式顯示的數(shù)據(jù)wsprintf(szVolume,"setaudio %s volume to %d",shortpath,volume);mciSendString(szVolume,IVolume,0,NULL);/這個(gè)是求音樂(lè)聲音的。wsprintf(stopplay,"close %s",shortpath);mciSendString(stopplay,"",0,NULL);/這個(gè)就是實(shí)現(xiàn)結(jié)束音樂(lè)的。wsprintf(stop,"pause %s",shortpath);mciSendString(stop,"",0,NULL);/這個(gè)是暫停音樂(lè)播放的。wsprintf(novoice,"setaudio %s off",shortpath);mciSendString(novoice,"",0,NULL);/這個(gè)是實(shí)現(xiàn)靜音功能的。二、操作1打開(kāi)項(xiàng)目,刪除無(wú)關(guān)的內(nèi)容。2插入一個(gè)列表框,三個(gè)命令按鈕。列表框的ID改為IDC_LIST,命令按鈕的ID分別成:IDC_PLAY,IDC_PAUSE,IDC_STOP.命令按鈕標(biāo)題分別改成PLAY,PAUSE,STOP。且PAUSE與STOP改成已禁用。3窗口界面效果如圖4.現(xiàn)在要針對(duì)文件菜單的打開(kāi)文件,列表框,三個(gè)命令按鈕編程,為了能夠播放音樂(lè),要包含媒體相關(guān)的頭文件mmsystem.h和庫(kù)文件winmm.lib,除此之外還要定義程序當(dāng)中需要用到的各個(gè)變量。程序整個(gè)代碼如下: