16 #include "resources.h"
18 typedef struct _MIXER_WINDOW
22 struct _SND_MIXER
*Mixer
;
28 } MIXER_WINDOW
, *PMIXER_WINDOW
;
30 extern HINSTANCE hAppInstance
;
31 extern ATOM MainWindowClass
;
33 extern HANDLE hAppHeap
;
35 #define SZ_APP_CLASS TEXT("Volume Control")
37 ULONG
DbgPrint(PCH
, ...);
38 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
45 typedef struct _SND_MIXER_CONNECTION
47 struct _SND_MIXER_CONNECTION
*Next
;
49 LPMIXERCONTROL Controls
;
51 } SND_MIXER_CONNECTION
, *PSND_MIXER_CONNECTION
;
54 typedef struct _SND_MIXER_DESTINATION
56 struct _SND_MIXER_DESTINATION
*Next
;
58 LPMIXERCONTROL Controls
;
60 PSND_MIXER_CONNECTION Connections
;
61 } SND_MIXER_DESTINATION
, *PSND_MIXER_DESTINATION
;
63 typedef struct _SND_MIXER
66 HWND hWndNotification
;
70 PSND_MIXER_DESTINATION Lines
;
71 } SND_MIXER
, *PSND_MIXER
;
73 typedef struct _PREFERENCES_CONTEXT
75 PMIXER_WINDOW MixerWindow
;
84 TCHAR DeviceName
[128];
88 } PREFERENCES_CONTEXT
, *PPREFERENCES_CONTEXT
;
92 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
97 }SET_VOLUME_CONTEXT
, *PSET_VOLUME_CONTEXT
;
99 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
100 typedef struct _SNDVOL_REG_LINESTATE
103 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
104 } SNDVOL_REG_LINESTATE
, *PSNDVOL_REG_LINESTATE
;
107 typedef BOOL (CALLBACK
*PFNSNDMIXENUMLINES
)(PSND_MIXER Mixer
, LPMIXERLINE Line
, UINT DisplayControls
, PVOID Context
);
108 typedef BOOL (CALLBACK
*PFNSNDMIXENUMCONNECTIONS
)(PSND_MIXER Mixer
, DWORD LineID
, LPMIXERLINE Line
, PVOID Context
);
109 typedef BOOL (CALLBACK
*PFNSNDMIXENUMPRODUCTS
)(PSND_MIXER Mixer
, UINT Id
, LPCTSTR ProductName
, PVOID Context
);
111 PSND_MIXER
SndMixerCreate(HWND hWndNotification
);
112 VOID
SndMixerDestroy(PSND_MIXER Mixer
);
113 VOID
SndMixerClose(PSND_MIXER Mixer
);
114 BOOL
SndMixerSelect(PSND_MIXER Mixer
, UINT MixerId
);
115 UINT
SndMixerGetSelection(PSND_MIXER Mixer
);
116 INT
SndMixerSetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
117 INT
SndMixerGetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
118 INT
SndMixerGetProductName(PSND_MIXER Mixer
, LPTSTR lpBuffer
, UINT uSize
);
119 INT
SndMixerGetLineName(PSND_MIXER Mixer
, DWORD LineID
, LPTSTR lpBuffer
, UINT uSize
, BOOL LongName
);
120 BOOL
SndMixerEnumProducts(PSND_MIXER Mixer
, PFNSNDMIXENUMPRODUCTS EnumProc
, PVOID Context
);
121 INT
SndMixerGetDestinationCount(PSND_MIXER Mixer
);
122 BOOL
SndMixerEnumLines(PSND_MIXER Mixer
, PFNSNDMIXENUMLINES EnumProc
, PVOID Context
);
123 BOOL
SndMixerEnumConnections(PSND_MIXER Mixer
, DWORD LineID
, PFNSNDMIXENUMCONNECTIONS EnumProc
, PVOID Context
);
124 BOOL
SndMixerIsDisplayControl(PSND_MIXER Mixer
, LPMIXERCONTROL Control
);
125 BOOL
SndMixerQueryControls(PSND_MIXER Mixer
, PUINT DisplayControls
, LPMIXERLINE LineInfo
, LPMIXERCONTROL
*Controls
);
130 VOID
LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext
);
131 VOID
UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, DWORD dwControlID
, DWORD DialogID
, DWORD Position
);
132 VOID
UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, LONG fValue
);
138 extern HKEY hAppSettingsKey
;
144 CloseAppConfig(VOID
);
147 AllocAndLoadString(OUT LPWSTR
*lpTarget
,
152 LoadAndFormatString(IN HINSTANCE hInstance
,
154 OUT LPWSTR
*lpTarget
,
158 ReadLineConfig(IN LPTSTR szDeviceName
,
159 IN LPTSTR szLineName
,
160 IN LPTSTR szControlName
,
164 WriteLineConfig(IN LPTSTR szDeviceName
,
165 IN LPTSTR szLineName
,
166 IN PSNDVOL_REG_LINESTATE LineState
,
169 #endif /* __SNDVOL32_H */