From ca1b982148fbde24b4f78a7cb5e9a4fe5be14dad Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sat, 15 Jun 2013 08:23:21 +0000 Subject: [PATCH] [MMSYS] - Implement audio selection button svn path=/trunk/; revision=59220 --- reactos/dll/cpl/mmsys/CMakeLists.txt | 3 ++- reactos/dll/cpl/mmsys/mmsys.h | 2 +- reactos/dll/cpl/mmsys/sounds.c | 40 ++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/reactos/dll/cpl/mmsys/CMakeLists.txt b/reactos/dll/cpl/mmsys/CMakeLists.txt index f364ca147ae..e1233cc1527 100644 --- a/reactos/dll/cpl/mmsys/CMakeLists.txt +++ b/reactos/dll/cpl/mmsys/CMakeLists.txt @@ -24,7 +24,8 @@ add_importlibs(mmsys setupapi shlwapi ntdll - kernel32) + kernel32 + comdlg32) add_pch(mmsys mmsys.h) add_cd_file(TARGET mmsys DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/cpl/mmsys/mmsys.h b/reactos/dll/cpl/mmsys/mmsys.h index 37b8908dc5e..71417b6ecef 100644 --- a/reactos/dll/cpl/mmsys/mmsys.h +++ b/reactos/dll/cpl/mmsys/mmsys.h @@ -17,7 +17,7 @@ #include #include #include - +#include #include "resource.h" //typedef LONG (CALLBACK *APPLET_PROC)(VOID); diff --git a/reactos/dll/cpl/mmsys/sounds.c b/reactos/dll/cpl/mmsys/sounds.c index 868606e4574..ee7bc8d58ef 100644 --- a/reactos/dll/cpl/mmsys/sounds.c +++ b/reactos/dll/cpl/mmsys/sounds.c @@ -904,6 +904,11 @@ SoundsDlgProc(HWND hwndDlg, WPARAM wParam, LPARAM lParam) { + OPENFILENAMEW ofn; + WCHAR filename[MAX_PATH]; + LPWSTR pFileName; + LRESULT lResult; + switch (uMsg) { case WM_INITDIALOG: @@ -936,6 +941,41 @@ SoundsDlgProc(HWND hwndDlg, { switch (LOWORD(wParam)) { + case IDC_BROWSE_SOUND: + { + ZeroMemory(&ofn, sizeof(OPENFILENAMEW)); + ofn.lStructSize = sizeof(OPENFILENAMEW); + ofn.hwndOwner = hwndDlg; + ofn.lpstrFile = filename; + ofn.lpstrFile[0] = L'\0'; + ofn.nMaxFile = MAX_PATH; + ofn.lpstrFilter = L"Wave Files (*.wav)\0*.wav\0"; //FIXME non-nls + ofn.nFilterIndex = 0; + ofn.lpstrFileTitle = L"Search for new sounds"; //FIXME non-nls + ofn.nMaxFileTitle = wcslen(ofn.lpstrFileTitle); + ofn.lpstrInitialDir = NULL; + ofn.Flags = OFN_FILEMUSTEXIST; + + if (GetOpenFileNameW(&ofn) == TRUE) + { + // FIXME search if list already contains that sound + + // extract file name + pFileName = wcsrchr(filename, L'\\'); + ASSERT(pFileName != NULL); + pFileName++; + + // add to list + lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)pFileName); + if (lResult != CB_ERR) + { + // add path and select item + SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_wcsdup(filename)); + SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETCURSEL, (WPARAM)lResult, (LPARAM)0); + } + } + break; + } case IDC_PLAY_SOUND: { LRESULT lIndex;