メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

GRSound.h

00001 #ifndef __GRSOUND_H__
00002 #define __GRSOUND_H__
00003 
00004 #include <WinDX/Base/WXComBase.h>
00005 
00006 #ifndef _WIN64
00007 typedef DWORD DWORD_PTR;
00008 #endif
00009 
00010 #include <sstream>
00011 #include <mmsystem.h>
00012 #include <dsound.h>
00013 
00014 // ID割り当ては計画的に(ぉ
00015 // 管理が面倒になったら、iniファイルで対応します
00016 enum SOUNDID{
00017     SAMPLE0 =0,
00018     SAMPLE1 =1,
00019     SAMPLE2 =2,
00020     SAMPLE3 =3,
00021     SAMPLE4 =4,
00022     SAMPLE5 =5,
00023     SAMPLE6 =6,
00024     SAMPLE7 =7,
00025     SAMPLE8 =8,
00026     SAMPLE9 =9,
00027     SAMPLE10=10,
00028     SAMPLE11=11,
00029     SAMPLE12=12,
00030     SAMPLE13=13,
00031     SAMPLE14=14,
00032     SAMPLE15=15,
00033 };
00034 
00035 #define SOUNDBUFFER_MAX 100 //100以下でね
00036 
00037 #define SAFE_DELETE(p)  { if(p) { delete (p);     (p)=NULL; } }
00038 #define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
00039 
00040 
00041 class GRSound{
00042 protected:
00043     IDirectSound8* pDS;
00044     LPDIRECTSOUNDBUFFER      pDsbPrimary;
00045     LPDIRECTSOUNDBUFFER8     pDsb[SOUNDBUFFER_MAX];
00046     LPDIRECTSOUND3DLISTENER  pListener;
00047 private:
00048     GRSound::GRSound();
00049 public: // 臨時措置(?) もともとはprivateだったのだけど
00050     GRSound::~GRSound();
00051 
00052 public:
00053     // this method equals to the constructor
00054     // return value is instance
00055     static GRSound* instance(){ return &inst; }
00056 
00057     // called after the instance method
00058     HRESULT initialize( HWND hwnd );
00059     HRESULT volume( SOUNDID id , long volume);
00060     HRESULT play( SOUNDID id );
00061     HRESULT stop( SOUNDID id );
00062     HRESULT SetVolume(SOUNDID id, long volume);
00063     HRESULT GetVolume(SOUNDID id, long *volume);
00064     HRESULT RetriveVolumes();
00065 private:
00066     HRESULT createSoundBuffer( LPDIRECTSOUNDBUFFER8* ppDsb8 );
00067     HRESULT getListener( LPDIRECTSOUND3DLISTENER* ppListener );
00068     HRESULT loadWaveFile( SOUNDID id ,TCHAR* strFileName );
00069 
00070     HRESULT freeDirectSound();
00071 
00072     void    convertCoord(LPD3DVECTOR* pos);
00073     VOID    Set3DParameters( FLOAT fDopplerFactor, FLOAT fRolloffFactor, FLOAT fMinDistance,   FLOAT fMaxDistance );
00074     VOID    SetObjectProperties( D3DVECTOR* pvPosition, D3DVECTOR* pvVelocity );
00075     FLOAT   ConvertLinearSliderPosToLogScale( LONG lSliderPos );
00076     LONG    ConvertLogScaleToLinearSliderPosTo( FLOAT fValue );
00077 
00078     static GRSound inst;
00079 };
00080 
00081 #endif //__GRSOUND_H__

Springheadに対してSun Apr 16 01:57:52 2006に生成されました。  doxygen 1.4.1