Dạo này thấy nhiều người hỏi về cách play file nhạc quá nên ZC hướng dẫn tạo 1 cái class để play file mp3 nhé.
Dĩ nhiên là ZC ko đủ trình độ để quậy tới DirectAudio đâu [IMG]images/smilies/18.gif[/IMG]
Chỉ sử dụng winmm.lib thôi, cái này đơn giản nhưng cũng hiệu quả. Hồi trước Z cũng sử dụng nó để làm music nền cho 1 chương trình để tặng .... bạn nữa kìa.
Nói chung có thể làm nền games mini khá tốt vì nó chạy thread nên ko ảnh hưởng tới chương trình đơ hay đứng gì hết.
Mã:
#include <windows.h>#include <Mmsystem.h>#pragma comment (lib,"winmm.lib") #include <conio.h> //_getch()
Sau đó là class Mp3Player
Mã:
class Mp3Player{protected: DWORD m_idPlayer; Mp3Player(DWORD id) { m_idPlayer = id; }public: //Open_File//Thong tin:// - Khoi tao doi tuong Mp3Player// - Tham so dua vao la duong dan file MP3 static Mp3Player* Open_File(WCHAR *lpFileName) {#pragma warning (disable:4311) // Tham so cho Media MCI_OPEN_PARMS mciOpenParms; // Driver de play MP3 (tham khao them trong MSDN) mciOpenParms.lpstrDeviceType = L"mpegvideo"; // File mp3 se play mciOpenParms.lpstrElementName = lpFileName; // Khoi tao mp3Player DWORD dwResult = mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD) &mciOpenParms); // Loi khoi tao (co the do soundCard) if (dwResult != 0 ) return NULL; // Thiet lap tham so cho mp3Player (su dung don vi Milisecond) MCI_SET_PARMS param; param.dwTimeFormat = MCI_FORMAT_MILLISECONDS; dwResult = mciSendCommand(mciOpenParms.wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD) (LPMCI_SET_PARMS) ¶m); // Loi thiet lap tham so if (dwResult != 0 ) return NULL; #pragma warning (default:4311) // Khoi tao doi tuong Mp3 return new Mp3Player( mciOpenParms.wDeviceID ); } virtual ~Mp3Player() { // Huy mp3Player mciSendCommand(m_idPlayer, MCI_CLOSE, 0, NULL); } void Release(){delete this;} // Play()// Thong tin: Play file nhac void Play() {#pragma warning (disable:4311) MCI_PLAY_PARMS param; param.dwCallback = (DWORD) NULL; mciSendCommand(m_idPlayer, MCI_PLAY, MCI_NOTIFY,(DWORD)(LPVOID) ¶m);#pragma warning (default:4311) } // Stop()// Thong tin: Dung file nhac void Stop() {#pragma warning (disable:4311) MCI_GENERIC_PARMS param; param.dwCallback = NULL; mciSendCommand(m_idPlayer,MCI_STOP,MCI_NOTIFY,(DWORD) (LPMCI_GENERIC_PARMS) ¶m);#pragma warning (default:4311) } // Pause()// Thong tin: Tam dung file nhac void Pause() {#pragma warning (disable:4311) MCI_GENERIC_PARMS param; param.dwCallback = NULL; mciSendCommand(m_idPlayer,MCI_PAUSE,MCI_NOTIFY,(DWORD)(LPMCI_GENERIC_PARMS) ¶m);#pragma warning (default:4311) } // Resume()// Thong tin: Tiep tuc play (do pause) void Resume() {#pragma warning (disable:4311) MCI_GENERIC_PARMS param; param.dwCallback = NULL; mciSendCommand(m_idPlayer,MCI_RESUME,MCI_NOTIFY,(DWORD)(LPMCI_GENERIC_PARMS) ¶m);#pragma warning (default:4311) } // Length()// Thong tin: Tra ve thoi gian file mp3 (milisecond) DWORD Get_Length() {#pragma warning (disable:4311) MCI_STATUS_PARMS param; param.dwItem = MCI_STATUS_LENGTH; DWORD dwResult = mciSendCommand(m_idPlayer,MCI_STATUS ,MCI_STATUS_ITEM, (DWORD) (LPMCI_STATUS_PARMS) ¶m);#pragma warning (default:4311) if (dwResult != 0) return false; return (DWORD)param.dwReturn; } // Get_Position()// Thong tin: Tra ve vi tri (thoi diem milisecond) dang play DWORD Get_Position() {#pragma warning (disable:4311) MCI_STATUS_PARMS param; param.dwItem = MCI_STATUS_POSITION;; DWORD dwResult = mciSendCommand(m_idPlayer,MCI_STATUS ,MCI_STATUS_ITEM, (DWORD) (LPMCI_STATUS_PARMS) ¶m);#pragma warning (default:4311) if (dwResult != 0) return false; return (DWORD)param.dwReturn; } // Seek()// Thong tin: Nhay den vi tri seekto de play (milisecond) void Seek(DWORD seekto) {#pragma warning (disable:4311) MCI_SEEK_PARMS param; param.dwTo = seekto; mciSendCommand(m_idPlayer,MCI_SEEK,MCI_TO,(DWORD) (LPMCI_SEEK_PARMS) ¶m);#pragma warning (default:4311) }};
Cuối cùng là copy file mp3 cùng thư mục với chương trình và viết hàm main như sau.
Mã:
int _tmain(int argc, _TCHAR* argv[]){ Mp3Player *pPlayer = Mp3Player::Open_File(L"Phanly_LilKnight.mp3"); if (pPlayer == NULL) { printf("Sound card hoac path mp3 khong hop le
"); return 1; } pPlayer->Play(); printf("Hay lang nghe nhe... (press a key to stop)
"); _getch(); pPlayer->Release(); return 0;}
Code này chỉ là play mp3. Ngoài ra nó có thể play các file wav, midi, avi và mpg. Tham thêm ở msdn nhé.
Good luck!
View more random threads:
Bất chấp những lầm tưởng phổ quát, hồ hết những người có âm đạo đều khó lên đỉnh khi bị kích thích âm đạo. Tuy nhiên, điều đó không có tức thị nó không thể vui được! Việc xâm nhập vào âm đạo bằng...
Quý bà giải tỏa bằng việc kích...