www.pudn.com > DSound_demo.zip > DirectSound.h, change:1998-07-30,size:3026b


///////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 1998 by Jörg König 
// All rights reserved 
// 
// This file is part of the completely free tetris clone "CGTetris". 
// 
// This is free software. 
// You may redistribute it by any means providing it is not sold for profit 
// without the authors written consent. 
// 
// No warrantee of any kind, expressed or implied, is included with this 
// software; use at your own risk, responsibility for damages (if any) to 
// anyone resulting from the use of this software rests entirely with the 
// user. 
// 
// Send bug reports, bug fixes, enhancements, requests, flames, etc., and 
// I'll try to keep a version up to date.  I can be reached as follows: 
//    J.Koenig@adg.de                 (company site) 
//    Joerg.Koenig@rhein-neckar.de    (private site) 
///////////////////////////////////////////////////////////////////////////// 
 
 
// DirectSound.h: interface for the CDirectSound class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_) 
#define AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
#include <mmsystem.h> 
#include <dsound.h> 
 
#pragma message("linking with Microsoft's DirectSound library ...") 
#pragma comment(lib, "dsound.lib") 
 
class CDirectSound   
{ 
public:		// construction/destruction 
	CDirectSound(); 
	virtual ~CDirectSound(); 
	 
	// If the "pWnd" paramter is NULL, then AfxGetApp()->GetMainWnd() will be used. 
	BOOL	Create(LPCTSTR pszResource, CWnd * pWnd = 0); 
	BOOL	Create(UINT uResourceID, CWnd * pWnd = 0) { 
				return Create(MAKEINTRESOURCE(uResourceID), pWnd); 
			} 
	// Alternativly you can specify the sound by yourself 
	// Note that the class does not copy the entire data ! Instead 
	// a pointer to the given data will be stored ! 
	// You can load an entire WAV file into memory and then call this 
	// Create() method. 
	BOOL	Create(LPVOID pSoundData, CWnd * pWnd = 0); 
 
public:		// operations 
	BOOL			IsValid() const; 
	void			Play(DWORD dwStartPosition = 0, BOOL bLoop = FALSE); 
	void			Stop(); 
	void			Pause(); 
	void			Continue(); 
	CDirectSound &	EnableSound(BOOL bEnable = TRUE) { 
						m_bEnabled = bEnable; 
						if( ! bEnable ) 
							Stop(); 
						return * this; 
					} 
	BOOL			IsEnabled() const { return m_bEnabled; } 
 
protected:	// implementation 
	BOOL SetSoundData(LPVOID pSoundData, DWORD dwSoundSize); 
	BOOL CreateSoundBuffer(WAVEFORMATEX * pcmwf); 
	BOOL GetWaveData(void * pRes, WAVEFORMATEX * & pWaveHeader, void * & pbWaveData, DWORD & cbWaveSize); 
 
private:	// data member 
	LPVOID m_pTheSound; 
	DWORD m_dwTheSound; 
	LPDIRECTSOUNDBUFFER m_pDsb; 
	BOOL m_bEnabled; 
	static LPDIRECTSOUND m_lpDirectSound; 
	static DWORD m_dwInstances; 
}; 
 
#endif // !defined(AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_)