73 IN PDLGITEMTEMPLATE DialogItem,
82 LPWSTR ClassName, WindowName;
83 WCHAR WindowIdBuf[
sizeof(
"#65535")];
91 rect.
right = DialogItem->x + DialogItem->cx;
114 ClassName =
L"button";
117 ClassName =
L"static";
140 WindowName = WindowIdBuf;
155 wID = DialogItem->id;
160 wID = DialogItem->id * (DialogIdMultiplier + 1);
185 if (!
_wcsicmp(ClassName,
L"msctls_trackbar32"))
234 else if (!
_wcsicmp(ClassName,
L"static"))
239 else if (!
_wcsicmp(ClassName,
L"button"))
284 PDLGITEMTEMPLATE DialogItem,
285 DWORD DialogIdMultiplier,
295 if (MixerWindow->Window)
299 if (!MixerWindow->Window)
310 &MixerWindow->Window[MixerWindow->WindowCount],
317 MixerWindow->MixerId);
323 DialogItem =(PDLGITEMTEMPLATE)
Offset;
326 MixerWindow->WindowCount++;
338 PDLGITEMTEMPLATE DlgItem;
390 if (!MixerWindow->hFont)
393 MixerWindow->hFont =
CreateFontW(-
pixels, 0, 0, 0,
FW_NORMAL,
FALSE,
FALSE,
FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FF_DONTCARE, FontName);
396 if (MixerWindow->hFont)
405 xBaseUnit = charSize.
cx;
406 yBaseUnit = charSize.
cy;
410 MixerWindow->baseUnit.cx = charSize.
cx;
411 MixerWindow->baseUnit.cy = charSize.
cy;
423 DlgItem = (PDLGITEMTEMPLATE)
Offset;
426 dialogRect.
right = DlgTemplate->
cx;
428 dialogRect.
bottom = DlgTemplate->
cy;
434 dialogRect.
left += MixerWindow->rect.right;
435 dialogRect.
right += MixerWindow->rect.right;
436 dialogRect.
top += MixerWindow->rect.top;
437 dialogRect.
bottom += MixerWindow->rect.top;
439 MixerWindow->rect.right +=
width;
440 if ((dialogRect.
bottom - dialogRect.
top) > (MixerWindow->rect.bottom - MixerWindow->rect.top))
441 MixerWindow->rect.bottom = MixerWindow->rect.top + dialogRect.
bottom - dialogRect.
top;
464 if (
Line->cControls == 0)
477 if (pVolumeDetails ==
NULL)
525 if (hDlgCtrl !=
NULL)
546 DWORD volumePosition, volumeStep, maxVolume,
i;
547 DWORD balancePosition, balanceStep;
552 for (
i = 0;
i <
Line->cChannels;
i++)
554 if (pVolumeDetails[
i].dwValue > maxVolume)
555 maxVolume = pVolumeDetails[
i].dwValue;
558 volumePosition = (maxVolume -
Control[
Index].Bounds.dwMinimum) / volumeStep;
560 if (
Line->cChannels == 1)
564 else if (
Line->cChannels == 2)
566 if (pVolumeDetails[0].dwValue == pVolumeDetails[1].dwValue)
570 else if (pVolumeDetails[0].dwValue ==
Control[
Index].Bounds.dwMinimum)
574 else if (pVolumeDetails[1].dwValue ==
Control[
Index].Bounds.dwMinimum)
582 if (pVolumeDetails[0].dwValue < pVolumeDetails[1].dwValue)
584 balancePosition = (pVolumeDetails[0].dwValue -
Control[
Index].Bounds.dwMinimum) / balanceStep;
587 else if (pVolumeDetails[1].dwValue < pVolumeDetails[0].dwValue)
589 balancePosition = (pVolumeDetails[1].dwValue -
Control[
Index].Bounds.dwMinimum) / balanceStep;
601 if (hDlgCtrl !=
NULL)
609 if (OldPosition != (
VOLUME_MAX - volumePosition))
616 if (
Line->cChannels == 2)
624 if (hDlgCtrl !=
NULL)
632 if (OldPosition != balancePosition)
651 if (hDlgCtrl !=
NULL)
746 if (hDlgCtrl !=
NULL)
764 if (hDlgCtrl !=
NULL)
795 wID = (
Index + 1) * dwDialogID;
824 return hDlgCtrl !=
NULL
839 if (hDlgCtrl !=
NULL && isPositionChanged)
VOID UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD dwDialogID, DWORD Position)
VOID LoadDialog(IN HMODULE hModule, IN PMIXER_WINDOW MixerWindow, IN LPCWSTR DialogResId, IN DWORD Index)
VOID UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, LONG fValue)
VOID LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext)
DWORD GetDialogLineSliderCurrentPosition(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD dwDialogID)
VOID ConvertRect(LPRECT lpRect, UINT xBaseUnit, UINT yBaseUnit)
VOID LoadDialogControls(IN PMIXER_WINDOW MixerWindow, LPRECT DialogOffset, WORD ItemCount, PDLGITEMTEMPLATE DialogItem, DWORD DialogIdMultiplier, UINT xBaseUnit, UINT yBaseUnit)
LPWORD AddDialogControl(IN HWND hwndDialog, OUT HWND *OutWnd, IN LPRECT DialogOffset, IN PDLGITEMTEMPLATE DialogItem, IN DWORD DialogIdMultiplier, IN HFONT hFont, IN UINT xBaseUnit, IN UINT yBaseUnit, IN UINT MixerId)
HWND GetLineDialogControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD dwDialogID)
BOOL CALLBACK EnumConnectionsCallback(PSND_MIXER Mixer, DWORD LineID, LPMIXERLINE Line, PVOID Context)
LPVOID LoadDialogResource(IN HMODULE hModule, IN LPCWSTR ResourceName, OUT LPDWORD ResourceLength)
BOOL ReadLineConfig(IN LPTSTR szDeviceName, IN LPTSTR szLineName, IN LPTSTR szControlName, OUT DWORD *Flags)
BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls)
INT SndMixerGetLineName(PSND_MIXER Mixer, DWORD LineID, LPTSTR lpBuffer, UINT uSize, BOOL LongName)
INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails)
BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context)
#define IDC_LINE_SLIDER_VERT
#define IDM_ADVANCED_CONTROLS
#define IDC_LINE_ADVANCED
#define IDD_NORMAL_MASTER
#define IDC_LINE_SLIDER_HORZ
#define HeapFree(x, y, z)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES
#define MIXERCONTROL_CONTROLTYPE_VOLUME
#define MIXER_LONG_NAME_CHARS
#define MIXERCONTROL_CONTROLTYPE_MUTE
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define MAKEINTRESOURCE(i)
#define BALANCE_PAGE_SIZE
#define ADVANCED_BUTTON_HEIGHT
struct _PREFERENCES_CONTEXT * PPREFERENCES_CONTEXT
BOOL bShowExtendedControls
struct _SND_MIXER * Mixer
BOOL bHasExtendedControls
PMIXER_WINDOW MixerWindow
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDF_WMI_PROVIDER_CONTROL Control
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define OUT_DEFAULT_PRECIS
HFONT WINAPI CreateFontW(_In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ LPCWSTR)
#define CLIP_DEFAULT_PRECIS
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
struct DLGTEMPLATE * LPDLGTEMPLATE
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
LONG WINAPI GetDialogBaseUnits(void)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Must_inspect_result_ _In_ ULONG Flags