?? 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);
// 創(chuàng)建裝載器對象
CoCreateInstance( CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC,
IID_IDirectMusicLoader8, (void**)&g_pLoader );
// 創(chuàng)建演奏器對象
CoCreateInstance( CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC,
IID_IDirectMusicPerformance8, (void**)&g_pPerformance );
// 用標準的音頻路徑初始化演奏器。
// 這里對DirectMusic和DirectSound進行初始化,
// 并且創(chuàng)建合成器。
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, "沒有發(fā)現媒體,退出采樣。",
"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將在背景中播放,
// 所有繼續(xù)我們的任務
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 + -