📄 audiomanager.cpp
字号:
// AudioManager.cpp: implementation of the CAudioManager class.
//
//////////////////////////////////////////////////////////////////////
#include "AudioManager.h"
namespace AudioEngine {
void CAudioManager::Init(HWND hwnd, bool stereo, int perfchannels)
{
HRESULT hr;
// initialize COM
hr = CoInitialize(NULL);
ThrowIfFailed(hr, "CAudioManager::Init: CoInitialize failed.");
// Create the loader
hr = CoCreateInstance(CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC,
IID_IDirectMusicLoader8, (void**)&m_Loader);
ThrowIfFailed(hr, "CAudioManager::Init: CoCreateInstance for loader failed.");
// Create performance object
hr = CoCreateInstance( CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC,
IID_IDirectMusicPerformance8, (void**)&m_Performance);
ThrowIfFailed(hr, "CAudioManager::Init: CoCreateInstance for performance failed.");
hr = m_Performance->InitAudio(NULL, NULL, hwnd, stereo ? DMUS_APATH_DYNAMIC_STEREO : DMUS_APATH_DYNAMIC_MONO,
perfchannels, DMUS_AUDIOF_ALL, NULL);
if (hr == DSERR_NODRIVER) {
// output a warning message, then continue as usual
MessageBox(hwnd, "The program could not locate your audio hardware. Make sure your driver supports DirectX 8.", "Audio Engine", MB_ICONSTOP);
return; // notice we didn't set m_InitGood true
}
else ThrowIfFailed(hr, "CAudioManager::Init: m_Performance->InitAudio failed.");
m_InitGood = true;
}
void CAudioManager::UnInit()
{
if(m_Performance != NULL) {
m_Performance->Stop( NULL, NULL, 0, 0 );
m_Performance->CloseDown();
SAFE_RELEASE( m_Performance );
}
SAFE_RELEASE( m_Loader );
m_InitGood = false;
}
CSoundPtr CAudioManager::LoadSound(std::string filename)
{
HRESULT hr;
CSound *snd = new CSound(this);
// convert filename to wide-string
WCHAR widefilename[MAX_PATH];
DXUtil_ConvertGenericStringToWideCch( widefilename, filename.c_str(), MAX_PATH);
// tell loader to load this file
hr = m_Loader->LoadObjectFromFile(
CLSID_DirectMusicSegment,
IID_IDirectMusicSegment8,
widefilename,
(void**) &snd->m_Segment);
ThrowIfFailed(hr, "CAudioManager::LoadSound: LoadObjectFromFile failed.");
return(CSoundPtr(snd));
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAudioManager::CAudioManager()
{
m_InitGood = false;
m_Performance = NULL;
m_Loader = NULL;
}
CAudioManager::~CAudioManager()
{
}
}; // namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -