📄 record3.c
字号:
/*----------------------------------------
RECORD3.C -- Waveform Audio Recorder
(c) Charles Petzold, 1998
----------------------------------------*/
#include <windows.h>
#include "..\\record1\\resource.h"
BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;
TCHAR szAppName [] = TEXT ("Record3") ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
if (-1 == DialogBox (hInstance, TEXT ("Record"), NULL, DlgProc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
}
return 0 ;
}
BOOL mciExecute (LPCTSTR szCommand)
{
MCIERROR error ;
TCHAR szErrorStr [1024] ;
if (error = mciSendString (szCommand, NULL, 0, NULL))
{
mciGetErrorString (error, szErrorStr,
sizeof (szErrorStr) / sizeof (TCHAR)) ;
MessageBeep (MB_ICONEXCLAMATION) ;
MessageBox (NULL, szErrorStr, TEXT ("MCI Error"),
MB_OK | MB_ICONEXCLAMATION) ;
}
return error == 0 ;
}
BOOL CALLBACK DlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static BOOL bRecording, bPlaying, bPaused ;
switch (message)
{
case WM_COMMAND:
switch (wParam)
{
case IDC_RECORD_BEG:
// Delete existing waveform file
DeleteFile (TEXT ("record3.wav")) ;
// Open waveform audio and record
if (!mciExecute (TEXT ("open new type waveaudio alias mysound")))
return TRUE ;
mciExecute (TEXT ("record mysound")) ;
// Enable and disable buttons
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_BEG), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_END), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_BEG), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_PAUSE), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_END), FALSE);
SetFocus (GetDlgItem (hwnd, IDC_RECORD_END)) ;
bRecording = TRUE ;
return TRUE ;
case IDC_RECORD_END:
// Stop, save, and close recording
mciExecute (TEXT ("stop mysound")) ;
mciExecute (TEXT ("save mysound record3.wav")) ;
mciExecute (TEXT ("close mysound")) ;
// Enable and disable buttons
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_BEG), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_END), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_BEG), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_PAUSE), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_END), FALSE);
SetFocus (GetDlgItem (hwnd, IDC_PLAY_BEG)) ;
bRecording = FALSE ;
return TRUE ;
case IDC_PLAY_BEG:
// Open waveform audio and play
if (!mciExecute (TEXT ("open record3.wav alias mysound")))
return TRUE ;
mciExecute (TEXT ("play mysound")) ;
// Enable and disable buttons
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_BEG), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_END), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_BEG), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_PAUSE), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_END), TRUE) ;
SetFocus (GetDlgItem (hwnd, IDC_PLAY_END)) ;
bPlaying = TRUE ;
return TRUE ;
case IDC_PLAY_PAUSE:
if (!bPaused)
// Pause the play
{
mciExecute (TEXT ("pause mysound")) ;
SetDlgItemText (hwnd, IDC_PLAY_PAUSE, TEXT ("Resume")) ;
bPaused = TRUE ;
}
else
// Begin playing again
{
mciExecute (TEXT ("play mysound")) ;
SetDlgItemText (hwnd, IDC_PLAY_PAUSE, TEXT ("Pause")) ;
bPaused = FALSE ;
}
return TRUE ;
case IDC_PLAY_END:
// Stop and close
mciExecute (TEXT ("stop mysound")) ;
mciExecute (TEXT ("close mysound")) ;
// Enable and disable buttons
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_BEG), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_RECORD_END), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_BEG), TRUE) ;
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_PAUSE), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_PLAY_END), FALSE);
SetFocus (GetDlgItem (hwnd, IDC_PLAY_BEG)) ;
bPlaying = FALSE ;
bPaused = FALSE ;
return TRUE ;
}
break ;
case WM_SYSCOMMAND:
switch (wParam)
{
case SC_CLOSE:
if (bRecording)
SendMessage (hwnd, WM_COMMAND, IDC_RECORD_END, 0L);
if (bPlaying)
SendMessage (hwnd, WM_COMMAND, IDC_PLAY_END, 0L) ;
EndDialog (hwnd, 0) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -