mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 14:25:52 +00:00
[MMSYS] Set the tab title, implement the 'restore defaults' button and the synchronized trackbar movement.
This commit is contained in:
parent
431f9bf311
commit
9f41824321
1 changed files with 68 additions and 4 deletions
|
@ -16,6 +16,7 @@ typedef struct _PAGE_DATA
|
||||||
DWORD volumeMaximum;
|
DWORD volumeMaximum;
|
||||||
DWORD volumeStep;
|
DWORD volumeStep;
|
||||||
PMIXERCONTROLDETAILS_UNSIGNED volumeValues;
|
PMIXERCONTROLDETAILS_UNSIGNED volumeValues;
|
||||||
|
BOOL volumeSync;
|
||||||
} PAGE_DATA, *PPAGE_DATA;
|
} PAGE_DATA, *PPAGE_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,7 +133,7 @@ OnMixerControlChange(
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
if (mixerGetControlDetails((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < min(pPageData->volumeChannels, 5); i++)
|
for (i = 0; i < pPageData->volumeChannels; i++)
|
||||||
{
|
{
|
||||||
j = i * 4;
|
j = i * 4;
|
||||||
|
|
||||||
|
@ -150,7 +151,8 @@ OnHScroll(
|
||||||
LPARAM lParam)
|
LPARAM lParam)
|
||||||
{
|
{
|
||||||
MIXERCONTROLDETAILS mxcd;
|
MIXERCONTROLDETAILS mxcd;
|
||||||
INT id, idx;
|
DWORD dwValue, dwPos;
|
||||||
|
INT id, idx, i, j;
|
||||||
|
|
||||||
id = (INT)GetWindowLongPtr((HWND)lParam, GWLP_ID);
|
id = (INT)GetWindowLongPtr((HWND)lParam, GWLP_ID);
|
||||||
if (id < 9475 && id > 9503)
|
if (id < 9475 && id > 9503)
|
||||||
|
@ -159,9 +161,51 @@ OnHScroll(
|
||||||
if ((id - 9475) % 4 != 0)
|
if ((id - 9475) % 4 != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
idx = (id - 9475) / 4;
|
dwPos = (DWORD)SendDlgItemMessage(hwndDlg, id, TBM_GETPOS, 0, 0);
|
||||||
|
dwValue = (dwPos * pPageData->volumeStep) + pPageData->volumeMinimum;
|
||||||
|
|
||||||
pPageData->volumeValues[idx].dwValue = ((DWORD)SendDlgItemMessage(hwndDlg, id, TBM_GETPOS, 0, 0) * pPageData->volumeStep) + pPageData->volumeMinimum;
|
if (pPageData->volumeSync)
|
||||||
|
{
|
||||||
|
for (i = 0; i < pPageData->volumeChannels; i++)
|
||||||
|
{
|
||||||
|
j = 9475 + (i * 4);
|
||||||
|
if (j != id)
|
||||||
|
SendDlgItemMessage(hwndDlg, j, TBM_SETPOS, (WPARAM)TRUE, dwPos);
|
||||||
|
|
||||||
|
pPageData->volumeValues[i].dwValue = dwValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idx = (id - 9475) / 4;
|
||||||
|
pPageData->volumeValues[idx].dwValue = dwValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
|
||||||
|
mxcd.dwControlID = pPageData->volumeControlID;
|
||||||
|
mxcd.cChannels = pPageData->volumeChannels;
|
||||||
|
mxcd.cMultipleItems = 0;
|
||||||
|
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||||
|
mxcd.paDetails = pPageData->volumeValues;
|
||||||
|
|
||||||
|
if (mixerSetControlDetails((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
VOID
|
||||||
|
OnSetDefaults(
|
||||||
|
PPAGE_DATA pPageData,
|
||||||
|
HWND hwndDlg)
|
||||||
|
{
|
||||||
|
MIXERCONTROLDETAILS mxcd;
|
||||||
|
DWORD dwValue, i;
|
||||||
|
|
||||||
|
dwValue = ((VOLUME_MAX - VOLUME_MIN) / 2 * pPageData->volumeStep) + pPageData->volumeMinimum;
|
||||||
|
|
||||||
|
for (i = 0; i < pPageData->volumeChannels; i++)
|
||||||
|
pPageData->volumeValues[i].dwValue = dwValue;
|
||||||
|
|
||||||
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
|
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
|
||||||
mxcd.dwControlID = pPageData->volumeControlID;
|
mxcd.dwControlID = pPageData->volumeControlID;
|
||||||
|
@ -218,7 +262,25 @@ SpeakerVolumeDlgProc(
|
||||||
|
|
||||||
case WM_HSCROLL:
|
case WM_HSCROLL:
|
||||||
if (pPageData)
|
if (pPageData)
|
||||||
|
{
|
||||||
OnHScroll(pPageData, hwndDlg, wParam, lParam);
|
OnHScroll(pPageData, hwndDlg, wParam, lParam);
|
||||||
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch (LOWORD(wParam))
|
||||||
|
{
|
||||||
|
case 9504:
|
||||||
|
if (HIWORD(wParam) == BN_CLICKED)
|
||||||
|
pPageData->volumeSync = (SendDlgItemMessage(hwndDlg, 9504, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9505:
|
||||||
|
OnSetDefaults(pPageData, hwndDlg);
|
||||||
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
|
@ -255,6 +317,8 @@ SpeakerVolume(
|
||||||
psh.ppsp = psp;
|
psh.ppsp = psp;
|
||||||
|
|
||||||
InitPropSheetPage(&psp[0], IDD_MULTICHANNEL, SpeakerVolumeDlgProc);
|
InitPropSheetPage(&psp[0], IDD_MULTICHANNEL, SpeakerVolumeDlgProc);
|
||||||
|
psp[0].dwFlags |= PSP_USETITLE;
|
||||||
|
psp[0].pszTitle = Caption;
|
||||||
|
|
||||||
return (LONG)(PropertySheet(&psh) != -1);
|
return (LONG)(PropertySheet(&psh) != -1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue