VC編寫音頻播放器.ppt_第1頁
VC編寫音頻播放器.ppt_第2頁
VC編寫音頻播放器.ppt_第3頁
VC編寫音頻播放器.ppt_第4頁
VC編寫音頻播放器.ppt_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

VC+編寫音樂播放器,程序效果,音樂播放器可以播放Windows下常用的音頻和視頻文件,如MP3、MIDI、WAV、WMA等。程序的界面如圖所示。用戶可通過文件對話框添加想要播放的文件和刪除音樂文件,并可實現(xiàn)暫停、關(guān)閉或重播的功能,并顯示播放的時間和正在播放文件的全路徑和文件名,同時,在媒體文件播放的過程中,用戶可隨時調(diào)節(jié)音,還可以設(shè)置播放模式,如單曲循環(huán),順序播放等,同時,可以同步歌詞。,程序界面,創(chuàng)建初始界面程序,實現(xiàn)界面美化 1,首先新建一個工程,取個好聽的名字,這里命名為Multimedia,然后選擇Dialog based,點擊OK完成。 2,設(shè)置對話框顯示風(fēng)格。在對話框點右鍵屬性,設(shè)置邊框為細(xì)小,把標(biāo)題欄復(fù)選框去掉,其他默認(rèn)。如圖:,3,界面布局。在對話框中添加相應(yīng)的控件,完成相應(yīng)功能,最終效果如圖:,4.進(jìn)行對話框、控件的相應(yīng)美化。 (1)給對話框添加背景 (2)給按鈕添加位圖 (3)使靜態(tài)文本透明 實現(xiàn)播放音樂 Windows MCI與多媒體軟件開發(fā) Windows MCI(Media Control Interface)是控制多媒體設(shè)備的高層命令接口,提供了與設(shè)備無關(guān)的控制多媒體設(shè)備的方法。MCI可控制的多媒體設(shè)備包括標(biāo)準(zhǔn)的多媒體設(shè)備,如CD音頻(CD Audio)、數(shù)字視頻、動畫、Wave格式數(shù)字聲音和MIDI音序器,以及影碟機(jī)等可選設(shè)備。MCI包含在Windows系統(tǒng)的MMSYSTEM.DLL動態(tài)鏈接庫中,用以協(xié)調(diào)多媒體事件和MCI設(shè)備驅(qū)動程序之間的通信。一些MCI設(shè)備驅(qū)動程序,影碟機(jī)設(shè)備驅(qū)動程序,可以直接控制目標(biāo)設(shè)備;另外一些MCI 設(shè)備驅(qū)動程序,如Wave和MIDI 設(shè)備驅(qū)動程序,通過MMSYSTEM中的函數(shù)間接控制目標(biāo)設(shè)備;還有一些MCI設(shè)備驅(qū)動程序則提供了與其他Windows動態(tài)鏈接庫的高層接口。MCI提供兩種不同但相互聯(lián)系的接口方式。第一種方式利用消息和數(shù)據(jù)結(jié)構(gòu)來給多媒體設(shè)備發(fā)送命令并接收設(shè)備傳來的信息,這種方法用函數(shù)mciSendCommand來給設(shè)備發(fā)送命令。其原型為:,MCIERROR mciSendCommand ( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam ); 參數(shù)IDDevice表示用來接收命令的設(shè)備的標(biāo)識符,注意在打開設(shè)備時不用該參數(shù) uMsg是要發(fā)送的命令;fdwCommand是命令消息的標(biāo)志,而參數(shù)dwParam則是一個指向包含命令消息的參數(shù)的結(jié)構(gòu)。如該參數(shù)返回非0 值,則表示設(shè)備驅(qū)動出錯,這時可用mciGetErrorString函數(shù)來取得錯誤信息,其原型為: BOOL mciGetErrorString ( DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText ); 參 數(shù) fdwError 是由mciSendCommand 或mciSendString 返回的錯誤代碼; 參數(shù) lpszErrorText是一個指針,它指向用來存儲錯誤描述信息的緩沖區(qū);參數(shù)cchErrorText表示緩沖區(qū)的長度,以字符為單位。,MCI接口的第二種方式是使用ASCII字符串來發(fā)送驅(qū)動設(shè)備的命令,這種方式采用函 數(shù)mciSendString把命令字符發(fā)送給設(shè)備。其原型為: MCIERROR mciSendString ( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, 第5 章媒體播放器多媒體程序設(shè)計113 HANDLE hwndCallback ); 參數(shù)lpszCommand是要發(fā)送的MCI命令字符串;參數(shù)lpszReturnString是一個指向接收返回信息的緩沖區(qū)的指針;cchReturn表示緩沖區(qū)的長度,以字符為單位;hwndCallback是回調(diào)窗口的句柄,一般為NULL。 這 種 字 符 串 命 令 很 直 觀 方 便 , 近 似 自 然 語 言 , 如 “ play cdaudio ” , “stop waveaudio”等。返回的信息字符串由lpszReturnString帶回,如該函數(shù)返回非0值,同樣可用mciGetErrorString獲取錯誤信息。,為了使用MCI編程,必須包含多媒體頭文件: #include 并在項目屬性中添加對多媒體庫winmm.lib鏈接。,wchar_t buf256; MCIERROR err = mciSendString(L“open cdaudio alias cd“, NULL, 0, NULL); / 打開CD if (err) if (mciGetErrorString(err, buf, 256) MessageBox(buf, L“Error“); / 獲得并顯示錯誤串 return; mciSendString(L“status cd number of tracks“, buf, 256, NULL); / 獲得音軌總數(shù) m_nTracks = wcstol(buf, NULL, 10); / 這里使用了寬字符版的字符串到整數(shù)的 / 轉(zhuǎn)換函數(shù):long wcstol( const wchar_t *nptr, wchar_t *endptr, int base ); wsprintf(buf, L“play cd from %d to %d“, m_nFrom, m_nTo); mciSendString(buf, NULL, 0, NULL); / 從音軌m_nFrom頭播放到音軌m_nTo1尾,其他常用命令: mciSendString(L“set cd time format tmsf“, NULL,0,NULL); / 設(shè)置時間格式為 / 軌(100):分(100):秒(60):幀(75),一秒=75塊,一塊=98幀 mciSendString(L“set cd door open“, NULL, 0, NULL); / 打開光驅(qū) mciSendString(L“set cd door closed“, NULL, 0, NULL); / 關(guān)閉光驅(qū) mciSendString(L“pause cd“, NULL, 0, NULL); / 暫停播放 mciSendString(L“resume cd“, NULL, 0, NULL); / 恢復(fù)播放 mciSendString(L“stop cd“, NULL, 0, NULL); / 停止播放 mciSendString(L“close cd“, NULL, 0, NULL); / 關(guān)閉CD設(shè)備 mciSendString(L“status cd length“, buf, 256, NULL); / 獲得整個CD的音軌總長度 mciSendString(L“status cd length track 5“, buf, 256, NULL); / 獲得第5個音軌的長度 mciSendString(L“status cd current track“, buf, 256, NULL); / 獲得當(dāng)前音軌號,注意: “play cd from m_nFrom to m_nTo“是完整形式,它還有其他形式: “play cd from m_nFrom“從m_nFrom播放到盤尾 “play cd to m_nTo“從當(dāng)前位置播放到指定音軌 “play cd“ 從當(dāng)前位置播放到盤尾 例如播放最后一首歌:“play cd from m_nLast“ 2)WAV wchar_t buf256; wsprintf(buf, L“open “%s“ alias sound type waveaudio“, pDoc-strFilePath); MCIERROR err = mciSendString(buf, NULL, 0, NULL); if (err) if (mciGetErrorString(err, buf, 256) MessageBox(buf, L“Error”); return; ,/ t1和t2為用戶指定的起止時間(單位為秒,浮點變量) DWORD start = (DWORD)(t1 * 1000 + 0.5), end = (DWORD)(t2 * 1000 + 0.5); wsprintf(buf, L“play sound from %ld to %ld“, start, end); mciSendString(buf, NULL, 0, NULL); 其他常用命令: mciSendString(L“status sound length“, buf, 256, NULL); mciS

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論