簡易音樂播放器.

上傳人:小** 文檔編號:63563684 上傳時間:2022-03-19 格式:DOC 頁數(shù):19 大?。?.51MB
收藏 版權(quán)申訴 舉報 下載
簡易音樂播放器._第1頁
第1頁 / 共19頁
簡易音樂播放器._第2頁
第2頁 / 共19頁
簡易音樂播放器._第3頁
第3頁 / 共19頁

下載文檔到電腦,查找使用更方便

24 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《簡易音樂播放器.》由會員分享,可在線閱讀,更多相關(guān)《簡易音樂播放器.(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、使用第三方庫 使用音頻引幣FMOD. FMODnJ以在如卜網(wǎng)址卜載: htt^//vmw.fmod.orgjndex1php/download 木次使川的足Windows 32bit版木.4.30.00 下戦完成版,安裝到某個目錄Z下。 使用前.要先配萱相關(guān)的頭文件和庫文件’ 計算機技術(shù) 培訓中心 ■L 使用第三方庫 /l:Tools->Options?>Projects and Solutions->VC++ Directories->Show directories for: 分別填入路徑,如: Include files的路彳仝足:f:\develop\FMO

2、D Programmers API Win32\api\inc\ Library files的路徑足:f:\develop\FMOD Programmers API Win32\api\lib\ i Todw Tett Anarpe Window He4p Attach to ProcCTi.. Ctri*Alt*P to ^rvcw... Devce Security Manoge?-.. Dovco EfluJator Mordgor... Connect to Cement to . Code Sppet% Ctd-*K, Ctrl? B Ok>o?? Toolbc*

3、 It.iv*■… Add-右iit->Properties->Configuration Proper

4、ties->Linker->lnput->Additional Dependencies?在其中填入庫文件的名稱,如: fmodex vc.lib 并H在旃應的代碼中include相應的頭文件.如: #in clude ArHfiraM1 1嚴?? All Ij-crr 5pe?^c MvdJ? OUeg rU I M-dn?v C)wteel X 巧 ? 1 L ? 1“ * 一: ?444?a wl ilw? to add to Z i~ lac k?r?w“? lb - BuSd 5y CakUcie Cccfe ^rc4E. 6ua

5、d?d C^tiv-aMban Custom £Uld Axles.. ■2 3 0^ Add Add 幵《b “h --凹卜巧 ?- id ta?oar?

6、(WE } . 0 #include od. hpp> tpraffna oncel // CMub icPl ayerDls 丈1適惟 k1469 CMuslcFlayerDls : public CDLal^e protected: FMOD: :System *mSy-;t^r z 卩MOD: : Sound *m:^c i i \ FMOD::Channel *mC i - r1 mChannel = NULL: 1>創(chuàng)建一個壘于對話框的項冃.命名為MusicPIayer 2、 ri MusicPIayer.h的頂端i

7、ncluderf頻引擎的頭文件: #inelude 3、 為MusicPIayer.h?^加依籟項: fmod vc.lib 4、 為class CMusicPIayerDIg添加如下的成員: FMOD::System wmSystem; FMOD::Sound *mSound; FMOD::Channel *mChannel; 5、 編寫音頻引翠的初始化代碼 // MusicPlayerDlg.cppll, BOOL CMusicPlayerDlg::OnlnitDialog() ……省略 //TODO: 4此添加額外的初始化代碼 〃初始化咅頻引擎

8、系統(tǒng) FMOD::System_Create( &mSystem ); mSystem->init( 200, FMODJNIT_NORMAL. 0 ); mSound = NULL; " } . 0 // MusicPIayerDIg.h 中 //為class CMusicPIayerDIg添加?個成員隨數(shù)聲明: // filename :你文件路彳仝 void PlayMusic(const char* filename); // MusicPIayerDIg.cpp111 〃定義PlayMusic函數(shù) void CMusicPlayerDlg::PlayMusic(

9、const char* filename) { 〃如果冇聲道正在播放,停止播放 if( mChannel != NULL) mCha nn el->stop(); 〃如果m Sound不為空■釋/AmSound if( mSound 匚 NULL ) mSound->release(); mSystem->createStream( filename, FMOD DEFA mSystem->playSound( FMOD CHANNEL FREE, SmChannel); } . 0 計算機技術(shù)培訓q P心 , 為對話梅添加?個Button,并H?把HCa

10、ption改為“Play 01.mp3M . 件改名為O1.mp3JiL變制到MusicPIay項冃所fT的口錄 匸 雙rlrPlay O1.mp3<添加單擊響應。 // MusicPIayerDIg.cpp 屮 void CMusicPlayerDlg::OnBnClickedButtonPlayonemusic() { PlayMusicC01.mp3 J;運行.并忖點擊一下按鈕。 把-首音樂文 Buttoe 0 MuiicP1?yer a| Ol.fTp2 v awcicBwc M Ed

11、Bon Am dUTi 畫CCTLO 3D Horzcntjl SereII &or 國 VertK;al S

12、 ID IDC_BUTTON_ADD PQV01.rn)3 AcdMv 火 | PC Check Box *?l Cc^rrol Comoo Box 碣迄 I II Group Bak 儈 Redo Button Ail Static Text SR Picture Control 麗 Hcxirotnal Sell S Vsgl icrol Bar o- Slider Cor

13、 計篦 機技術(shù)培訓q P心 2 Add Miindlor^ ActiveX Centvol . Add CUbi.? / Ccjrt&ol varijOe 、? Add Veriabtv.w Size to Cort ent Aligr Lofts Aligr Fopt O>?clc KAn?*wior*>c? Coj^ren, (ff rotator

14、 not reo-r?Q - CaCBC" Control vanefatefjam. rtj5t£w>?*\MPCS C^rtroi P: !CCjjy_K?tCS Category: Control Variable name: mListBoxMusics CUstCcx Vcorol tzpe Cort B ^rooert** 機技術(shù)培訓q p心 乂 | PK Ol.n^3 01.-T03 03.mp3 01.TO

15、3 雙擊名為”Add Music-的Button.添加單擊響應: // MusicPIayerDIg.cpp中 void CMusicPlayerDlg::O nBnCllckedBuMonAdd() { mListBoxMusics.AddString( T(M01 .mp3”)); } " 嘗試運彳幾巾?擊按鈕 我們的冃的: 1 點 ikAdd Music 2、 彈出個打開文件對話框 3、 選中文件 4、 添加到List Box中去(List Box/*文件的完整路彳乞) 打開或者保存文件對話框可以用 CFIIeDialog-其構(gòu)造函數(shù)如卜?: exp

16、licit CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs LPCTSTR IpszDefExt = NULL, LPCTSTR IpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR IpszFilter = NULL, CWncT pParentWnd = NULL, DWORD dwSize = 0. BOOL bVistaStyle = TRUE);

17、 修改Add Music Button的甲擊響血函數(shù) // MusicPIayerDIg.cpp^p void CMusicPlayerDlg::O nBnClickedButtonAdd() CFileDialog dlg( TRUE, //TRUE打開文fh FALSE保存文件 0, 〃默認打開的文件的后綴 0, 〃默認的文件名.0農(nóng)示沒育默認文件 4|2f 〃標志?用默認的4|2就行 _T「MusicFileC?mp3)r?mp3")//文件過濾.只保留厲綴為mp3的文件 if( dlg.DoModalQ == IDOK ) // 顯示對話框 〃返回文件名 // C

18、String fileName = dlg.GetFileName(); 〃返回完整的文件路徑 CString fullPath = dlg.GetPathName(); mListBoxMusics.AddString( fullPath ); } } 處成’ 式込行,并S加mp3 z f i 機技粗咅訓中心 List Box->右說屬性?> 卅件?>LBN一DBCLICK 添丿JUXZ擊響應川P戍擊Lis活ox的咅樂文們名時,就播放相應的音樂。 編寫響應p*l數(shù)。 Prcpert*e? ■斗 X IOC LIST MUSICS (Uxboa Coni ? 麝]ME

19、 L機技術(shù)培訓中心 Cur Copy Add Evwt Handler— Insert ActiveX Controls. Add Clan... Add V,ri?b ?… ta Afign Tops LBTV_KILX^Xn-X LBN.&CLCANC LBN.SCLCM4K LBh.SfTFOCU NMJMEMEa Check Mnemorwcs void CMusicPlayerDlg::OnLbnDblclkListMusics() Prop# woe // 11標的char字符小 //丨1標電 匕 //空 PlayMusic( cs

20、tyleFileName );//播放疔樂 if( mListBoxMusics.GetCount()0 ) return; int index = mListBoxMusics.GetCurSelQ; if( index == -1 )// index == -1 衣示沒冇逑屮 return; 〃獲得當前選中的字符串 CString fileName; mListBoxMusics.GetText( index, fileName ); 〃轉(zhuǎn)化成cha廣字符中 char cstyleFileName[MAX_PATH]; WideCharToMultiByte( // 慶寬字符

21、到char的轉(zhuǎn)化 CP_ACP, // 轉(zhuǎn)換成 ANSI 碼 0, //歡認為0的標応 fileName.GetBuffer(O), // J京寬了符巾 tileName.GetLength()+1f // 字條串長度 cstyleFileName. MAX PATH, NULL; NULL); 只算機技術(shù)培訓中心 丿 ■ 添加 個進度條Process Control,來控制疔樂的播放進度。 修改進度條屈件 Process Control ID IDC PROGRESS 右鍵進丿復條?添加變雖 I P&V 01-HO3 Process Control

22、 Category Variable name mProcess C3 Bvttor UT Check Bo? 2 Edit Control 旦 Camhe Bom SB IkT Boa ft Of cop Bqa 席 lUdb Butler * 2t?tir Txt 囲 Pkxure Control PR Honrontn Scroll B* 趨 Vertical Sc*cil Bar O- Sider Ccrtro 6 Spin Cortiol Tl^^fogrdZ^^onlron P HOC 5 口 Lh^ Control fe Tr^eCortrol □ Tab Conerol

23、 Comment 計算彳 幾技術(shù)培訓q Add Num. 成員變屆值 Control 少宅 翊 Process Comrol?>右饞?>屬性?> 事件響應 添加 NM_RELEASEDCAPTURE 響 應,表示拖動進度條,松開時的 響應。 m聽 01 rTp3 Q< iUDMR N Heft ■ 畫l 士毋B二 BCMJttcPi^Soig NM CUCTOMDI^ 進度條用來控件聲樂的播放進度? Copy ?owe Ddcte

24、to Concert AIiqo 1去£ Align *ops Chxh Mr>cn)o rk 7 ouipm (row: Bold ["J 計算機技術(shù)培訓q 訟 j 町以便用“圧時器?’函數(shù),圧時器兄?個函數(shù),但址它毎隔?泄的時間間隔就執(zhí)行 次,這個時間間隔可以由我們自已來指定。 gv 01 fro? 対石対話柜?> 右鍵 ?》屬性?A消息? >WM_TIMER ? > OnTimer U .A , Cut Copy 心3 X DdHe Add H^ndL— Insert ActiveX ControL.

25、 牝 A^d g J ? We to C?5rtmt Align Ufe 7F Mge Tqq> Check MfiemoRics J - /pi AM RBCTONDC AM AM.RENDtRALLf AM.RENOERFOR ?AM.StTCVRSOR AM SCTFOCU5 AM.SSnNGCW ^W.SHOWWtND AM.SIZSCllPfiO^ AM.SC1NG AM.SPOOIERGT; AM.SYSCMAR ?AM.s^cotona AM.5YSC0MMAI OrSyfComnwnd 計尊機技術(shù)i罰||中心

26、 ?AM.SYSKEVDO.V AM.S^SWHJP AMJCAAD AM_TWMECHAh AM TVcl(CHAN

27、er code here and/or call default if( mChannel 匚 NULL) 〃獲得音樂當恂播放的位閆,單位電抄 unsigned int curPosition; mChannel->getPosition( &curPosition, FMOD_TIMEUNIT_MS ); 、「丄條的位宣 - 一 mProcess.SetPosf curPosition ); 訐算嘰技術(shù):培訓 // MusicPlayerDlg.cpp,|, 〃修改O nTimer用數(shù) void CMusicPlayerDlg::OnTimer(UINT PTR n

28、ID Event) if( mChannel != NULL) 〃獲得音樂當前播放的位用?單位宅秒 unsigned int curPosition; mChannel->getPosition( &curPosition, FMOD_TIMEUNIT_MS ); 卍卅胡條的位月 二 mProcess.SetPos( curPosition ); unsigned int second = curPosition/1000%60; unsigned int minute = curPosition/1000/60%60J CString strTime; 運行…… } CDi

29、alog::O nTimer(nlDEvenl); strTime.Format( _T(u%d:%dM). minute, sec mStaticTime.SetWindowTextf strTime); 機技術(shù)培訓I ?個播放器應該有'?播放?’ ■ “初停"、“停止”「下iT\ “上?忡"按鈕 Pay 01.**<33 Pjuse Prewew Add Mum Static 為毎個按釧添加響應。 // MusicPIayerDIg.cpp111 〃插放音樂 void CMusicPIayerDIg::OnBnClicke

30、dButtonPlay() { if( mChannel != NULL) mChannel->setPaused( false ); } 〃暫停音樂 void CMusicPlayerDlg::OnBnClickedButtonPause() { if( mChannel != NULL) mChannel->setPaused( true ); } 〃停il:音樂 void CMusicPIayerDIg::OnBnClickedButtonStopO { if( mChannel != NULL) mCha nn el->stop(); } —一 -W—L 七

31、 r - 計算機技術(shù)培訓中心 } 〃下-W void CMusicPlayerDlg::OnBnClickedButtonNext() int index = mListBoxMusics.GetCurSel(); if( index ==?1 || index + 1 >= mListBoxMusics.GetCount()) return; in dex++; CString fileName; mListBoxMusics.GetText( index, fileName); mListBoxMusics.SetCurSel( inde

32、x ); //轉(zhuǎn)化成cha廣字符笊 char cstyleFileName[MAX_PATH]; WideCharToMultiByte( // 從寬 7行到char的傳化 CP_ACP, //轉(zhuǎn)換成ANSI碼 0, //默認為0的標吉 fileName.GetBuffer(O), // 原寬字符巾 fileName.GetLength()+1, // j 條;「[1 度 cstyleFileName, // 白標的char字符串 ■ * MAX_PATH, 〃冃標'/ 符;I K度 / NULL, 〃空 J / NULL); // 空 — 7*^ PlayMusic( cstyleFileName );//播放 〃上一首 void CMusicPlayerDlg::OnBnClickedButtonPreview() { ……自己完成 } 甘樂播成器的功能還自保存列農(nóng)、儀入列農(nóng)的功能。叮以蘭試「1(2完成。 另外,列農(nóng)中的了符申是完鶴的文 件路彳b IE常難看.有什么辦法可 以只在列表中只顯示文件名,但乂 叫以播放到相應的文件呢? [廿仙3 I I j Md Mjk J State 捉示:可以使用std::map來實現(xiàn)『 std::map的A體用広對攻白l!住找° 0- [P折]I Ps I | S3 | 卩訶訥;

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!