mirror of
https://github.com/reactos/reactos.git
synced 2025-04-30 02:58:48 +00:00
[SNDVOL32] Take the balance between channels into account for the volume trackbar of the tray window.
This commit is contained in:
parent
d5ceace419
commit
0185ee46d5
1 changed files with 21 additions and 18 deletions
|
@ -125,15 +125,13 @@ OnTrayInitMixer(
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pDialogData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
if (mixerGetControlDetails((HMIXEROBJ)pDialogData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pDialogData->maxVolume = pDialogData->volumeInitValues[0].dwValue;
|
pDialogData->maxVolume = 0;
|
||||||
pDialogData->maxChannel = 0;
|
for (i = 0; i < pDialogData->volumeChannels; i++)
|
||||||
for (i = 1; i < pDialogData->volumeChannels; i++)
|
|
||||||
{
|
{
|
||||||
|
pDialogData->volumeCurrentValues[i].dwValue = pDialogData->volumeInitValues[i].dwValue;
|
||||||
|
|
||||||
if (pDialogData->volumeInitValues[i].dwValue > pDialogData->maxVolume)
|
if (pDialogData->volumeInitValues[i].dwValue > pDialogData->maxVolume)
|
||||||
{
|
|
||||||
pDialogData->maxVolume = pDialogData->volumeInitValues[i].dwValue;
|
pDialogData->maxVolume = pDialogData->volumeInitValues[i].dwValue;
|
||||||
pDialogData->maxChannel = i;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize the volume trackbar */
|
/* Initialize the volume trackbar */
|
||||||
|
@ -209,18 +207,30 @@ OnVScroll(
|
||||||
LPARAM lParam)
|
LPARAM lParam)
|
||||||
{
|
{
|
||||||
MIXERCONTROLDETAILS mxcd;
|
MIXERCONTROLDETAILS mxcd;
|
||||||
DWORD dwPos, dwVolume, i;
|
DWORD dwPosition, dwVolume, i;
|
||||||
|
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case TB_THUMBTRACK:
|
case TB_THUMBPOSITION:
|
||||||
|
break;
|
||||||
|
|
||||||
dwPos = VOLUME_MAX - (DWORD)SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_GETPOS, 0, 0);
|
case TB_ENDTRACK:
|
||||||
dwVolume = (dwPos * pDialogData->volumeStep) + pDialogData->volumeMinimum;
|
PlaySound((LPCTSTR)SND_ALIAS_SYSTEMDEFAULT, NULL, SND_ASYNC | SND_ALIAS_ID);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dwPosition = VOLUME_MAX - (DWORD)SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_GETPOS, 0, 0);
|
||||||
|
|
||||||
|
if (dwPosition == VOLUME_MIN)
|
||||||
|
dwVolume = pDialogData->volumeMinimum;
|
||||||
|
else if (dwPosition == VOLUME_MAX)
|
||||||
|
dwVolume = pDialogData->volumeMaximum;
|
||||||
|
else
|
||||||
|
dwVolume = (dwPosition * pDialogData->volumeStep) + pDialogData->volumeMinimum;
|
||||||
|
|
||||||
for (i = 0; i < pDialogData->volumeChannels; i++)
|
for (i = 0; i < pDialogData->volumeChannels; i++)
|
||||||
{
|
{
|
||||||
if (i == pDialogData->maxChannel)
|
if (pDialogData->volumeInitValues[i].dwValue == pDialogData->maxVolume)
|
||||||
{
|
{
|
||||||
pDialogData->volumeCurrentValues[i].dwValue = dwVolume;
|
pDialogData->volumeCurrentValues[i].dwValue = dwVolume;
|
||||||
}
|
}
|
||||||
|
@ -242,13 +252,6 @@ OnVScroll(
|
||||||
&mxcd,
|
&mxcd,
|
||||||
MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE);
|
MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TB_ENDTRACK:
|
|
||||||
PlaySound((LPCTSTR)SND_ALIAS_SYSTEMDEFAULT, NULL, SND_ASYNC | SND_ALIAS_ID);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue