musicplay.cpp
来自「一个小的类似于雷电的射击游戏」· C++ 代码 · 共 74 行
CPP
74 行
#include "StdAfx.h"
#include ".\musicplay.h"
MusicPlay::MusicPlay(void)
{
CoInitialize(0); // Windows API, 初始化com对象
CoCreateInstance(CLSID_DirectMusicLoader, 0,
CLSCTX_INPROC, IID_IDirectMusicLoader8,
(void**)&m_pLoader);
CoCreateInstance(CLSID_DirectMusicPerformance, 0,
CLSCTX_INPROC, IID_IDirectMusicPerformance8,
(void**)&m_pPerform);
m_pPerform->InitAudio(
NULL,
NULL,
NULL,
DMUS_APATH_DYNAMIC_STEREO,
16,
DMUS_AUDIOF_ALL,
NULL);
}
MusicPlay::~MusicPlay(void)
{
m_pPerform->CloseDown();
SAFE_RELEASE(m_pSegment);
SAFE_RELEASE(m_pPerform);
SAFE_RELEASE(m_pLoader);
}
void MusicPlay::Init()
{
}
void MusicPlay::Load(char* cFilenName)
{
char FilePath[MAX_PATH];
GetCurrentDirectory(MAX_PATH, FilePath);
WCHAR wFilePath[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, FilePath, -1,
wFilePath, MAX_PATH);
m_pLoader->SetSearchDirectory(GUID_DirectMusicAllTypes,
wFilePath, FALSE);
WCHAR wFileName[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, cFilenName, -1,
wFileName, MAX_PATH);
m_pLoader->LoadObjectFromFile(CLSID_DirectMusicSegment,
IID_IDirectMusicSegment8,
wFileName,
(LPVOID*)&m_pSegment);
}
void MusicPlay::Play(int times)
{
m_pSegment->Download(m_pPerform);
m_pSegment->SetRepeats(times); // 重复播放次数
m_pPerform->PlaySegmentEx(m_pSegment, 0, 0, 0, 0, 0, 0, 0);
}
void MusicPlay::Stop()
{
m_pPerform->Stop(0, 0, 0, 0);
}
void MusicPlay::Cleanup()
{
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?