11 #include "resources.h"
14 typedef struct _MIXER_WINDOW
18 struct _SND_MIXER
*Mixer
;
24 } MIXER_WINDOW
, *PMIXER_WINDOW
;
26 extern HINSTANCE hAppInstance
;
27 extern ATOM MainWindowClass
;
29 extern HANDLE hAppHeap
;
31 #define SZ_APP_CLASS TEXT("Volume Control")
33 ULONG
DbgPrint(PCH
, ...);
34 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
41 typedef struct _SND_MIXER_CONNECTION
43 struct _SND_MIXER_CONNECTION
*Next
;
45 LPMIXERCONTROL Controls
;
47 } SND_MIXER_CONNECTION
, *PSND_MIXER_CONNECTION
;
50 typedef struct _SND_MIXER_DESTINATION
52 struct _SND_MIXER_DESTINATION
*Next
;
54 LPMIXERCONTROL Controls
;
56 PSND_MIXER_CONNECTION Connections
;
57 } SND_MIXER_DESTINATION
, *PSND_MIXER_DESTINATION
;
59 typedef struct _SND_MIXER
62 HWND hWndNotification
;
66 PSND_MIXER_DESTINATION Lines
;
67 } SND_MIXER
, *PSND_MIXER
;
69 typedef struct _PREFERENCES_CONTEXT
71 PMIXER_WINDOW MixerWindow
;
80 TCHAR DeviceName
[128];
84 } PREFERENCES_CONTEXT
, *PPREFERENCES_CONTEXT
;
88 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
93 }SET_VOLUME_CONTEXT
, *PSET_VOLUME_CONTEXT
;
95 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
96 typedef struct _SNDVOL_REG_LINESTATE
99 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
100 } SNDVOL_REG_LINESTATE
, *PSNDVOL_REG_LINESTATE
;
103 typedef BOOL (CALLBACK
*PFNSNDMIXENUMLINES
)(PSND_MIXER Mixer
, LPMIXERLINE Line
, UINT DisplayControls
, PVOID Context
);
104 typedef BOOL (CALLBACK
*PFNSNDMIXENUMCONNECTIONS
)(PSND_MIXER Mixer
, DWORD LineID
, LPMIXERLINE Line
, PVOID Context
);
105 typedef BOOL (CALLBACK
*PFNSNDMIXENUMPRODUCTS
)(PSND_MIXER Mixer
, UINT Id
, LPCTSTR ProductName
, PVOID Context
);
107 PSND_MIXER
SndMixerCreate(HWND hWndNotification
);
108 VOID
SndMixerDestroy(PSND_MIXER Mixer
);
109 VOID
SndMixerClose(PSND_MIXER Mixer
);
110 BOOL
SndMixerSelect(PSND_MIXER Mixer
, UINT MixerId
);
111 UINT
SndMixerGetSelection(PSND_MIXER Mixer
);
112 INT
SndMixerSetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
113 INT
SndMixerGetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
114 INT
SndMixerGetProductName(PSND_MIXER Mixer
, LPTSTR lpBuffer
, UINT uSize
);
115 INT
SndMixerGetLineName(PSND_MIXER Mixer
, DWORD LineID
, LPTSTR lpBuffer
, UINT uSize
, BOOL LongName
);
116 BOOL
SndMixerEnumProducts(PSND_MIXER Mixer
, PFNSNDMIXENUMPRODUCTS EnumProc
, PVOID Context
);
117 INT
SndMixerGetDestinationCount(PSND_MIXER Mixer
);
118 BOOL
SndMixerEnumLines(PSND_MIXER Mixer
, PFNSNDMIXENUMLINES EnumProc
, PVOID Context
);
119 BOOL
SndMixerEnumConnections(PSND_MIXER Mixer
, DWORD LineID
, PFNSNDMIXENUMCONNECTIONS EnumProc
, PVOID Context
);
120 BOOL
SndMixerIsDisplayControl(PSND_MIXER Mixer
, LPMIXERCONTROL Control
);
121 BOOL
SndMixerQueryControls(PSND_MIXER Mixer
, PUINT DisplayControls
, LPMIXERLINE LineInfo
, LPMIXERCONTROL
*Controls
);
126 VOID
LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext
);
127 VOID
UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, DWORD dwControlID
, DWORD DialogID
, DWORD Position
);
128 VOID
UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, LONG fValue
);
134 extern HKEY hAppSettingsKey
;
140 CloseAppConfig(VOID
);
143 AllocAndLoadString(OUT LPWSTR
*lpTarget
,
148 LoadAndFormatString(IN HINSTANCE hInstance
,
150 OUT LPWSTR
*lpTarget
,
154 ReadLineConfig(IN LPTSTR szDeviceName
,
155 IN LPTSTR szLineName
,
156 IN LPTSTR szControlName
,
160 WriteLineConfig(IN LPTSTR szDeviceName
,
161 IN LPTSTR szLineName
,
162 IN PSNDVOL_REG_LINESTATE LineState
,
165 #endif /* __SNDVOL32_H */