Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。
CEchoTool クラスでは、すべての IDirectMusicTool メソッドを定義する必要がある。しかし Init や Flush 内で作業を行う必要はなく、これらのメソッドは単純に E_NOTIMPL を返す。
以下のメソッドを使って、処理の目的でこのツールに渡すメッセージを指定する。
CEchoTool は、次のサンプルコード内でこれらのメソッドを実装する。
HRESULT STDMETHODCALLTYPE CEchoTool::GetMsgDeliveryType( DWORD* pdwDeliveryType ) { // このツールはメッセージを即座に必要とする。 // これはデフォルトであり、E_NOTIMPL を返すと // 正常に動作する。もう 1 つの方法は、 // *pdwDeliveryType を DMUS_PMSGF_TOOL_IMMEDIATE、 // DMUS_PMSGF_TOOL_QUEUE、および DMUS_PMSGF_TOOL_ATTIME の // いずれかの配信タイプに明確に設定することである。 *pdwDeliveryType = DMUS_PMSGF_TOOL_IMMEDIATE; return S_OK; } HRESULT STDMETHODCALLTYPE CEchoTool::GetMediaTypeArraySize( DWORD* pdwNumElements) { *pdwNumElements = 3; return S_OK; } HRESULT STDMETHODCALLTYPE CEchoTool::GetMediaTypes( DWORD** padwMediaTypes, DWORD dwNumElements) { if (dwNumElements == 3) { (*padwMediaTypes)[0] = DMUS_PMSGT_NOTE; (*padwMediaTypes)[1] = DMUS_PMSGT_MIDI; (*padwMediaTypes)[2] = DMUS_PMSGT_PATCH; return S_OK; } else { // これは決して発生しないはずである。 return E_FAIL; } }