Platform SDK: DirectX

ステップ 3 : メッセージ タイプの指定

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。

[C++]

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;
  }
}

次項 : ステップ 4 : ProcessPMsg メソッドの定義