前回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;