16 #include "resources.h"
19 #define VOLUME_MAX 500
20 #define VOLUME_TICKS 5
21 #define VOLUME_PAGE_SIZE 100
22 #define BALANCE_LEFT 0
23 #define BALANCE_CENTER 32
24 #define BALANCE_RIGHT 64
25 #define BALANCE_STEPS 64
26 #define BALANCE_TICKS 1
27 #define BALANCE_PAGE_SIZE 12
30 #define RECORD_MIXER 1
32 #define ADVANCED_BUTTON_HEIGHT 16
34 typedef enum _WINDOW_MODE
39 } WINDOW_MODE
, *PWINDOW_MODE
;
41 typedef struct _MIXER_WINDOW
45 struct _SND_MIXER
*Mixer
;
53 BOOL bHasExtendedControls
;
54 BOOL bShowExtendedControls
;
58 } MIXER_WINDOW
, *PMIXER_WINDOW
;
60 extern HINSTANCE hAppInstance
;
61 extern ATOM MainWindowClass
;
63 extern HANDLE hAppHeap
;
65 #define SZ_APP_CLASS TEXT("Volume Control")
67 ULONG
DbgPrint(PCH
, ...);
68 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
75 typedef struct _SND_MIXER_CONNECTION
77 struct _SND_MIXER_CONNECTION
*Next
;
79 LPMIXERCONTROL Controls
;
81 } SND_MIXER_CONNECTION
, *PSND_MIXER_CONNECTION
;
84 typedef struct _SND_MIXER_DESTINATION
86 struct _SND_MIXER_DESTINATION
*Next
;
88 LPMIXERCONTROL Controls
;
90 PSND_MIXER_CONNECTION Connections
;
91 } SND_MIXER_DESTINATION
, *PSND_MIXER_DESTINATION
;
93 typedef struct _SND_MIXER
96 HWND hWndNotification
;
100 PSND_MIXER_DESTINATION Lines
;
101 } SND_MIXER
, *PSND_MIXER
;
103 typedef struct _PREFERENCES_CONTEXT
105 PMIXER_WINDOW MixerWindow
;
114 TCHAR DeviceName
[128];
117 } PREFERENCES_CONTEXT
, *PPREFERENCES_CONTEXT
;
119 typedef struct _SET_VOLUME_CONTEXT
121 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
125 } SET_VOLUME_CONTEXT
, *PSET_VOLUME_CONTEXT
;
127 typedef struct _ADVANCED_CONTEXT
129 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
132 } ADVANCED_CONTEXT
, *PADVANCED_CONTEXT
;
135 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
136 typedef struct _SNDVOL_REG_LINESTATE
139 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
140 } SNDVOL_REG_LINESTATE
, *PSNDVOL_REG_LINESTATE
;
143 typedef BOOL (CALLBACK
*PFNSNDMIXENUMLINES
)(PSND_MIXER Mixer
, LPMIXERLINE Line
, UINT DisplayControls
, PVOID Context
);
144 typedef BOOL (CALLBACK
*PFNSNDMIXENUMCONNECTIONS
)(PSND_MIXER Mixer
, DWORD LineID
, LPMIXERLINE Line
, PVOID Context
);
145 typedef BOOL (CALLBACK
*PFNSNDMIXENUMPRODUCTS
)(PSND_MIXER Mixer
, UINT Id
, LPCTSTR ProductName
, PVOID Context
);
147 PSND_MIXER
SndMixerCreate(HWND hWndNotification
, UINT MixerId
);
148 VOID
SndMixerDestroy(PSND_MIXER Mixer
);
149 VOID
SndMixerClose(PSND_MIXER Mixer
);
150 BOOL
SndMixerSelect(PSND_MIXER Mixer
, UINT MixerId
);
151 UINT
SndMixerGetSelection(PSND_MIXER Mixer
);
152 INT
SndMixerSetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cChannels
, DWORD cbDetails
, LPVOID paDetails
);
153 INT
SndMixerGetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cChannels
, DWORD cbDetails
, LPVOID paDetails
);
154 INT
SndMixerGetProductName(PSND_MIXER Mixer
, LPTSTR lpBuffer
, UINT uSize
);
155 INT
SndMixerGetLineName(PSND_MIXER Mixer
, DWORD LineID
, LPTSTR lpBuffer
, UINT uSize
, BOOL LongName
);
156 BOOL
SndMixerEnumProducts(PSND_MIXER Mixer
, PFNSNDMIXENUMPRODUCTS EnumProc
, PVOID Context
);
157 INT
SndMixerGetDestinationCount(PSND_MIXER Mixer
);
158 BOOL
SndMixerEnumLines(PSND_MIXER Mixer
, PFNSNDMIXENUMLINES EnumProc
, PVOID Context
);
159 BOOL
SndMixerEnumConnections(PSND_MIXER Mixer
, DWORD LineID
, PFNSNDMIXENUMCONNECTIONS EnumProc
, PVOID Context
);
160 BOOL
SndMixerIsDisplayControl(PSND_MIXER Mixer
, LPMIXERCONTROL Control
);
161 BOOL
SndMixerQueryControls(PSND_MIXER Mixer
, PUINT DisplayControls
, LPMIXERLINE LineInfo
, LPMIXERCONTROL
*Controls
);
162 LPMIXERLINE
SndMixerGetLineByName(PSND_MIXER Mixer
, DWORD LineID
, LPWSTR LineName
);
178 VOID
LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext
);
179 VOID
UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, DWORD DialogID
, DWORD Position
);
180 VOID
UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, LONG fValue
);
186 extern HKEY hAppSettingsKey
;
192 CloseAppConfig(VOID
);
195 AllocAndLoadString(OUT LPWSTR
*lpTarget
,
200 LoadAndFormatString(IN HINSTANCE hInstance
,
202 OUT LPWSTR
*lpTarget
,
206 ReadLineConfig(IN LPTSTR szDeviceName
,
207 IN LPTSTR szLineName
,
208 IN LPTSTR szControlName
,
212 WriteLineConfig(IN LPTSTR szDeviceName
,
213 IN LPTSTR szLineName
,
214 IN PSNDVOL_REG_LINESTATE LineState
,
230 #endif /* __SNDVOL32_H */