From f34438b93ea2e86f62cdcbd8cd92dc76f06f4ea9 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Sun, 29 Jun 2008 10:13:55 +0000 Subject: [PATCH] - Small implement "Audio" dialog - Add setupapi.lib to rbuild-file - Return ERROR_DI_DO_DEFAULT in MediaClassInstaller function svn path=/trunk/; revision=34183 --- reactos/dll/cpl/mmsys/audio.c | 77 ++++++++++++++++++++++++++++++ reactos/dll/cpl/mmsys/mmsys.c | 26 +++++----- reactos/dll/cpl/mmsys/mmsys.rbuild | 1 + 3 files changed, 90 insertions(+), 14 deletions(-) diff --git a/reactos/dll/cpl/mmsys/audio.c b/reactos/dll/cpl/mmsys/audio.c index e29066f4a26..6fff61406ae 100644 --- a/reactos/dll/cpl/mmsys/audio.c +++ b/reactos/dll/cpl/mmsys/audio.c @@ -16,6 +16,79 @@ #include "mmsys.h" #include "resource.h" + +VOID +InitAudioDlg(HWND hwnd) +{ + WAVEOUTCAPS waveOutputPaps; + WAVEINCAPS waveInputPaps; + MIDIOUTCAPS midiOutCaps; + UINT DevsNum; + UINT uIndex; + HWND hCB; + LRESULT Res; + + // Init sound playback devices list + hCB = GetDlgItem(hwnd, IDC_DEVICE_PLAY_LIST); + + DevsNum = waveOutGetNumDevs(); + if (DevsNum < 1) return; + + for (uIndex = 0; uIndex < DevsNum; uIndex++) + { + if (waveOutGetDevCaps(uIndex, &waveOutputPaps, sizeof(waveOutputPaps))) + continue; + + Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) waveOutputPaps.szPname); + + if (CB_ERR != Res) + { + // TODO: Getting default device + SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0); + } + } + + // Init sound recording devices list + hCB = GetDlgItem(hwnd, IDC_DEVICE_REC_LIST); + + DevsNum = waveInGetNumDevs(); + if (DevsNum < 1) return; + + for (uIndex = 0; uIndex < DevsNum; uIndex++) + { + if (waveInGetDevCaps(uIndex, &waveInputPaps, sizeof(waveInputPaps))) + continue; + + Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) waveInputPaps.szPname); + + if (CB_ERR != Res) + { + // TODO: Getting default device + SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0); + } + } + + // Init MIDI devices list + hCB = GetDlgItem(hwnd, IDC_DEVICE_MIDI_LIST); + + DevsNum = midiOutGetNumDevs(); + if (DevsNum < 1) return; + + for (uIndex = 0; uIndex < DevsNum; uIndex++) + { + if (midiOutGetDevCaps(uIndex, &midiOutCaps, sizeof(midiOutCaps))) + continue; + + Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) midiOutCaps.szPname); + + if (CB_ERR != Res) + { + // TODO: Getting default device + SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0); + } + } +} + /* Audio property page dialog callback */ INT_PTR CALLBACK AudioDlgProc(HWND hwndDlg, @@ -46,6 +119,10 @@ AudioDlgProc(HWND hwndDlg, EnableWindow(GetDlgItem(hwndDlg, IDC_VOLUME3_BTN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_ADV3_BTN), FALSE); } + else + { + InitAudioDlg(hwndDlg); + } } break; } diff --git a/reactos/dll/cpl/mmsys/mmsys.c b/reactos/dll/cpl/mmsys/mmsys.c index d1ba135a695..39bb685ba3e 100644 --- a/reactos/dll/cpl/mmsys/mmsys.c +++ b/reactos/dll/cpl/mmsys/mmsys.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "mmsys.h" @@ -34,7 +35,7 @@ DeviceCreateHardwarePageEx(HWND hWndParent, UINT uNumberOfGuids, HWPAGE_DISPLAYMODE DisplayMode); -#define NUM_APPLETS (1) +#define NUM_APPLETS (1) HINSTANCE hApplet = 0; @@ -157,43 +158,43 @@ ShowFullControlPanel(HWND hwnd, DWORD MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD MMSYS_RemoveDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD MMSYS_AllowInstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD MMSYS_SelectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD MMSYS_DetectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD MMSYS_SelectBestCompatDRV(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData) { - return 0x0; + return ERROR_DI_DO_DEFAULT; } DWORD WINAPI -MediaClassInstaller(DI_FUNCTION diFunction, - HDEVINFO hDevInfo, - PSP_DEVINFO_DATA pspDevInfoData) +MediaClassInstaller(IN DI_FUNCTION diFunction, + IN HDEVINFO hDevInfo, + IN PSP_DEVINFO_DATA pspDevInfoData OPTIONAL) { switch (diFunction) { @@ -210,10 +211,7 @@ MediaClassInstaller(DI_FUNCTION diFunction, case DIF_SELECTBESTCOMPATDRV: return MMSYS_SelectBestCompatDRV(hDevInfo, pspDevInfoData); default: - { - DPRINT1("MediaClassInstaller() not supported function\n"); - return 0x0; - } + return ERROR_DI_DO_DEFAULT; } } diff --git a/reactos/dll/cpl/mmsys/mmsys.rbuild b/reactos/dll/cpl/mmsys/mmsys.rbuild index c0f5db7745e..647c5bb230e 100644 --- a/reactos/dll/cpl/mmsys/mmsys.rbuild +++ b/reactos/dll/cpl/mmsys/mmsys.rbuild @@ -14,6 +14,7 @@ winmm advapi32 shell32 + setupapi mmsys.c sounds.c volume.c