14 #include "resources.h"
16 typedef struct _MIXER_WINDOW
20 struct _SND_MIXER
*Mixer
;
26 } MIXER_WINDOW
, *PMIXER_WINDOW
;
28 extern HINSTANCE hAppInstance
;
29 extern ATOM MainWindowClass
;
31 extern HANDLE hAppHeap
;
33 #define SZ_APP_CLASS TEXT("Volume Control")
35 ULONG
DbgPrint(PCH
, ...);
36 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
43 typedef struct _SND_MIXER_CONNECTION
45 struct _SND_MIXER_CONNECTION
*Next
;
47 LPMIXERCONTROL Controls
;
49 } SND_MIXER_CONNECTION
, *PSND_MIXER_CONNECTION
;
52 typedef struct _SND_MIXER_DESTINATION
54 struct _SND_MIXER_DESTINATION
*Next
;
56 LPMIXERCONTROL Controls
;
58 PSND_MIXER_CONNECTION Connections
;
59 } SND_MIXER_DESTINATION
, *PSND_MIXER_DESTINATION
;
61 typedef struct _SND_MIXER
64 HWND hWndNotification
;
68 PSND_MIXER_DESTINATION Lines
;
69 } SND_MIXER
, *PSND_MIXER
;
71 typedef struct _PREFERENCES_CONTEXT
73 PMIXER_WINDOW MixerWindow
;
82 TCHAR DeviceName
[128];
86 } PREFERENCES_CONTEXT
, *PPREFERENCES_CONTEXT
;
90 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
95 }SET_VOLUME_CONTEXT
, *PSET_VOLUME_CONTEXT
;
97 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
98 typedef struct _SNDVOL_REG_LINESTATE
101 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
102 } SNDVOL_REG_LINESTATE
, *PSNDVOL_REG_LINESTATE
;
105 typedef BOOL (CALLBACK
*PFNSNDMIXENUMLINES
)(PSND_MIXER Mixer
, LPMIXERLINE Line
, UINT DisplayControls
, PVOID Context
);
106 typedef BOOL (CALLBACK
*PFNSNDMIXENUMCONNECTIONS
)(PSND_MIXER Mixer
, DWORD LineID
, LPMIXERLINE Line
, PVOID Context
);
107 typedef BOOL (CALLBACK
*PFNSNDMIXENUMPRODUCTS
)(PSND_MIXER Mixer
, UINT Id
, LPCTSTR ProductName
, PVOID Context
);
109 PSND_MIXER
SndMixerCreate(HWND hWndNotification
);
110 VOID
SndMixerDestroy(PSND_MIXER Mixer
);
111 VOID
SndMixerClose(PSND_MIXER Mixer
);
112 BOOL
SndMixerSelect(PSND_MIXER Mixer
, UINT MixerId
);
113 UINT
SndMixerGetSelection(PSND_MIXER Mixer
);
114 INT
SndMixerSetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
115 INT
SndMixerGetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
116 INT
SndMixerGetProductName(PSND_MIXER Mixer
, LPTSTR lpBuffer
, UINT uSize
);
117 INT
SndMixerGetLineName(PSND_MIXER Mixer
, DWORD LineID
, LPTSTR lpBuffer
, UINT uSize
, BOOL LongName
);
118 BOOL
SndMixerEnumProducts(PSND_MIXER Mixer
, PFNSNDMIXENUMPRODUCTS EnumProc
, PVOID Context
);
119 INT
SndMixerGetDestinationCount(PSND_MIXER Mixer
);
120 BOOL
SndMixerEnumLines(PSND_MIXER Mixer
, PFNSNDMIXENUMLINES EnumProc
, PVOID Context
);
121 BOOL
SndMixerEnumConnections(PSND_MIXER Mixer
, DWORD LineID
, PFNSNDMIXENUMCONNECTIONS EnumProc
, PVOID Context
);
122 BOOL
SndMixerIsDisplayControl(PSND_MIXER Mixer
, LPMIXERCONTROL Control
);
123 BOOL
SndMixerQueryControls(PSND_MIXER Mixer
, PUINT DisplayControls
, LPMIXERLINE LineInfo
, LPMIXERCONTROL
*Controls
);
128 VOID
LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext
);
129 VOID
UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, DWORD dwControlID
, DWORD DialogID
, DWORD Position
);
130 VOID
UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, LONG fValue
);
136 extern HKEY hAppSettingsKey
;
142 CloseAppConfig(VOID
);
145 AllocAndLoadString(OUT LPWSTR
*lpTarget
,
150 LoadAndFormatString(IN HINSTANCE hInstance
,
152 OUT LPWSTR
*lpTarget
,
156 ReadLineConfig(IN LPTSTR szDeviceName
,
157 IN LPTSTR szLineName
,
158 IN LPTSTR szControlName
,
162 WriteLineConfig(IN LPTSTR szDeviceName
,
163 IN LPTSTR szLineName
,
164 IN PSNDVOL_REG_LINESTATE LineState
,
167 #endif /* __SNDVOL32_H */