前回DirectMusicツールを作ったので、それを登録して演奏時にツールを通すようにします。
登録
こんなふうに。
ツールを登録するため余分にIDirectMusicPerformance::AddRefしてます。
2つのツールを登録する場合はIDirectMusicGraph::InsertToolを連続で使います。
pModulator = new CBWBGMModulatorTool();
IDirectMusicGraph* pGraph;
pPerf->AddRef();
if (SUCCEEDED(CoCreateInstance(CLSID_DirectMusicGraph,NULL,
CLSCTX_INPROC, IID_IDirectMusicGraph,(void**)&pGraph))) {
pGraph->InsertTool( (IDirectMusicTool*)pModulator, NULL, 0, 0);
pPerf->SetGraph(pGraph);
pGraph->Release();
}解除
つまり登録の逆。
まあ、アプリケーション終了時に一緒に消え去りそうなものですが。
IDirectMusicGraph* pGraph;
if (SUCCEEDED(pPerf->GetGraph((IDirectMusicGraph**)&pGraph))) {
pGraph->RemoveTool(m_pModulator);
pGraph->Release();
}
pPerf->Release();
delete pModulator;