「C言語/C++/mcirec」の編集履歴(バックアップ)一覧はこちら

C言語/C++/mcirec - (2014/09/25 (木) 20:13:29) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

|開発環境|Microsoft Visual Studio Express 2013 for Windows Desktop| |実行環境|Microsoft Windows 8.1 (64bit)| |プロジェクトの種類|Visual C++/Win32 プロジェクト| |プロジェクト名|mcirec| |アプリケーションの種類|Windows アプリケーション| |追加のオプション|空のプロジェクト、SDLチェック| #table_zebra(project, #fff, #eee) 参考 -[[入力デバイスによる録音>http://eternalwindows.jp/winmm/wave/wave04.html]] mcirec.cpp #highlight(cpp){{ #pragma comment(lib, "winmm") #include <Windows.h> #include <string> #include "resource.h" using namespace std; // 外部変数 HWND hEdit; HWND hButton; MCIDEVICEID mciId; BOOL rec; // 関数プロトタイプ宣言 INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnOK(HWND hDlg); void SetRec(BOOL b); void OpenRec(); void CloseRec(); //============================================================================== int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc); return 0; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: OnOK(hDlg); break; case IDCANCEL: EndDialog(hDlg, IDCANCEL); break; } break; case WM_INITDIALOG: hEdit = GetDlgItem(hDlg, IDC_EDIT); hButton = GetDlgItem(hDlg, IDOK); SetWindowText(hEdit, L"sample.wav"); SetRec(FALSE); break; case WM_CLOSE: EndDialog(hDlg, 0); break; case WM_DESTROY: if (rec) { CloseRec(); } break; default: return FALSE; } return TRUE; } void OnOK(HWND hDlg) { if (rec) { CloseRec(); SetRec(FALSE); } else { OpenRec(); SetRec(TRUE); } } void SetRec(BOOL b) { SetWindowText(hButton, b ? L"■停止" : L"●録音"); rec = b; } void OpenRec() { MCI_OPEN_PARMS mciOpen; mciOpen.lpstrElementName = TEXT(""); mciOpen.lpstrDeviceType = LPCTSTR(MCI_DEVTYPE_WAVEFORM_AUDIO); mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT, (DWORD)&mciOpen); mciId = mciOpen.wDeviceID; MCI_WAVE_SET_PARMS mciWave; mciWave.nChannels = 1; mciWave.wBitsPerSample = 8; mciWave.nSamplesPerSec = 8000; mciSendCommand(mciId, MCI_SET, MCI_WAVE_SET_CHANNELS | MCI_WAVE_SET_BITSPERSAMPLE | MCI_WAVE_SET_SAMPLESPERSEC, (DWORD)&mciWave); mciSendCommand(mciId, MCI_RECORD, 0, 0); /* wstring set1 = L"channels 1 samplespersec 8000 bytespersec 8000 alignment 1 bitspersample 8"; mciSendString(L"open new type waveaudio alias Rec", NULL, 0, NULL); mciSendString((wstring(L"set Rec ") + set1).c_str(), NULL, 0, NULL); mciSendString(L"record Rec", NULL, 0, NULL); */ } void CloseRec() { TCHAR fileName[MAX_PATH]; GetWindowText(hEdit, fileName, _countof(fileName)); mciSendCommand(mciId, MCI_STOP, MCI_WAIT, 0); MCI_SAVE_PARMS mciSave; mciSave.lpfilename = fileName; mciSendCommand(mciId, MCI_SAVE, MCI_WAIT | MCI_SAVE_FILE, (DWORD)&mciSave); mciSendCommand(mciId, MCI_CLOSE, 0, 0); /* mciSendString(L"stop Rec", NULL, 0, NULL); mciSendString((wstring(L"save Rec ") + fileName).c_str(), NULL, 0, NULL); mciSendString(L"close Rec", NULL, 0, NULL); */ } }} resource.h #highlight(cpp){{ #define IDD_MAIN 100 #define IDC_STATIC -1 #define IDC_EDIT 1000 }} mcirec.rc #highlight(cpp){{ // resource script #include <windows.h> #include "resource.h" IDD_MAIN DIALOGEX 100, 100, 160, 100 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "mcirec" FONT 9, "MS Pゴシック" BEGIN LTEXT "ファイル名:",IDC_STATIC,10,10,50,15 EDITTEXT IDC_EDIT,60,10,90,15,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,50,50,60,20 END }}
|開発環境|Microsoft Visual Studio Express 2013 for Windows Desktop| |実行環境|Microsoft Windows 8.1 (64bit)| |プロジェクトの種類|Visual C++/Win32 プロジェクト| |プロジェクト名|mcirec| |アプリケーションの種類|Windows アプリケーション| |追加のオプション|空のプロジェクト、SDLチェック| #table_zebra(project, #fff, #eee) 参考 -[[入力デバイスによる録音>http://eternalwindows.jp/winmm/wave/wave04.html]] mcirec.cpp #highlight(cpp){{ #pragma comment(lib, "winmm") #include <Windows.h> #include <string> #include "resource.h" using namespace std; #define IDT_TIMER1 1 // 外部変数 HWND hButton; BOOL rec; MCIDEVICEID mciId; // 関数プロトタイプ宣言 INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnOK(HWND hDlg); void SetRec(BOOL b); void OpenRec(HWND hDlg); void CloseRec(HWND hDlg); //============================================================================== int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc); return 0; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_TIMER: { TCHAR stat[256]; mciSendString(L"status Rec position", stat, _countof(stat), NULL); SetDlgItemText(hDlg, IDC_STATUS, stat); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: OnOK(hDlg); break; case IDCANCEL: EndDialog(hDlg, IDCANCEL); break; } break; case WM_INITDIALOG: hButton = GetDlgItem(hDlg, IDOK); SetDlgItemText(hDlg, IDC_EDIT, L"sample.wav"); SetRec(FALSE); break; case WM_CLOSE: EndDialog(hDlg, 0); break; case WM_DESTROY: if (rec) { CloseRec(hDlg); } break; default: return FALSE; } return TRUE; } void OnOK(HWND hDlg) { if (rec) { CloseRec(hDlg); SetRec(FALSE); } else { OpenRec(hDlg); SetRec(TRUE); } } void SetRec(BOOL b) { SetWindowText(hButton, b ? L"■停止" : L"●録音"); rec = b; } void OpenRec(HWND hDlg) { wstring set1 = L"channels 1 samplespersec 8000 bytespersec 8000 alignment 1 bitspersample 8"; mciSendString(L"open new type waveaudio alias Rec", NULL, 0, NULL); mciSendString((wstring(L"set Rec ") + set1).c_str(), NULL, 0, NULL); mciSendString(L"record Rec", NULL, 0, NULL); SetTimer(hDlg, IDT_TIMER1, 100, NULL); /* MCI_OPEN_PARMS mciOpen; mciOpen.lpstrElementName = TEXT(""); mciOpen.lpstrDeviceType = LPCTSTR(MCI_DEVTYPE_WAVEFORM_AUDIO); mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT, (DWORD)&mciOpen); mciId = mciOpen.wDeviceID; MCI_WAVE_SET_PARMS mciWave; mciWave.nChannels = 1; mciWave.wBitsPerSample = 8; mciWave.nSamplesPerSec = 8000; mciSendCommand(mciId, MCI_SET, MCI_WAVE_SET_CHANNELS | MCI_WAVE_SET_BITSPERSAMPLE | MCI_WAVE_SET_SAMPLESPERSEC, (DWORD)&mciWave); mciSendCommand(mciId, MCI_RECORD, 0, 0); */ } void CloseRec(HWND hDlg) { KillTimer(hDlg, IDT_TIMER1); TCHAR fileName[MAX_PATH]; GetDlgItemText(hDlg, IDC_EDIT, fileName, _countof(fileName)); mciSendString(L"stop Rec", NULL, 0, NULL); mciSendString((wstring(L"save Rec ") + fileName).c_str(), NULL, 0, NULL); mciSendString(L"close Rec", NULL, 0, NULL); /* mciSendCommand(mciId, MCI_STOP, MCI_WAIT, 0); MCI_SAVE_PARMS mciSave; mciSave.lpfilename = fileName; mciSendCommand(mciId, MCI_SAVE, MCI_WAIT | MCI_SAVE_FILE, (DWORD)&mciSave); mciSendCommand(mciId, MCI_CLOSE, 0, 0); */ } }} resource.h #highlight(cpp){{ #define IDD_MAIN 100 #define IDC_STATIC -1 #define IDC_EDIT 1000 #define IDC_STATUS 1001 }} mcirec.rc #highlight(cpp){{ // resource script #include <windows.h> #include "resource.h" IDD_MAIN DIALOGEX 100, 100, 160, 100 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "mcirec" FONT 9, "MS Pゴシック" BEGIN LTEXT "ファイル名:",IDC_STATIC,10,10,50,15 EDITTEXT IDC_EDIT,60,10,90,15,ES_AUTOHSCROLL LTEXT "", IDC_STATUS, 60, 30, 90, 15 DEFPUSHBUTTON "OK", IDOK, 50, 50, 60, 20 END }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: