PlatformView.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:5k
源码类别:

控制台编程

开发平台:

C/C++

  1. // PlatformView.h : CPlatformView 类的接口
  2. //
  3. #pragma once
  4. #include "afxwin.h"
  5. #include "wavedisplay.h"
  6. #include "WaveConvertor.h"
  7. #include "FileWaveOut.h"
  8. #include "BufferWaveOut.h"
  9. #include "WaveConvertor.h"
  10. #include "SettingDlg.h"
  11. #include "SmallFileWaveOut.h"
  12. #include "LargeFileWaveOut.h"
  13. #include "Speech.h"
  14. #include "SectionDlg.h"
  15. #include "ClusterDlg.h"
  16. #include "AddModelDlg.h"
  17. #include "TrainModelDlg.h"
  18. #include "DemoHMMDlg.h"
  19. //////////////////////////////////////////////////////////////////////////
  20. // 定义显示类型
  21. typedef enum _displayType
  22. {
  23. DisplayWave = 0, // 显示时域波形
  24. DisplayZero, // 显示短时平均过零率
  25. DisplayPower, // 显示短时能量
  26. DisplayVibration, // 显示平均振幅
  27. DisplaySpectrum, // 显示功率谱
  28. DisplayLogSpectrum, // 显示对数功率谱
  29. DisplayCepstrum, // 显示倒谱
  30. DisplayAfterWindow, // 显示加窗后的时域波形
  31. DisplayBeforeWindow // 显示加窗前的时域波形
  32. } DisplayType;
  33. class CPlatformView : public CFormView
  34. {
  35. protected: // 仅从序列化创建
  36. CPlatformView();
  37. DECLARE_DYNCREATE(CPlatformView)
  38. public:
  39. enum{ IDD = IDD_PLATFORM_FORM };
  40. // 属性
  41. public:
  42. CPlatformDoc* GetDocument() const;
  43. // 操作
  44. public:
  45. // 重写
  46. public:
  47. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  48. protected:
  49. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
  50. virtual void OnInitialUpdate(); // 构造后第一次调用
  51. // 实现
  52. public:
  53. virtual ~CPlatformView();
  54. #ifdef _DEBUG
  55. virtual void AssertValid() const;
  56. virtual void Dump(CDumpContext& dc) const;
  57. #endif
  58. protected:
  59. // 生成的消息映射函数
  60. protected:
  61. DECLARE_MESSAGE_MAP()
  62. public:
  63. //////////////////////////////////////////////////////////////////////////
  64. // 更改显示区域大小
  65. afx_msg void OnSize(UINT nType, int cx, int cy);
  66. public:
  67. afx_msg void OnFileOpen();
  68. afx_msg void OnBnClickedControlLoad();
  69. private:
  70. // 波形显示区域
  71. CWaveDisplay m_ctlDisplay;
  72. // 按帧播放文件
  73. CSmallFileWaveOut m_fileWaveOut;
  74. // 显示方式类型
  75. DisplayType m_displayType;
  76. // 显示参数设定窗口
  77. CSettingDlg m_dlgSetting;
  78. // 端点检测显示窗口
  79. CSectionDlg m_dlgSection;
  80. // VQ显示窗口
  81. CClusterDlg m_dlgCluster;
  82. // 当前正在分析的文件路径
  83. CString m_strWaveFile;
  84. private:
  85. // 每帧所包含样本数
  86. UINT m_nFrameSize;
  87. // 当前正在播放的帧编号
  88. UINT m_nCurrentFrame;
  89. // 总帧数
  90. UINT m_nTotalFrames;
  91. public:
  92. afx_msg void OnDisplayOption();
  93. afx_msg void OnBnClickedControlPrevious();
  94. afx_msg void OnBnClickedControlNext();
  95. afx_msg void OnBnClickedControlStop();
  96. afx_msg void OnBnClickedControlPlay();
  97. afx_msg void OnDisplayWave();
  98. afx_msg void OnDisplayZero();
  99. afx_msg void OnDisplayPower();
  100. afx_msg void OnDisplayVibration();
  101. afx_msg void OnUpdateDisplayWave(CCmdUI *pCmdUI);
  102. afx_msg void OnUpdateDisplayZero(CCmdUI *pCmdUI);
  103. afx_msg void OnUpdateDisplayPower(CCmdUI *pCmdUI);
  104. afx_msg void OnUpdateDisplayVibration(CCmdUI *pCmdUI);
  105. private:
  106. //////////////////////////////////////////////////////////////////////////
  107. // 是否允许使用wav控制功能
  108. void EnableControl(BOOL bEnabled = TRUE);
  109. //////////////////////////////////////////////////////////////////////////
  110. // 按帧查看是否可用
  111. void EnableFrameControl(
  112. BOOL bPre = TRUE, // 上一帧 
  113. BOOL bNext = TRUE // 下一帧
  114. );
  115. //////////////////////////////////////////////////////////////////////////
  116. // 显示指定帧或全部裸音频数据的相应波形
  117. void UpdateDisplay(
  118. BOOL bDisplayByFrame = FALSE, // 是否按帧显示
  119. unsigned int nFromFrame = 0, // 起始帧
  120. unsigned int nToFrame = 0 // 结束帧
  121. );
  122. //////////////////////////////////////////////////////////////////////////
  123. // 更新帧数信息
  124. void UpdateFrameControl(
  125. BOOL bReset = FALSE // 是否重新计算帧数
  126. );
  127. public:
  128. afx_msg void OnDisplayZoomin();
  129. afx_msg void OnDisplayZoomout();
  130. afx_msg void OnDisplaySpectrum();
  131. afx_msg void OnUpdateDisplaySpectrum(CCmdUI *pCmdUI);
  132. afx_msg void OnDisplayLogspectrum();
  133. afx_msg void OnUpdateDisplayLogspectrum(CCmdUI *pCmdUI);
  134. afx_msg void OnDisplayCepstrum();
  135. afx_msg void OnUpdateDisplayCepstrum(CCmdUI *pCmdUI);
  136. afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
  137. afx_msg void OnBnClickedControlDisplaywaveAll();
  138. private:
  139. // 显示波形的相关信息
  140. CString m_strResult;
  141. public:
  142. // 显示波形的相应信息
  143. void UpdateResult(double* pData, unsigned int nCount, DisplayType disType);
  144. afx_msg void OnSectionEnd();
  145. afx_msg void OnSectionSy();
  146. // 显示VQ结果
  147. afx_msg void OnVqKmeans();
  148. // 添加HMM模型
  149. afx_msg void OnHmmAddmodel();
  150. afx_msg void OnHmmTrainmodel();
  151. afx_msg void OnHmmDemo();
  152. afx_msg void OnDisplayAfterwindow();
  153. afx_msg void OnUpdateDisplayBeforewindow(CCmdUI *pCmdUI);
  154. afx_msg void OnUpdateDisplayAfterwindow(CCmdUI *pCmdUI);
  155. afx_msg void OnDisplayBeforewindow();
  156. };
  157. #ifndef _DEBUG  // PlatformView.cpp 的调试版本
  158. inline CPlatformDoc* CPlatformView::GetDocument() const
  159.    { return reinterpret_cast<CPlatformDoc*>(m_pDocument); }
  160. #endif