📄 tutorial1.cpp
字号:
//-----------------------------------------------------------------------------
// 文件名: play.cpp
//
// 描述: DirectMusic实例:显示如何在一个缺省的音频路径上播放一个片段。
//
//-----------------------------------------------------------------------------
#define INITGUID
#include <windows.h>
#include <dmusicc.h>
#include <dmusici.h>
//-----------------------------------------------------------------------------
// 定义,常量和全局变量
//-----------------------------------------------------------------------------
IDirectMusicLoader8* g_pLoader = NULL;
IDirectMusicPerformance8* g_pPerformance = NULL;
IDirectMusicSegment8* g_pSegment = NULL;
//-----------------------------------------------------------------------------
// 函数名: WinMain()
// 描 述: 在一个缺省的路径上使用DirectMusic播放一个单独的WAV文件。
//-----------------------------------------------------------------------------
INT APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine,
INT nCmdShow )
{
// 初始化COM
CoInitialize(NULL);
// 创建装载器对象
CoCreateInstance( CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC,
IID_IDirectMusicLoader8, (void**)&g_pLoader );
// 创建演奏器对象
CoCreateInstance( CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC,
IID_IDirectMusicPerformance8, (void**)&g_pPerformance );
// 用标准的音频路径初始化演奏器。
// 这里对DirectMusic和DirectSound进行初始化,
// 并且创建合成器。
g_pPerformance->InitAudio( NULL, NULL, NULL,
DMUS_APATH_SHARED_STEREOPLUSREVERB, 64,
DMUS_AUDIOF_ALL, NULL );
CHAR strPath[512];
if( GetWindowsDirectory( strPath, MAX_PATH+1 ) == 0 )
return 0;
strcat( strPath, "\\media" );
// 告诉DirectMusic缺省的搜索路径
WCHAR wstrSearchPath[MAX_PATH+1];
MultiByteToWideChar( CP_ACP, 0, strPath, -1,
wstrSearchPath, MAX_PATH );
wstrSearchPath[MAX_PATH] = 0;
g_pLoader->SetSearchDirectory( GUID_DirectMusicAllTypes,
wstrSearchPath, FALSE );
// 从文件中装载片段
WCHAR wstrFileName[MAX_PATH] = L"ding.wav";
if( FAILED( g_pLoader->LoadObjectFromFile( CLSID_DirectMusicSegment,
IID_IDirectMusicSegment8,
wstrFileName,
(LPVOID*) &g_pSegment ) ) )
{
MessageBox( NULL, "没有发现媒体,退出采样。",
"DirectMusic实例", MB_OK );
g_pPerformance->CloseDown();
g_pLoader->Release();
g_pPerformance->Release();
CoUninitialize();
return 0;
}
// 传送片段的乐器给合成器
g_pSegment->Download( g_pPerformance );
// 播放缺省音频路径上的片段
g_pPerformance->PlaySegmentEx( g_pSegment, NULL, NULL, 0,
0, NULL, NULL, NULL );
// 现在DirectMusic将在背景中播放,
// 所有继续我们的任务
MessageBox( NULL, "点击“确定”按钮退出。", "DirectMusic实例", MB_OK );
// 停止音乐,并关闭
g_pPerformance->Stop( NULL, NULL, 0, 0 );
g_pPerformance->CloseDown();
// 清除所有接口
g_pLoader->Release();
g_pPerformance->Release();
g_pSegment->Release();
// 关闭COM
CoUninitialize();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -