Platform SDK: DirectX

ステップ 1 : ツール クラスの宣言

[Visual Basic]

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

[C++]

DirectMusic のツールを C++で作成する最初のステップは、IDirectMusicTool の派生クラスを宣言することである。

ここにサンプルの CEchoTool クラスの宣言を示す。

class CEchoTool : public IDirectMusicTool
{
public:
  CEchoTool();
  ~CEchoTool();
 
public:
// IUnknown
  virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv);
  virtual STDMETHODIMP_(ULONG) AddRef();
  virtual STDMETHODIMP_(ULONG) Release();
 
// IDirectMusicTool
  HRESULT STDMETHODCALLTYPE Init(
          IDirectMusicGraph* pGraph);
  HRESULT STDMETHODCALLTYPE GetMsgDeliveryType(
          DWORD* pdwDeliveryType);
  HRESULT STDMETHODCALLTYPE GetMediaTypeArraySize(
          DWORD* pdwNumElements);
  HRESULT STDMETHODCALLTYPE GetMediaTypes(
          DWORD** padwMediaTypes,
          DWORD dwNumElements);
  HRESULT STDMETHODCALLTYPE ProcessPMsg(
          IDirectMusicPerformance* pPerf,
          DMUS_PMSG* pDMUS_PMSG);
  HRESULT STDMETHODCALLTYPE Flush(
         IDirectMusicPerformance* pPerf,
         DMUS_PMSG* pDMUS_PMSG,
         REFERENCE_TIME rtTime);
private:
  long m_cRef;                // 参照カウンタ。
  DWORD m_dwEchoNum;          // 生成するエコーの数。
  MUSIC_TIME m_mtDelay;       // エコー間の遅延時間
  CRITICAL_SECTION m_CrSec;   // SetEchoNum()と SetDelay()
                              //   をスレッドセーフにする。
public:
// パブリック クラス メソッド
  void SetEchoNum(DWORD);
  void SetDelay(MUSIC_TIME);
};

次項 : ステップ 2 : IUnknown メソッドの定義