⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directsound.h

📁 里面包含了许多实用的游戏开发包
💻 H
字号:
/*----------------------------------------------------------------*\
 函  数:
 		void DirectSoundError(HRESULT hErr)
 功  能:
		DirectSound 错误信息显示
 参  数:
 		错误ID
 返回值:
\*----------------------------------------------------------------*/
void DirectSoundError(char *ModuleName, HRESULT hresult);


/*----------------------------------------------------------------*\
 函  数:
 		void DestroyDirectSound(void)
 功  能:
		销毁DirectSound对象
 参  数:
 返回值:
\*----------------------------------------------------------------*/
void DestroyDirectSound(void);
                  

/*----------------------------------------------------------------*\
 函  数:
 		BOOL InitializeDirectSound(void)
 功  能:
		初始化DirectSound
 参  数:
 返回值:
 		TURE  - 成功
 		FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL InitializeDirectSound(void);


/*----------------------------------------------------------------*\
 函  数:
        LPDIRECTSOUNDBUFFER CreateSoundBuffer(DWORD dwBufSize, 
        									  DWORD dwFreq, 
        									  DWORD dwBitsPerSample, 
                                              DWORD dwBlkAlign, 
                                              BOOL  bStereo)
 功  能:
		创建声音缓冲区
 参  数:
		dwBufSize       - 缓冲区容量
		dwFreq          - 采样率(44100、22000...)
		dwBitsPerSample - 样本的比特位数(16、8、4...)
		dwBlkAlign      - 数据块对齐,为1
		bStereo         - 立体声(1) or 单声道(0)
 返回值:
 		!NULL - 成功,返回声音缓冲区指针
 		NULL  - 失败
\*----------------------------------------------------------------*/
DllExport LPDIRECTSOUNDBUFFER dsCreateSoundBuffer(DWORD dwBufSize,        // 缓冲区容量
                                                  DWORD dwFreq,           // 采样率(44100、22000...)
                                                  DWORD dwBitsPerSample,  // 样本的比特位数(16、8、4...)
                                                  DWORD dwBlkAlign,       // 数据块对齐
                                                  BOOL  bStereo);         // 立体声 or 单声道


/*----------------------------------------------------------------*\
 函  数:
        dsReadSoundDataFromBuff(LPDIRECTSOUNDBUFFER g_lpDSBuff, char *Buff, DWORD dwSize)
 功  能:
		从文件中读声音数据到声音缓冲区中
 参  数:
		g_lpDSBuff    - 声音缓冲区
		Buff		- 文件指针
		dwSize		- 数据大小
 返回值:
 		TRUE   - 成功
 		FALSE  - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsReadSoundDataFromBuff(LPDIRECTSOUNDBUFFER g_lpDSBuff, char *Buff, DWORD dwSize);


/*----------------------------------------------------------------*\
 函  数:
        LPDIRECTSOUNDBUFFER dsLoadSoundFromBuff(char *Buff)
 功  能:
		根据数据缓冲区(Sound)创建面并将数据读入面中
 参  数:
		Buff - 数据指针
 返回值:
 		!NULL - 成功,返回声音缓冲区指针
 		NULL  - 失败
\*----------------------------------------------------------------*/
DllExport LPDIRECTSOUNDBUFFER dsLoadSoundFromBuff(char *Buff);


/*----------------------------------------------------------------*\
 函  数:
        BOOL dsPlaySound(LPDIRECTSOUNDBUFFER g_lpDSBuff, int Pan, DWORD dwFlags)
 功  能:
		播放声音
 参  数:
		g_lpDSBuff - 声音缓冲区
		Pan		 - 左右声道均衡
		dwFlags	 - 循环标志:0-不循环,1-循环
 返回值:
 		TRUE  - 成功
 		FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsPlaySound(LPDIRECTSOUNDBUFFER g_lpDSBuff, int Pan, DWORD dwFlags);


/*----------------------------------------------------------------*\
 函  数:
        BOOL dsStopSound(LPDIRECTSOUNDBUFFER g_lpDSBuff)
 功  能:
		停止播放声音
 参  数:
		g_lpDSBuff - 声音缓冲区
 返回值:
 		TRUE  - 成功
 		FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsStopSound(LPDIRECTSOUNDBUFFER g_lpDSBuff);
       

/*----------------------------------------------------------------*\
 函  数:
		BOOL dsSetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff, LONG Volume)
 功  能:
		设置声音的音量
 参  数:
		g_lpDSBuff - 声音缓冲区
		Volume   - 音量
 返回值:
 		TRUE  - 成功
 		FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsSetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff, LONG Volume);
                 

/*----------------------------------------------------------------*\
 函  数:
		LONG dsGetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff)
 功  能:
		获取声音的音量
 参  数:
		g_lpDSBuff - 声音缓冲区
 返回值:
 		音量
\*----------------------------------------------------------------*/
DllExport LONG dsGetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff);
/*----------------------------------------------------------------*\
|  函  数:DirectSound系统函数 -- DSOUND.DLL					   |
\*----------------------------------------------------------------*/
/*----------------------------------------------------------------*\
HRESULT DirectSoundCreate(       // 创建DirectSound对象
  LPGUID lpGuid,                     // 声音驱动器, 缺省为NULL
  LPDIRECTSOUND * ppDS,              // DirectSound 对象指针
  IUnknown FAR * pUnkOuter           // 必须为NULL
);

IDirectSound::CreateSoundBuffer  // 创建声音缓冲区
HRESULT CreateSoundBuffer(
  LPCDSBUFFERDESC lpcDSBufferDesc,              
  LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer,  
  IUnknown FAR * pUnkOuter           // 必须为NULL           
);


IDirectSound::SetCooperativeLevel   // 设置协作层
HRESULT SetCooperativeLevel(
  HWND hWnd,                        	// 父窗口句柄
  DWORD dwFlags                         // 控制标志
);


IDirectSoundBuffer::GetCurrentPosition       // 取播放和写的位置
HRESULT GetCurrentPosition(
  LPDWORD lpdwCurrentPlayCursor,             	// 播放的位置
  LPDWORD lpdwCurrentWriteCursor                // 写的位置
);

IDirectSoundBuffer::GetFrequency       // 取采样率
HRESULT GetFrequency(
  LPDWORD lpdwFrequency  
);

IDirectSoundBuffer::GetPan             // 取左右声道均衡
HRESULT GetPan(
  LPLONG lplPan  
);

 
IDirectSoundBuffer::GetStatus          // 取缓冲区状态
HRESULT GetStatus(LPDWORD lpdwStatus);	
返回值:
   DSBSTATUS_BUFFERLOST 缓冲区丢失
   DSBSTATUS_LOOPING 循环播放
   DSBSTATUS_PLAYING 正在播放


IDirectSoundBuffer::GetVolume        // 取音量
HRESULT GetVolume(
  LPLONG lplVolume  
);

IDirectSoundBuffer::Lock             // 获取声音缓冲区地址
HRESULT Lock(
  DWORD dwWriteCursor,    
  DWORD dwWriteBytes,     
  LPVOID lplpvAudioPtr1,  
  LPDWORD lpdwAudioBytes1,  
  LPVOID lplpvAudioPtr2,  
  LPDWORD lpdwAudioBytes2,  
  DWORD dwFlags           
);


IDirectSoundBuffer::Play 	// 声音播放
HRESULT Play(
  DWORD dwReserved1,   			// 保留. 必须为0.
  DWORD dwReserved2,   			// 保留. 必须为0.
  DWORD dwFlags        			// 播放方式.  DSBPLAY_LOOPING -- 循环
);

IDirectSoundBuffer::Restore // 恢复丢失的面
HRESULT Restore();


IDirectSoundBuffer::SetCurrentPosition       // 设置播放的位置
HRESULT SetCurrentPosition(
  DWORD dwNewPosition                           // 新的播放位置
);


IDirectSoundBuffer::SetFrequency  // 设置采样率
HRESULT SetFrequency(
  DWORD dwFrequency  
);

IDirectSoundBuffer::SetPan        // 设置左右声道均衡
HRESULT SetPan(
  LONG lPan  
);

IDirectSoundBuffer::SetVolume     // 设置音量
HRESULT SetVolume(
  LONG lVolume  
);

IDirectSoundBuffer::Stop          // 停止声音的播放
HRESULT Stop();

IDirectSoundBuffer::Unlock        // 与Lock配合
HRESULT Unlock(
  LPVOID lpvAudioPtr1, 
  DWORD dwAudioBytes1, 
  LPVOID lpvAudioPtr2, 
  DWORD dwAudioBytes2  
);
\*----------------------------------------------------------------*/
/*----------------------------------------------------------------*\
|  函  数:DirectSound系统函数 -- DSOUND.DLL					   |
\*----------------------------------------------------------------*/


/////////////////////////[       End        ]\\\\\\\\\\\\\\\\\\\\\\\\\
/////////////////////////[ DirectSound 系统 ]\\\\\\\\\\\\\\\\\\\\\\\\\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -