Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。
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); };