|
发表于 2010-10-18 16:23:00
|
显示全部楼层
Re:音乐文件是否可以释放?
这是我Sound类的销毁函数:
void CSoundWave: estroy()
{
if (m_bPlay)
{
m_pDSoundBuffer->Release();
m_pDirectSound = NULL;
m_pDSoundBuffer = NULL;
}
// 释放内存空间
if (m_pData != NULL)
{
LocalUnlock(m_hData);
m_pData = NULL;
}
if (m_hData != NULL)
{
GlobalFree(m_hData);
m_hData = NULL;
}
}
头文件:
class DLL_EXPT CSoundWave
{
public:
CSoundWave(HWND hWnd, bool bRepeat=false, DWORD delay=0);
~CSoundWave();
void Destroy();
bool Open(const char* pFileName);
bool Play();
void Pause();
void Stop();
void SetVolume(long lVolume);
long GetVolume();
DWORD GetCurrentPosition();
DWORD GetFrequency();
void SetFrequency(DWORD lFrequency);
long GetPan();
void SetPan(long lPan);
private:
HWND m_hWnd;
LPDIRECTSOUND m_pDirectSound;
LPDIRECTSOUNDBUFFER m_pDSoundBuffer;
bool m_bOpen; // 是否已打开
bool m_bPlay; // 是否在播放
bool m_bRepeat; // 是否循环
bool m_bPause; // 是否暂停
BYTE* m_pData; // 音频数据
HGLOBAL m_hData; // 内存句柄
DWORD m_DataSize; // 音频数据文件的长度
WAVEFORMATEX m_pFormat; // 音频数据结构
DWORD m_Delay; // 播放完毕后的延时
DWORD m_LastTime; // 计时器
}; |
|