📄 audrec.h
字号:
#if !defined(AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_)
#define AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// AudRec.h : header file
//
#include "mmsystem.h"
typedef void (*CALLBACK_DATAWORK)(PBYTE pDateHead, UINT nBytes);
/////////////////////////////////////////////////////////////////////////////
// CAudRec window
// 录音类,
// 在使用前先用Init初始化,指定录音格式和数据处理函数地址,及缓冲区大小
// 数据处理函数形式如下:
// void FunctionName( PBYTE pData, UINT nBytes)
// PBYTE 数据地址指针,BYTE*类型
// nBytes 数据长度,直接处理即可,缓冲区的释放等由类完成
//
/////////////////////////////////////////////////////////////////////////////
class CAudRec : public CWnd
{
// Construction
public:
typedef enum _enum_status
{
ENUM_STATUS_INVALID, // 无效状态
ENUM_STATUS_READY, // 准备就绪
ENUM_STATUS_RECORDING, // 正在录音
ENUM_STATUS_STOPING, // 正在停止
ENUM_STATUS_NUM,
} ENUM_STATUS;
enum
{
TIMER_EVENT_STOPREC = 1, //停止
TIMER_EVENT_NUM,
};
CAudRec();
virtual ~CAudRec();
// Attributes
public:
// Operations
public:
BOOL Record();
void Stop();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAudRec)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL
// Implementation
public:
UINT GetBuffSize();
UINT GetWaveInCount();
BOOL Init( WAVEFORMATEX sRecordFormat,
BOOL IsSaveFile = FALSE,
UINT nBuffSize = 2048,
UINT nDeviceID = WAVE_MAPPER,
HWND hwndParent = NULL,
LPRECT lpRect = NULL,
CALLBACK_DATAWORK proc_CallBack_DataWork = NULL
);
inline ENUM_STATUS GetStatus() { return m_eStatus; }
// Generated message map functions
protected:
LRESULT OnMM_WIM_DATA ( WPARAM wParam, LPARAM lParam );
//{{AFX_MSG(CAudRec)
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void CreateWaveFile();
UINT m_nBuffSize;
UINT m_nBuffNum;
UINT m_nDataQueueNum;
CHAR **m_szAryInData;
WAVEHDR **m_pAryHdr;
BOOL m_bRecording;
HWAVEIN m_hRecord;
HWND m_hwndParent;
UINT m_nDeviceID;
CRect m_rcClient;
BOOL m_bSaveFile;
WAVEFORMATEX m_Format;
ENUM_STATUS m_eStatus;
HMMIO m_hWaveFile;
MMCKINFO m_MMCKInfoParent;
MMCKINFO m_MMCKInfoChild;
CALLBACK_DATAWORK m_funCallBackDataWork;
void StopRec();
void StopAndFreeAll();
void FreeBuffer ();
BOOL AllocateBuffer(UINT dwBufferSize);
BOOL AddInputBufferToQueue( INT nIndex );
void waveErrorMsg( MMRESULT result, LPCTSTR addstr );
void SetRecordFormat(WAVEFORMATEX sFormat);
BOOL SetRelateParaAfterGetWaveFormat();
VOID SetDeviceID( UINT uDeviceID );
//在此建立自己,以便获取消息
BOOL Create( HWND hwndParent, LPRECT lpRect=NULL );
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -