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_)