15 #include "resources.h"
17 typedef enum _WINDOW_MODE
22 } WINDOW_MODE
, *PWINDOW_MODE
;
24 typedef struct _MIXER_WINDOW
28 struct _SND_MIXER
*Mixer
;
36 } MIXER_WINDOW
, *PMIXER_WINDOW
;
38 extern HINSTANCE hAppInstance
;
39 extern ATOM MainWindowClass
;
41 extern HANDLE hAppHeap
;
43 #define SZ_APP_CLASS TEXT("Volume Control")
45 ULONG
DbgPrint(PCH
, ...);
46 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
53 typedef struct _SND_MIXER_CONNECTION
55 struct _SND_MIXER_CONNECTION
*Next
;
57 LPMIXERCONTROL Controls
;
59 } SND_MIXER_CONNECTION
, *PSND_MIXER_CONNECTION
;
62 typedef struct _SND_MIXER_DESTINATION
64 struct _SND_MIXER_DESTINATION
*Next
;
66 LPMIXERCONTROL Controls
;
68 PSND_MIXER_CONNECTION Connections
;
69 } SND_MIXER_DESTINATION
, *PSND_MIXER_DESTINATION
;
71 typedef struct _SND_MIXER
74 HWND hWndNotification
;
78 PSND_MIXER_DESTINATION Lines
;
79 } SND_MIXER
, *PSND_MIXER
;
81 typedef struct _PREFERENCES_CONTEXT
83 PMIXER_WINDOW MixerWindow
;
92 TCHAR DeviceName
[128];
96 } PREFERENCES_CONTEXT
, *PPREFERENCES_CONTEXT
;
100 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
105 }SET_VOLUME_CONTEXT
, *PSET_VOLUME_CONTEXT
;
107 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
108 typedef struct _SNDVOL_REG_LINESTATE
111 WCHAR LineName
[MIXER_LONG_NAME_CHARS
];
112 } SNDVOL_REG_LINESTATE
, *PSNDVOL_REG_LINESTATE
;
115 typedef BOOL (CALLBACK
*PFNSNDMIXENUMLINES
)(PSND_MIXER Mixer
, LPMIXERLINE Line
, UINT DisplayControls
, PVOID Context
);
116 typedef BOOL (CALLBACK
*PFNSNDMIXENUMCONNECTIONS
)(PSND_MIXER Mixer
, DWORD LineID
, LPMIXERLINE Line
, PVOID Context
);
117 typedef BOOL (CALLBACK
*PFNSNDMIXENUMPRODUCTS
)(PSND_MIXER Mixer
, UINT Id
, LPCTSTR ProductName
, PVOID Context
);
119 PSND_MIXER
SndMixerCreate(HWND hWndNotification
);
120 VOID
SndMixerDestroy(PSND_MIXER Mixer
);
121 VOID
SndMixerClose(PSND_MIXER Mixer
);
122 BOOL
SndMixerSelect(PSND_MIXER Mixer
, UINT MixerId
);
123 UINT
SndMixerGetSelection(PSND_MIXER Mixer
);
124 INT
SndMixerSetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
125 INT
SndMixerGetVolumeControlDetails(PSND_MIXER Mixer
, DWORD dwControlID
, DWORD cbDetails
, LPVOID paDetails
);
126 INT
SndMixerGetProductName(PSND_MIXER Mixer
, LPTSTR lpBuffer
, UINT uSize
);
127 INT
SndMixerGetLineName(PSND_MIXER Mixer
, DWORD LineID
, LPTSTR lpBuffer
, UINT uSize
, BOOL LongName
);
128 BOOL
SndMixerEnumProducts(PSND_MIXER Mixer
, PFNSNDMIXENUMPRODUCTS EnumProc
, PVOID Context
);
129 INT
SndMixerGetDestinationCount(PSND_MIXER Mixer
);
130 BOOL
SndMixerEnumLines(PSND_MIXER Mixer
, PFNSNDMIXENUMLINES EnumProc
, PVOID Context
);
131 BOOL
SndMixerEnumConnections(PSND_MIXER Mixer
, DWORD LineID
, PFNSNDMIXENUMCONNECTIONS EnumProc
, PVOID Context
);
132 BOOL
SndMixerIsDisplayControl(PSND_MIXER Mixer
, LPMIXERCONTROL Control
);
133 BOOL
SndMixerQueryControls(PSND_MIXER Mixer
, PUINT DisplayControls
, LPMIXERLINE LineInfo
, LPMIXERCONTROL
*Controls
);
138 VOID
LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext
);
139 VOID
UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, DWORD dwControlID
, DWORD DialogID
, DWORD Position
);
140 VOID
UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext
, LPMIXERLINE Line
, LONG fValue
);
146 extern HKEY hAppSettingsKey
;
152 CloseAppConfig(VOID
);
155 AllocAndLoadString(OUT LPWSTR
*lpTarget
,
160 LoadAndFormatString(IN HINSTANCE hInstance
,
162 OUT LPWSTR
*lpTarget
,
166 ReadLineConfig(IN LPTSTR szDeviceName
,
167 IN LPTSTR szLineName
,
168 IN LPTSTR szControlName
,
172 WriteLineConfig(IN LPTSTR szDeviceName
,
173 IN LPTSTR szLineName
,
174 IN PSNDVOL_REG_LINESTATE LineState
,
187 #endif /* __SNDVOL32_H */