snd.cpp
上传用户:wen82zi81
上传日期:2007-01-03
资源大小:40k
文件大小:5k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. // snd.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "snd.h"
  5. #include "MainFrm.h"
  6. #include "sndDoc.h"
  7. #include "sndView.h"
  8. // added for the Sound 
  9. #include "soundin.h"
  10. #include "soundout.h"
  11. #include "singenerator.h"
  12. #include "geneparams.h"
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CSndApp
  20. BEGIN_MESSAGE_MAP(CSndApp, CWinApp)
  21. //{{AFX_MSG_MAP(CSndApp)
  22. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  23. ON_COMMAND(IDR_SOUND_OUT_START, OnSoundOutStart)
  24. ON_COMMAND(IDR_SOUND_IN_STOP, OnSoundInStop)
  25. ON_COMMAND(IDR_SOUND_IN_START, OnSoundInStart)
  26. ON_COMMAND(IDR_SOUND_OUT_STOP, OnSoundOutStop)
  27. ON_COMMAND(ID_GENE_PARAMS, OnGeneParams)
  28. //}}AFX_MSG_MAP
  29. // Standard file based document commands
  30. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  31. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  32. // Standard print setup command
  33. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  34. END_MESSAGE_MAP()
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CSndApp construction
  37. CSndApp::CSndApp()
  38. {
  39. // TODO: add construction code here,
  40. // Place all significant initialization in InitInstance
  41. }
  42. /////////////////////////////////////////////////////////////////////////////
  43. // The one and only CSndApp object
  44. CSndApp theApp;
  45. // added for the Sound 
  46. CSoundIn SoundIn;
  47. CSinGenerator SoundOut;
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CSndApp initialization
  50. BOOL CSndApp::InitInstance()
  51. {
  52. AfxEnableControlContainer();
  53. // Standard initialization
  54. // If you are not using these features and wish to reduce the size
  55. //  of your final executable, you should remove from the following
  56. //  the specific initialization routines you do not need.
  57. #ifdef _AFXDLL
  58. Enable3dControls(); // Call this when using MFC in a shared DLL
  59. #else
  60. Enable3dControlsStatic(); // Call this when linking to MFC statically
  61. #endif
  62. // Change the registry key under which our settings are stored.
  63. // You should modify this string to be something appropriate
  64. // such as the name of your company or organization.
  65. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  66. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  67. // Register the application's document templates.  Document templates
  68. //  serve as the connection between documents, frame windows and views.
  69. CSingleDocTemplate* pDocTemplate;
  70. pDocTemplate = new CSingleDocTemplate(
  71. IDR_MAINFRAME,
  72. RUNTIME_CLASS(CSndDoc),
  73. RUNTIME_CLASS(CMainFrame),       // main SDI frame window
  74. RUNTIME_CLASS(CSndView));
  75. AddDocTemplate(pDocTemplate);
  76. // Parse command line for standard shell commands, DDE, file open
  77. CCommandLineInfo cmdInfo;
  78. ParseCommandLine(cmdInfo);
  79. // Dispatch commands specified on the command line
  80. if (!ProcessShellCommand(cmdInfo))
  81. return FALSE;
  82. // The one and only window has been initialized, so show and update it.
  83. m_pMainWnd->ShowWindow(SW_SHOW);
  84. m_pMainWnd->UpdateWindow();
  85. // added for sound
  86. SoundOut.OpenOutput();
  87. return TRUE;
  88. }
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CAboutDlg dialog used for App About
  91. class CAboutDlg : public CDialog
  92. {
  93. public:
  94. CAboutDlg();
  95. // Dialog Data
  96. //{{AFX_DATA(CAboutDlg)
  97. enum { IDD = IDD_ABOUTBOX };
  98. //}}AFX_DATA
  99. // ClassWizard generated virtual function overrides
  100. //{{AFX_VIRTUAL(CAboutDlg)
  101. protected:
  102. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  103. //}}AFX_VIRTUAL
  104. // Implementation
  105. protected:
  106. //{{AFX_MSG(CAboutDlg)
  107. // No message handlers
  108. //}}AFX_MSG
  109. DECLARE_MESSAGE_MAP()
  110. };
  111. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  112. {
  113. //{{AFX_DATA_INIT(CAboutDlg)
  114. //}}AFX_DATA_INIT
  115. }
  116. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  117. {
  118. CDialog::DoDataExchange(pDX);
  119. //{{AFX_DATA_MAP(CAboutDlg)
  120. //}}AFX_DATA_MAP
  121. }
  122. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  123. //{{AFX_MSG_MAP(CAboutDlg)
  124. // No message handlers
  125. //}}AFX_MSG_MAP
  126. END_MESSAGE_MAP()
  127. // App command to run the dialog
  128. void CSndApp::OnAppAbout()
  129. {
  130. CAboutDlg aboutDlg;
  131. aboutDlg.DoModal();
  132. }
  133. /////////////////////////////////////////////////////////////////////////////
  134. // CSndApp commands
  135. int CSndApp::ExitInstance() 
  136. {
  137.     
  138. SoundIn.CloseMic();
  139. SoundOut.CloseOutput();
  140. return CWinApp::ExitInstance();
  141. }
  142. void CSndApp::OnSoundInStart() 
  143. {
  144. SoundIn.OpenMic();
  145. }
  146. void CSndApp::OnSoundInStop() 
  147. {
  148. SoundIn.CloseMic();
  149. }
  150. void CSndApp::OnSoundOutStart() 
  151. {
  152. SoundOut.OpenOutput();
  153. }
  154. void CSndApp::OnSoundOutStop() 
  155. {
  156. SoundOut.CloseOutput();
  157. }
  158. void CSndApp::OnGeneParams() 
  159. {
  160. CGeneParams GeneDlg;
  161. GeneDlg.m_GeneAmpl = SoundOut.Ampl;
  162. GeneDlg.m_GeneFreq = SoundOut.fo;
  163. if (GeneDlg.DoModal()!=IDCANCEL)
  164. {
  165. SoundOut.SetSinParametres(GeneDlg.m_GeneAmpl,GeneDlg.m_GeneFreq) ;
  166. SoundOut.Restart();
  167. }
  168. }