www.pudn.com > WavePlayer_Final.rar > WavePlayerDlg.h


// WavePlayerDlg.h : header file 
// 
struct WaveFileHead 
{  	 
	char riff_id[4+1];		  // "RIFF"	 
	int size0;				  // 波形块的大小 
	char wave_fmt[8+1];	  // "wave" and "fmt" 
	int size1;		  // 格式块大小 
	short  fmttag;		  // 波形编码格式 
	short  channel;	  // 波形文件数据中的通道数 
int sampl;				  // 波形文件的采样率 
	int bytepersecblockalign; // 平均每秒波形音频所需要的记录的字节数 
	short  blockalign;    // 一个采样所需要的字节数 
	short  bitpersamples; // 声音文件数据的每个采样的位数 
	char data[4+1];             // "data" 
	int datasize;             // samples; 
}; 
 
#if !defined(AFX_WAVEPLAYERDLG_H__11C3CE58_7592_4611_B656_03F59DC1383B__INCLUDED_) 
#define AFX_WAVEPLAYERDLG_H__11C3CE58_7592_4611_B656_03F59DC1383B__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
///////////////////////////////////////////////////////////////////////////// 
// CWavePlayerDlg dialog 
// 主对话框类,框架由向导生成 
#include "mybutton.h" //自己的按钮类的头文件 
 
class CWavePlayerDlg : public CDialog 
{ 
// Construction 
public: 
	CWavePlayerDlg(CWnd* pParent = NULL);	// standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(CWavePlayerDlg) 用变量关联对话框上的控件 
	enum { IDD = IDD_WAVEPLAYER_DIALOG }; 
	CMyButton	m_bnOK; 
	CMyButton	m_bnPause; 
	CSliderCtrl	m_slProgress; 
	CMyButton	m_bnStop; 
	CMyButton	m_bnPlay; 
	CMyButton	m_bnOpen; 
	CMyButton	m_bnDraw; 
	CMyButton	m_bnAbout; 
	CListBox	m_lWaveInfo; 
	//}}AFX_DATA 
 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CWavePlayerDlg) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	HICON m_hIcon;						//图标 
	CString m_sFile;					//从声音文件的文件名 
	WaveFileHead m_WaveFileHead;		//声音文件头结构 
	MCIDEVICEID m_wDeviceID;			//mci的设备ID 
	DWORD m_dwPosition,m_dwLength;		//当前播放位置和声音的总长度 
	LPVOID m_pBuffer;					//指向存放波形数据的内存的指针 
	LPVOID m_pFreq;						//指向用于存放经FFT后的频谱 
	UINT m_nFreqPoints;					//用于存放FFT的点数 
	BOOL m_bExtended;					//表示窗口是否已为画波形而扩展 
	BOOL m_bPlaying;					//表示是否真在播放 
	CRect m_rcWave;						//波形图所在的矩形 
	CDC m_dcBuffer;						//用于存放波形图像的内存DC 
	CDC m_dcBufferFreq;					//用于存放波形频谱图像的内存DC 
	USHORT m_nMaxValue;					//用于存入波形中的最大值 
	USHORT m_nMaxValueFreq;				//用于存入波形频谱中的最大值 
	float m_fTime;						//用于存入声音文件的时间长度 
 
	void GetInfo();						//用于读文件头 
	void ReadWave();					//用于读声音波形 
	void InitDC(CDC &dc,BOOL bWave); 
										//用于初始化内存DC 
	void DrawWave();					//用于在内存DC中画出波形 
	void DrawEffect();					//用于画出动态效果 
	void DoFFT();						//进行FFT以得出各频率分量 
 
	 
	// Generated message map functions 
	//{{AFX_MSG(CWavePlayerDlg)			各种消息响应 
	virtual BOOL OnInitDialog(); 
	afx_msg void OnPaint(); 
	afx_msg HCURSOR OnQueryDragIcon(); 
	afx_msg void OnOpen(); 
	afx_msg void OnPlay(); 
	afx_msg void OnStop(); 
	afx_msg void OnPause(); 
	afx_msg void OnDestroy(); 
	afx_msg void OnTimer(UINT nIDEvent); 
	afx_msg void OnDrawWave(); 
	afx_msg void OnAbout(); 
	//}}AFX_MSG 
	afx_msg void OnComplete(WPARAM,LPARAM); 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_WAVEPLAYERDLG_H__11C3CE58_7592_4611_B656_03F59DC1383B__INCLUDED_)