資源簡介
實現游戲里面的Mid音頻的播放,適合2D游戲的背景音樂,用的時候把Midi.h和Midi.cpp復制到自己的項目里面,播放的時候先建一個類Midi Mymid,然后Mymid.Close();Mymid.Open("dat//**.mid");Mymid.Play();就可以了

代碼片段和文件信息
//?Midi.cpp
#include?“stdafx.h“
#include?“Midi.h“
CMidi::CMidi()
{
m_nDevices?=?midiOutGetNumDevs();
m_bOpened?=?m_bPaused?=?m_bPlaying?=?FALSE;
m_wDeviceID?=?0;
}
CMidi::~CMidi()
{
Close();
}
int?CMidi::DeviceCount(?void?)
{
return(?m_nDevices?);
}
BOOL?CMidi::Open(?const?char?*lpszFilename?)
{
if(?!m_bOpened?){
//?Initialize?member?variables.
m_bPaused?=?m_bPlaying?=?FALSE;
m_wDeviceID?=?0;
//?See?if?the?file?exists.
CFileStatus?Status;
if(?!CFile::GetStatus(?lpszFilename?Status?)?)
{
return(?FALSE?);
}
//?Open?the?device.
MCI_OPEN_PARMS?OpenParms;
OpenParms.lpstrDeviceType?=?(LPCSTR)?MCI_DEVTYPE_SEQUENCER;
OpenParms.lpstrElementName?=?(LPCSTR)?lpszFilename;
OpenParms.wDeviceID?=?0;
if(?mciSendCommand(?NULL?MCI_OPEN?MCI_WAIT?|?MCI_OPEN_TYPE?|?MCI_OPEN_TYPE_ID?|?MCI_OPEN_ELEMENT?(DWORD)(LPVOID)?&OpenParms?)?)
return(?FALSE?);
m_wDeviceID?=?OpenParms.wDeviceID;
m_bOpened?=?TRUE;
//?Set?the?time?format?to?milliseconds.
MCI_SET_PARMS?SetParms;
SetParms.dwTimeFormat?=?MCI_FORMAT_MILLISECONDS;
if(?mciSendCommand(?m_wDeviceID?MCI_SET?MCI_SET_TIME_FORMAT?(DWORD)(LPVOID)?&SetParms?)?)
{
Close();
return(?FALSE?);
}
mciSendCommand(?m_wDeviceID?MCI_SEEK?MCI_SEEK_TO_START?NULL?);
return(?TRUE?);
}
return(?FALSE?);
}
BOOL?CMidi::Close(?void?)
{
if(?m_bOpened?){
//?Stop?the?playing?and?close?the?device.
if(?m_bPlaying?||?m_bPaused?)
mciSendCommand(?m_wDeviceID?MCI_STOP?NULL?NULL?);
mciSendCommand(?m_wDeviceID?MCI_CLOSE?NULL?NULL?);
//?Clear?member?variables.
m_bOpened?=?m_bPaused?=?m_bPlaying?=?FALSE;
m_wDeviceID?=?0;
return(?TRUE?);
}
return(?FALSE?);
}
BOOL?CMidi::Play(?void?)
{
if(?m_bOpened?){
//?Issue?the?‘play‘?command.
MCI_PLAY_PARMS?PlayParms;
PlayParms.dwCallback?=?NULL;
PlayParms.dwFrom?=?(?(?GetMinutes()?*?60?)?+?GetSeconds?()?)?*?1000;
if(?mciSendCommand(?m_wDeviceID?MCI_PLAY?MCI_FROM?(DWORD)(LPVOID)?&PlayParms?)?)
return(?FALSE?);
//?Set?our?class?members?so?we?know?that
//?we‘re?currently?playing.
m_bPlaying?=?TRUE;
m_bPaused?=?FALSE;
return(?TRUE?);
}
return(?FALSE?);
}
BOOL?CMidi::Stop(?void?)
{
if(?m_bOpened?&&?m_bPlaying?){
//?Issue?the?‘stop‘?command.
mciSendCommand(?m_wDeviceID?MCI_STOP?NULL?NULL?);
//?Issue?the?command?that?seeks?back?to?the?start.
mciSendCommand(?m_wDeviceID?MCI_SEEK?MCI_SEEK_TO_START?NULL?);
m_bPaused?=?m_bPlaying?=?FALSE;
return(?TRUE?);
}
return(?FALSE?);
}
BOOL?CMidi::Pause(?void?)
{
if(?m_bOpened?&&?m_bPlaying?){
//?Pause?the?CD.
MCI_PLAY_PARMS?PlayParms;
if(?mciSendCommand(?m_wDeviceID?MCI_PAUSE?0?(DWORD)(LPVOID)?&PlayParms?)?)
return(?FALSE?);
m_bPaused?=?TRUE;
return(?TRUE?);
}
return(?FALSE?);
}
BOOL?CMidi::IsPlaying(?void?)
{
if(?m_bOpened?){
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????21222??2013-01-21?21:35??播放Mid音頻文件\Debug\Midi.obj
?????文件????2125896??2013-01-21?21:35??播放Mid音頻文件\Debug\MidPla
?????文件????2507068??2013-01-21?21:35??播放Mid音頻文件\Debug\MidPla
?????文件??????18430??2013-01-21?21:35??播放Mid音頻文件\Debug\MidPla
?????文件????5461380??2013-01-20?21:59??播放Mid音頻文件\Debug\MidPla
?????文件????4121600??2013-01-21?21:35??播放Mid音頻文件\Debug\MidPla
?????文件???????8732??2013-01-20?21:59??播放Mid音頻文件\Debug\MidPla
?????文件??????37401??2013-01-21?21:35??播放Mid音頻文件\Debug\MidPla
?????文件?????106006??2013-01-20?21:59??播放Mid音頻文件\Debug\StdAfx.obj
?????文件?????214016??2013-01-21?21:35??播放Mid音頻文件\Debug\vc60.idb
?????文件?????372736??2013-01-21?21:35??播放Mid音頻文件\Debug\vc60.pdb
?????文件???????7874??2013-01-21?21:35??播放Mid音頻文件\Midi.cpp
?????文件????????631??1997-11-28?15:09??播放Mid音頻文件\Midi.h
?????文件??????21136??2013-01-20?22:00??播放Mid音頻文件\MidPla
?????文件???????1306??2013-01-21?21:34??播放Mid音頻文件\MidPla
?????文件???????2101??2013-01-21?21:35??播放Mid音頻文件\MidPla
?????文件???????4345??1999-02-23?15:57??播放Mid音頻文件\MidPla
?????文件????????543??1999-02-23?14:52??播放Mid音頻文件\MidPla
?????文件???????1357??1999-02-23?14:52??播放Mid音頻文件\MidPla
?????文件??????58368??2013-01-21?21:35??播放Mid音頻文件\MidPla
?????文件??????50688??2013-01-21?21:35??播放Mid音頻文件\MidPla
?????文件???????1303??2013-01-21?21:35??播放Mid音頻文件\MidPla
?????文件???????5558??1999-02-23?19:24??播放Mid音頻文件\MidPla
?????文件???????5235??2013-01-21?21:34??播放Mid音頻文件\MidPla
?????文件???????1553??1999-02-23?19:12??播放Mid音頻文件\MidPla
?????文件???????3633??1999-02-23?14:52??播放Mid音頻文件\ReadMe.txt
?????文件???????1078??1999-02-23?14:52??播放Mid音頻文件\res\MidPla
?????文件????????401??1999-02-23?14:52??播放Mid音頻文件\res\MidPla
?????文件????????871??1999-02-23?14:54??播放Mid音頻文件\resource.h
?????文件????????211??1999-02-23?14:52??播放Mid音頻文件\StdAfx.cpp
............此處省略7個文件信息
- 上一篇:拍賣系統jsf+ejb+jpa
- 下一篇:計算機圖形學的詳細論文翻譯
評論
共有 條評論