[SNDVOL32] Move the advanced controls dialog to a separate file and update its title on creation.

This commit is contained in:
Eric Kohl 2019-02-21 22:26:58 +01:00
parent 6accaef3c7
commit 03c3dd5ab0
34 changed files with 300 additions and 58 deletions

View file

@ -1,5 +1,6 @@
list(APPEND SOURCE
advanced.c
dialog.c
misc.c
mixer.c

View file

@ -0,0 +1,100 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Sound Volume Control
* FILE: base/applications/sndvol32/advanced.c
* PROGRAMMERS: Eric Kohl <eric.kohl@reactos.org>
*/
#include "sndvol32.h"
static
VOID
OnInitDialog(
HWND hwndDlg,
PADVANCED_CONTEXT Context)
{
WCHAR szRawTitle[256], szCookedTitle[256];
LPMIXERCONTROL Control = NULL;
UINT ControlCount = 0, Index, i;
/* Set the dialog title */
LoadStringW(hAppInstance, IDS_ADVANCED_CONTROLS, szRawTitle, ARRAYSIZE(szRawTitle));
// swprintf(szCookedTitle, szRawTitle, Context->LineName);
StringCchPrintfW(szCookedTitle, ARRAYSIZE(szCookedTitle), szRawTitle, Context->LineName);
SetWindowTextW(hwndDlg, szCookedTitle);
/* Disable the tone controls */
for (i = IDC_ADV_BASS_LOW; i<= IDC_ADV_TREBLE_SLIDER; i++)
EnableWindow(GetDlgItem(hwndDlg, i), FALSE);
/* Hide the other controls */
for (i = IDC_ADV_OTHER_CONTROLS; i<= IDC_ADV_OTHER_CHECK2; i++)
ShowWindow(GetDlgItem(hwndDlg, i), SW_HIDE);
if (SndMixerQueryControls(Context->Mixer, &ControlCount, Context->Line, &Control))
{
for (Index = 0; Index < ControlCount; Index++)
{
if (Control[Index].dwControlType == MIXERCONTROL_CONTROLTYPE_BASS)
{
for (i = IDC_ADV_BASS_LOW; i<= IDC_ADV_BASS_SLIDER; i++)
EnableWindow(GetDlgItem(hwndDlg, i), TRUE);
}
else if (Control[Index].dwControlType == MIXERCONTROL_CONTROLTYPE_TREBLE)
{
for (i = IDC_ADV_TREBLE_LOW; i<= IDC_ADV_TREBLE_SLIDER; i++)
EnableWindow(GetDlgItem(hwndDlg, i), TRUE);
}
else if (Control[Index].dwControlType != MIXERCONTROL_CONTROLTYPE_VOLUME &&
Control[Index].dwControlType != MIXERCONTROL_CONTROLTYPE_MUTE)
{
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CONTROLS), SW_SHOWNORMAL);
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_TEXT), SW_SHOWNORMAL);
}
}
/* free controls */
HeapFree(GetProcessHeap(), 0, Control);
}
}
INT_PTR
CALLBACK
AdvancedDlgProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PADVANCED_CONTEXT Context;
switch (uMsg)
{
case WM_INITDIALOG:
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam);
Context = (PADVANCED_CONTEXT)((LONG_PTR)lParam);
OnInitDialog(hwndDlg, Context);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hwndDlg, IDOK);
break;
}
break;
case WM_CLOSE:
EndDialog(hwndDlg, IDCANCEL);
break;
}
return FALSE;
}
/* EOF */

View file

@ -25,6 +25,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Сила на звука"
IDS_NOMIXERDEVICES "Не са открити работещи смесителни устройства! Приложението ще се затвори."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -27,6 +27,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Ovládání hlasitosti"
IDS_NOMIXERDEVICES "Nejsou dostupná žádná směšovací zařízení! Aplikace se nyní ukončí."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Lautstärke-Einstellungen"
IDS_NOMIXERDEVICES "Es sind keine aktiven Mixer vorhanden! Die Anwendung wird jetzt beendet."
IDS_SELECT "&Auswählen"
IDS_ADVANCED_CONTROLS "Erweiterte Einstellungen für %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Έλεγχος έντασης"
IDS_NOMIXERDEVICES "There are no active mixer devices available! The application will now exit."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Volume Control"
IDS_NOMIXERDEVICES "There are no active mixer devices available! The application will now exit."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -24,6 +24,10 @@ BEGIN
IDS_SNDVOL32 "Control de volumen"
IDS_NOMIXERDEVICES "¡No hay dispositivos mezcladores activos en este momento! \n\
La aplicación se cerrará ahora."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Contrôle du volume"
IDS_NOMIXERDEVICES "Il n'y a pas de périphérique de mixage disponible ! L'application va se terminer."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "בקרת עוצמה"
IDS_NOMIXERDEVICES "אין התקני ערבול פעילים זמינים! היישום יצא עכשיו"
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Hangerõ szabályozó"
IDS_NOMIXERDEVICES "Nincsenek elérhetõ keverõ eszközök. A program kilép."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Kontrol Volume"
IDS_NOMIXERDEVICES "Tidak ada device mixer yang aktif yang tersedia! Aplikasi akan keluar sekarang."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Controllo Volume"
IDS_NOMIXERDEVICES "Non ci sono dispositivi mixer disponibili! Il programma si chiuderà."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "ボリューム コントロール"
IDS_NOMIXERDEVICES "アクティブなミキサーが利用できません ! アプリケーションを終了します。"
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "볼륨 컨트롤"
IDS_NOMIXERDEVICES "사용 가능한 믹서 장치가 없습니다! 이 프로그램은 종료됩니다."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Garso valdiklis"
IDS_NOMIXERDEVICES "Šiuo metu nėra aktyvių garso maišymo įrenginių! Programa darbą baigė."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Volume Control"
IDS_NOMIXERDEVICES "Er zijn geen actieve mixerapparaten beschikbaar! Deze toepassing wordt nu afgesloten."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -21,6 +21,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Volumkontroll"
IDS_NOMIXERDEVICES "Det er ingen aktive mikser enheter tilgjengelig! Programmet vil nå avsluttes."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -29,6 +29,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Regulacja głośności"
IDS_NOMIXERDEVICES "Nie jest dostępne żadne aktywne urządzenie miksujące! Program zostanie zamknięty."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Controle de Volume"
IDS_NOMIXERDEVICES "Não há dispositivos de mixagem disponíveis! O aplicativo irá sair agora."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Reglaj de volum"
IDS_NOMIXERDEVICES "Nu există dispozitive active de mixaj! Aplicația va fi închisă."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Управление громкостью"
IDS_NOMIXERDEVICES "Нет доступных микшерных устройств! Приложение будет завершено."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Ovládanie hlasitosti"
IDS_NOMIXERDEVICES "Nie sú dostupné žiadne zariadenie zmiešavača! Program sa teraz ukončí."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -25,6 +25,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Kontroll Volumi"
IDS_NOMIXERDEVICES "Nuk ka pajisje aktive mikseri ne dispozicion! Programi tani do te dale."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Volymkontroll"
IDS_NOMIXERDEVICES "Det finns inga ljudmixningsenheter tillgängliga! Programmet kommer nu att avslutas."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -29,6 +29,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "แผงควบคุมระบบเสียง"
IDS_NOMIXERDEVICES "ไม่พบอุปกรณ์ผสมเสียงใดๆเหลืออยู่เลย! โปรแกรมนี้จะถูกปิดทันที"
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Ses Düzeyi Denetimi"
IDS_NOMIXERDEVICES "Burada etkin karıştırıcı aygıt yok. Uygulama şimdi çıkacak."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -29,6 +29,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "Регулятор гучності"
IDS_NOMIXERDEVICES "Активні пристрої-мікшери недоступні! Додаток закінчує роботу."
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "音量控制"
IDS_NOMIXERDEVICES "没有可用的混音器设备!程序即将退出。"
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -23,6 +23,10 @@ STRINGTABLE
BEGIN
IDS_SNDVOL32 "音量控制"
IDS_NOMIXERDEVICES "沒有可用的混音器設備!這個程式即將結束。"
IDS_SELECT "&Select"
IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
IDS_OTHER_CONTROLS1 "&1 %s"
IDS_OTHER_CONTROLS2 "&2 %s"
END
IDD_PREFERENCES DIALOGEX 0, 0, 224, 250

View file

@ -610,3 +610,41 @@ SndMixerIsDisplayControl(PSND_MIXER Mixer,
return FALSE;
}
LPMIXERLINE
SndMixerGetLineByName(PSND_MIXER Mixer,
DWORD LineID,
LPWSTR LineName)
{
PSND_MIXER_DESTINATION Line;
PSND_MIXER_CONNECTION Connection;
if (Mixer->hmx == 0)
return NULL;
for (Line = Mixer->Lines; Line != NULL; Line = Line->Next)
{
if (Line->Info.dwLineID == LineID)
{
if (Line->DisplayControls != 0)
{
if (wcsicmp(Line->Info.szName, LineName) == 0)
{
return &Line->Info;
}
}
for (Connection = Line->Connections; Connection != NULL; Connection = Connection->Next)
{
if (wcsicmp(Connection->Info.szName, LineName) == 0)
{
return &Connection->Info;
}
}
return NULL;
}
}
return NULL;
}

View file

@ -38,8 +38,12 @@
#define IDC_ADV_OTHER_CHECK1 1029
#define IDC_ADV_OTHER_CHECK2 1030
#define IDS_SNDVOL32 100
#define IDS_NOMIXERDEVICES 101
#define IDS_SNDVOL32 100
#define IDS_NOMIXERDEVICES 101
#define IDS_SELECT 102
#define IDS_ADVANCED_CONTROLS 103
#define IDS_OTHER_CONTROLS1 104
#define IDS_OTHER_CONTROLS2 105
#define IDD_NORMAL_MASTER 200
#define IDD_NORMAL_LINE 201

View file

@ -591,56 +591,6 @@ DlgPreferencesProc(HWND hwndDlg,
return 0;
}
static
INT_PTR
CALLBACK
AdvancedDlgProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
/* FIXME: Update the dialog title */
/* Disable the tone controls */
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_LOW), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_HIGH), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_SLIDER), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_LOW), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_HIGH), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_SLIDER), FALSE);
/* Hide the other controls */
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CONTROLS), SW_HIDE);
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_TEXT), SW_HIDE);
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CHECK1), SW_HIDE);
ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CHECK2), SW_HIDE);
/* FIXME */
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hwndDlg, IDOK);
break;
}
break;
case WM_CLOSE:
EndDialog(hwndDlg, IDCANCEL);
break;
}
return FALSE;
}
/******************************************************************************/
static VOID
@ -1064,13 +1014,29 @@ MainWindowProc(HWND hwnd,
}
else if (CtrlID % IDC_LINE_ADVANCED == 0)
{
if (DialogBoxParam(hAppInstance,
MAKEINTRESOURCE(IDD_ADVANCED),
hwnd,
AdvancedDlgProc,
(LPARAM)NULL) == IDOK)
{
ADVANCED_CONTEXT AdvancedContext;
/* compute line offset */
LineOffset = CtrlID / IDC_LINE_ADVANCED;
/* compute window id of line name static control */
CtrlID = LineOffset * IDC_LINE_NAME;
/* get line name */
if (GetDlgItemTextW(hwnd, CtrlID, AdvancedContext.LineName, MIXER_LONG_NAME_CHARS) != 0)
{
AdvancedContext.Mixer = Preferences.MixerWindow->Mixer;
AdvancedContext.Line = SndMixerGetLineByName(Preferences.MixerWindow->Mixer,
Preferences.SelectedLine,
AdvancedContext.LineName);
if (AdvancedContext.Line)
{
DialogBoxParam(hAppInstance,
MAKEINTRESOURCE(IDD_ADVANCED),
hwnd,
AdvancedDlgProc,
(LPARAM)&AdvancedContext);
}
}
}
}

View file

@ -10,6 +10,7 @@
#include <mmsystem.h>
#include <commctrl.h>
#include <tchar.h>
#include <strsafe.h>
#include <assert.h>
#include "resources.h"
@ -123,6 +124,14 @@ typedef struct _SET_VOLUME_CONTEXT
BOOL bSwitch;
} SET_VOLUME_CONTEXT, *PSET_VOLUME_CONTEXT;
typedef struct _ADVANCED_CONTEXT
{
WCHAR LineName[MIXER_LONG_NAME_CHARS];
PSND_MIXER Mixer;
LPMIXERLINE Line;
} ADVANCED_CONTEXT, *PADVANCED_CONTEXT;
/* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
typedef struct _SNDVOL_REG_LINESTATE
{
@ -150,6 +159,18 @@ BOOL SndMixerEnumLines(PSND_MIXER Mixer, PFNSNDMIXENUMLINES EnumProc, PVOID Cont
BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context);
BOOL SndMixerIsDisplayControl(PSND_MIXER Mixer, LPMIXERCONTROL Control);
BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls);
LPMIXERLINE SndMixerGetLineByName(PSND_MIXER Mixer, DWORD LineID, LPWSTR LineName);
/* advanced.c */
INT_PTR
CALLBACK
AdvancedDlgProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
/*
* dialog.c