簡易音樂播放器.
《簡易音樂播放器.》由會員分享,可在線閱讀,更多相關(guān)《簡易音樂播放器.(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、使用第三方庫 使用音頻引幣FMOD. FMODnJ以在如卜網(wǎng)址卜載: htt^//vmw.fmod.orgjndex1php/download 木次使川的足Windows 32bit版木.4.30.00 下戦完成版,安裝到某個目錄Z下。 使用前.要先配萱相關(guān)的頭文件和庫文件’ 計算機技術(shù) 培訓(xùn)中心 ■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-
4、ties->Linker->lnput->Additional
Dependencies?在其中填入庫文件的名稱,如:
fmodex vc.lib
并H在旃應(yīng)的代碼中include相應(yīng)的頭文件.如:
#in clude
5、d?d C^tiv-aMban
Custom £Uld Axles..
■2 3 0^
Add
Add 幵《b “*?rc???
Vir^Cew Oieg??r—
S 6、(WE
} . 0
#include 7、ncluderf頻引擎的頭文件:
#inelude 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ù)培訓(xùn)q
P心 ,
為對話梅添加?個Button,并H?把HCa 10、ption改為“Play 01.mp3M . 件改名為O1.mp3JiL變制到MusicPIay項冃所fT的口錄 匸 雙rlrPlay O1.mp3<添加單擊響應(yīng)。
// 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ù)培訓(xùn)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ù)培訓(xùn)q
p心 乂
| PK Ol.n^3
01.-T03
03.mp3
01.TO 15、3
雙擊名為”Add Music-的Button.添加單擊響應(yīng):
// 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, 〃默認(rèn)打開的文件的后綴
0, 〃默認(rèn)的文件名.0農(nóng)示沒育默認(rèn)文件
4|2f 〃標(biāo)志?用默認(rèn)的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
機技粗咅訓(xùn)中心
List Box->右說屬性?> 卅件?>LBN一DBCLICK
添丿JUXZ擊響應(yīng)川P戍擊Lis活ox的咅樂文們名時,就播放相應(yīng)的音樂。
編寫響應(yīng)p*l數(shù)。
Prcpert*e? ■斗 X
IOC LIST MUSICS (Uxboa Coni ? 麝]ME
19、
L機技術(shù)培訓(xùn)中心
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標(biāo)的char字符小
//丨1標(biāo)電
匕 //空
PlayMusic( cs 20、tyleFileName );//播放疔樂
if( mListBoxMusics.GetCount()0 ) return;
int index = mListBoxMusics.GetCurSelQ; if( index == -1 )// index == -1 衣示沒冇逑屮 return;
〃獲得當(dāng)前選中的字符串 CString fileName; mListBoxMusics.GetText( index, fileName );
〃轉(zhuǎn)化成cha廣字符中 char cstyleFileName[MAX_PATH];
WideCharToMultiByte( // 慶寬字符 21、到char的轉(zhuǎn)化 CP_ACP, // 轉(zhuǎn)換成 ANSI 碼
0, //歡認(rèn)為0的標(biāo)応
fileName.GetBuffer(O), // J京寬了符巾 tileName.GetLength()+1f // 字條串長度 cstyleFileName. MAX PATH, NULL; NULL);
只算機技術(shù)培訓(xùn)中心 丿
■
添加 個進度條Process Control,來控制疔樂的播放進度。 修改進度條屈件
Process Control
ID
IDC PROGRESS
右鍵進丿復(fù)條?添加變雖
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ù)培訓(xùn)q
Add Num.
成員變屆值
Control
少宅 翊
Process Comrol?>右饞?>屬性?> 事件響應(yīng)
添加
NM_RELEASEDCAPTURE 響 應(yīng),表示拖動進度條,松開時的 響應(yīng)。
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ù)培訓(xùn)q
訟 j
町以便用“圧時器?’函數(shù),圧時器兄?個函數(shù),但址它毎隔?泄的時間間隔就執(zhí)行 次,這個時間間隔可以由我們自已來指定。
gv 01 fro?
対石対話柜?> 右鍵
?》屬性?A消息? >WM_TIMER ? > 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)
〃獲得音樂當(dāng)恂播放的位閆,單位電抄
unsigned int curPosition;
mChannel->getPosition( &curPosition, FMOD_TIMEUNIT_MS ); 、「丄條的位宣 - 一
mProcess.SetPosf curPosition );
訐算嘰技術(shù):培訓(xùn)
// MusicPlayerDlg.cpp,|,
〃修改O nTimer用數(shù)
void CMusicPlayerDlg::OnTimer(UINT PTR n 28、ID Event)
if( mChannel != NULL)
〃獲得音樂當(dāng)前播放的位用?單位宅秒
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ù)培訓(xùn)I
?個播放器應(yīng)該有'?播放?’ ■ “初停"、“停止”「下iT\ “上?忡"按鈕
Pay 01.**<33
Pjuse
Prewew
Add Mum
Static
為毎個按釧添加響應(yīng)。
// 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ù)培訓(xùn)中心
}
〃下-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, //默認(rèn)為0的標(biāo)吉
fileName.GetBuffer(O), // 原寬字符巾 fileName.GetLength()+1, // j 條;「[1 度 cstyleFileName, // 白標(biāo)的char字符串 ■ *
MAX_PATH, 〃冃標(biāo)'/ 符;I K度 /
NULL, 〃空 J /
NULL); // 空 — 7*^
PlayMusic( cstyleFileName );//播放
〃上一首
void CMusicPlayerDlg::OnBnClickedButtonPreview()
{
……自己完成
}
甘樂播成器的功能還自保存列農(nóng)、儀入列農(nóng)的功能。叮以蘭試「1(2完成。
另外,列農(nóng)中的了符申是完鶴的文 件路彳b IE常難看.有什么辦法可 以只在列表中只顯示文件名,但乂 叫以播放到相應(yīng)的文件呢?
[廿仙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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。