WAVEDLG.CPP
上传用户:chinamans
上传日期:2013-03-17
资源大小:202k
文件大小:5k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. // wavedlg.cpp : implementation file
  2. // (c) Dialogic corp 1995, 1996
  3. #include "stdafx.h"
  4. //#include "talker32.h"
  5. #include "resource.h"
  6. #include "wavedlg.h"
  7. #include <mmsystem.h>
  8. #include <mmreg.h>
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char BASED_CODE THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CWaveDlg dialog
  15. CWaveDlg::CWaveDlg(CWnd* pParent /*=NULL*/)
  16. : CDialog(CWaveDlg::IDD, pParent)
  17. {
  18. //{{AFX_DATA_INIT(CWaveDlg)
  19. m_csFormat = _T("");
  20. m_nPlayFile = -1;
  21. m_csCustom = _T("");
  22. m_nCustom = 0;
  23. //}}AFX_DATA_INIT
  24. }
  25. void CWaveDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CWaveDlg)
  29. DDX_Control(pDX, IDC_PLAYFORMAT, m_btnPlayFormat);
  30. DDX_Control(pDX, IDC_FORMAT, m_ctlFormat);
  31. DDX_CBString(pDX, IDC_FORMAT, m_csFormat);
  32. DDX_Radio(pDX, IDC_PLAYFORMAT, m_nPlayFile);
  33. //}}AFX_DATA_MAP
  34. }
  35. BEGIN_MESSAGE_MAP(CWaveDlg, CDialog)
  36. //{{AFX_MSG_MAP(CWaveDlg)
  37. ON_BN_CLICKED(IDC_PLAYFORMAT, OnPlayformat)
  38. ON_CBN_SELCHANGE(IDC_FORMAT, OnSelchangeFormat)
  39. ON_BN_CLICKED(IDC_RECFORMAT, OnRecformat)
  40. //}}AFX_MSG_MAP
  41. END_MESSAGE_MAP()
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CWaveDlg message handlers
  44. BOOL CWaveDlg::OnInitDialog() 
  45. {
  46. CDialog::OnInitDialog();
  47. m_ctlFormat.AddString("1. ADPCM 4 bit 6 kHz");
  48. m_ctlFormat.AddString("2. ADPCM 4 bit 8 kHz");
  49. m_ctlFormat.AddString("3. MULAW 8 bit 6 kHz");
  50. m_ctlFormat.AddString("4. MULAW 8 bit 8 kHz");
  51. m_ctlFormat.AddString("5. MULAW 8 bit 11 kHz");
  52. m_ctlFormat.AddString("6.  ALAW 8 bit 6 kHz");
  53. m_ctlFormat.AddString("7.  ALAW 8 bit 8 kHz");
  54. m_ctlFormat.AddString("8.  ALAW 8 bit 11 kHz");
  55. m_ctlFormat.AddString("9.   PCM 8 bit 6 kHz");
  56. m_ctlFormat.AddString("10.  PCM 8 bit 8 kHz");
  57. m_ctlFormat.AddString("11.  PCM 8 bit 11 kHz");
  58. GetPlayFormatID(); // get the format ID for play file
  59. m_btnPlayFormat.SetCheck(1);
  60. OnPlayformat();
  61. return TRUE;  // return TRUE unless you set the focus to a control
  62.               // EXCEPTION: OCX Property Pages should return FALSE
  63. }
  64. void CWaveDlg::OnPlayformat() 
  65. {
  66. int nPlay = m_btnPlayFormat.GetCheck();
  67. if(nPlay) 
  68. {
  69. if(!m_csCustom.IsEmpty()) 
  70. m_nCustom = m_nPlayFileFormatID = m_ctlFormat.AddString(m_csCustom);
  71. }
  72. else if(m_nCustom)m_ctlFormat.DeleteString(m_nCustom); // do not show
  73. m_ctlFormat.SetCurSel(nPlay ? m_nPlayFileFormatID : m_nFormatID);
  74. m_ctlFormat.EnableWindow(!nPlay);
  75. }
  76. void CWaveDlg::OnRecformat() 
  77. {
  78. OnPlayformat();
  79. }
  80. void CWaveDlg::OnSelchangeFormat() 
  81. {
  82. m_nFormatID = m_ctlFormat.GetCurSel();
  83. }
  84. // find out the format of the file selected to play
  85. void CWaveDlg::GetPlayFormatID()
  86. {
  87. WAVEFORMATEX WF;
  88. HMMIO hmmH;      
  89. MMCKINFO mmParent, mmSubchunk;
  90. DWORD dwFmtSize;
  91. int nBase=0, nMax=0, nOffset = -1;
  92. BOOL bWrong = FALSE;
  93. m_nPlayFileFormatID = 11;
  94.     // Open wave file 
  95. if(m_csFileName.IsEmpty()) hmmH = 0;
  96.     else hmmH = mmioOpen((LPSTR)(LPCTSTR)m_csFileName, NULL, MMIO_READ); //| MMIO_ALLOCBUF);
  97.     if(!hmmH) 
  98. {
  99.      m_csCustom = "File not found";
  100.      return;
  101. }
  102.     
  103.     // Locate a 慠IFF