📄 themci.h
字号:
// TheMci.h : Declaration of the CTheMci
// Marius C.
//////////////////////////////////////////////////////////////////////////
#ifndef __THEMCI_H_
#define __THEMCI_H_
#include "resource.h" // main symbols
#include <mmsystem.h>
//
#pragma comment(linker,"/defaultlib:Winmm.lib")
/////////////////////////////////////////////////////////////////////////////
// CTheMci
class CTheMci
{
public:
CTheMci():m_bDestructor(FALSE),
m_active(0),m_nBufs(3),
m_bufSize(65535),m_bMode(0)
{
m_pWav[0] = 0;
m_pWav[1] = 0;
m_pWav[2] = 0;
}
void Close()
{
if(m_hwOut == 0)
return;
TRACE("MCi::Close(){\r\n");
int ret;
Sleep(400);
ret = waveOutReset(m_hwOut);
Sleep(600);
ret = waveOutClose(m_hwOut);
for(int i=0;i<3;i++)
{
if(m_pWav[i])
{
delete[] m_pWav[i]->lpData;
delete m_pWav[i];
}
m_pWav[i] = 0;
}
::CloseHandle(m_hEvent);
TRACE("MCi::Close()}\r\n");
}
~CTheMci()
{
for(int i=0;i<3;i++)
{
if(m_pWav[i])
{
delete[] m_pWav[i]->lpData;
delete m_pWav[i];
}
}
}
BYTE* SingAndRetNextBuff(DWORD* pBytesToPlay);
BYTE* GetBufferPtr(DWORD* nLength);
BOOL Open(DWORD nFreq,DWORD nChannels, HWND notyMsg,int nMsg,
DWORD nSampleLength, int buffSize, int nBuffers);
static void CALLBACK CallBackNoty(HWAVEOUT hWo, UINT uMsg,
DWORD dwInstance,
DWORD dwwParam,
DWORD dwlParam);
private:
////
static HANDLE m_hEvent;
HANDLE m_hthread;
WAVEHDR* m_pWav[3];
int m_active; /*0-3*/
int m_nBufs;
WAVEFORMATEX m_fex;
HWAVEOUT m_hwOut;
int m_bufSize;
BOOL m_bDestructor;
BOOL m_bMode;
int m_startGap;
int m_length;
};
#endif //__THEMCI_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -