255 lines
6.2 KiB
C++
255 lines
6.2 KiB
C++
|
//--------------------------------------------------------------------------;
|
||
|
//
|
||
|
// File: perfpage.cpp
|
||
|
//
|
||
|
// Copyright (c) 1997 Microsoft Corporation. All rights reserved
|
||
|
//
|
||
|
//--------------------------------------------------------------------------;
|
||
|
|
||
|
#include "mmcpl.h"
|
||
|
#include <windowsx.h>
|
||
|
#ifdef DEBUG
|
||
|
#undef DEBUG
|
||
|
#include <mmsystem.h>
|
||
|
#define DEBUG
|
||
|
#else
|
||
|
#include <mmsystem.h>
|
||
|
#endif
|
||
|
#include <commctrl.h>
|
||
|
#include <prsht.h>
|
||
|
#include <regstr.h>
|
||
|
#include "utils.h"
|
||
|
#include "medhelp.h"
|
||
|
|
||
|
|
||
|
#include "advaudio.h"
|
||
|
#include "perfpage.h"
|
||
|
|
||
|
////////////
|
||
|
// Defines
|
||
|
////////////
|
||
|
|
||
|
|
||
|
//////////////
|
||
|
// Help ID's
|
||
|
//////////////
|
||
|
|
||
|
|
||
|
#pragma data_seg(".text")
|
||
|
const static DWORD aAdvAudioHelp[] = {
|
||
|
IDC_ACCELERATION, IDH_ADV_AUDIO_ACCELERATION,
|
||
|
IDC_HWMESSAGE, IDH_ADV_AUDIO_ACCELERATION,
|
||
|
IDC_SRCQUALITY, IDH_ADV_AUDIO_SRCQUALITY,
|
||
|
IDC_SRCMSG, IDH_ADV_AUDIO_SRCQUALITY,
|
||
|
IDC_DEFAULTS, IDH_ADV_AUDIO_RESTOREDEFAULTS,
|
||
|
IDC_ICON_3, IDH_COMM_GROUPBOX,
|
||
|
IDC_TEXT_14, IDH_COMM_GROUPBOX,
|
||
|
IDC_TEXT_15, IDH_COMM_GROUPBOX,
|
||
|
IDC_TEXT_16, IDH_ADV_AUDIO_ACCELERATION,
|
||
|
IDC_TEXT_17, IDH_ADV_AUDIO_SRCQUALITY,
|
||
|
IDC_TEXT_18, IDH_ADV_AUDIO_ACCELERATION,
|
||
|
IDC_TEXT_19, IDH_ADV_AUDIO_ACCELERATION,
|
||
|
IDC_TEXT_20, IDH_ADV_AUDIO_SRCQUALITY,
|
||
|
IDC_TEXT_21, IDH_ADV_AUDIO_SRCQUALITY,
|
||
|
|
||
|
0, 0
|
||
|
};
|
||
|
#pragma data_seg()
|
||
|
|
||
|
|
||
|
//////////////
|
||
|
// Functions
|
||
|
//////////////
|
||
|
|
||
|
void SetHardwareLevel(HWND hwnd, DWORD dwHWLevel)
|
||
|
{
|
||
|
TCHAR str[255];
|
||
|
|
||
|
SendDlgItemMessage( hwnd, IDC_ACCELERATION, TBM_SETPOS, TRUE, dwHWLevel);
|
||
|
LoadString( ghInst, IDS_AUDHW1 + dwHWLevel, str, sizeof( str )/sizeof(TCHAR) );
|
||
|
SetDlgItemText(hwnd, IDC_HWMESSAGE, str);
|
||
|
|
||
|
gAudData.current.dwHWLevel = dwHWLevel;
|
||
|
|
||
|
ToggleApplyButton(hwnd);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void SetSRCLevel(HWND hwnd, DWORD dwSRCLevel)
|
||
|
{
|
||
|
TCHAR str[255];
|
||
|
|
||
|
SendDlgItemMessage( hwnd, IDC_SRCQUALITY, TBM_SETPOS, TRUE, dwSRCLevel);
|
||
|
LoadString( ghInst, IDS_SRCQUALITY1 + dwSRCLevel, str, sizeof( str )/sizeof(TCHAR) );
|
||
|
SetDlgItemText(hwnd, IDC_SRCMSG, str);
|
||
|
|
||
|
gAudData.current.dwSRCLevel = dwSRCLevel;
|
||
|
|
||
|
ToggleApplyButton(hwnd);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void RestoreDefaults(HWND hwnd)
|
||
|
{
|
||
|
// Check if we can set the acceleration level
|
||
|
if (SUCCEEDED(CheckDSAccelerationPriv(gAudData.devGuid, gAudData.fRecord, NULL)))
|
||
|
{
|
||
|
SetHardwareLevel(hwnd,gAudData.dwDefaultHWLevel);
|
||
|
}
|
||
|
|
||
|
// Check if we can set the quality level
|
||
|
if (SUCCEEDED(CheckDSSrcQualityPriv(gAudData.devGuid, gAudData.fRecord, NULL)))
|
||
|
{
|
||
|
SetSRCLevel(hwnd,DEFAULT_SRC_LEVEL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
BOOL InitAdvDialog(HWND hwnd)
|
||
|
{
|
||
|
HWND hwndDlgItem;
|
||
|
BOOL fEnableAcceleration;
|
||
|
BOOL fEnableSrcQuality;
|
||
|
DWORD dwHWLevel = gAudData.current.dwHWLevel;
|
||
|
DWORD dwSRCLevel = gAudData.current.dwSRCLevel;
|
||
|
|
||
|
SendDlgItemMessage( hwnd, IDC_ACCELERATION, TBM_SETRANGE, TRUE, MAKELONG( 0, MAX_HW_LEVEL ) );
|
||
|
SendDlgItemMessage( hwnd, IDC_SRCQUALITY, TBM_SETRANGE, TRUE, MAKELONG( 0, MAX_SRC_LEVEL ) );
|
||
|
|
||
|
SetHardwareLevel(hwnd,dwHWLevel);
|
||
|
SetSRCLevel(hwnd,dwSRCLevel);
|
||
|
|
||
|
// Check if we can set the acceleration level
|
||
|
if (FAILED(CheckDSAccelerationPriv(gAudData.devGuid, gAudData.fRecord, NULL)))
|
||
|
{
|
||
|
// No - disable the slider
|
||
|
fEnableAcceleration = FALSE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Yes - enable the slider
|
||
|
fEnableAcceleration = TRUE;
|
||
|
}
|
||
|
|
||
|
// Enable/disable the acceleration slider appropriately
|
||
|
hwndDlgItem = GetDlgItem( hwnd, IDC_ACCELERATION );
|
||
|
if (hwndDlgItem)
|
||
|
{
|
||
|
EnableWindow( hwndDlgItem, fEnableAcceleration );
|
||
|
}
|
||
|
|
||
|
// Check if we can set the quality level
|
||
|
if (FAILED(CheckDSSrcQualityPriv(gAudData.devGuid, gAudData.fRecord, NULL)))
|
||
|
{
|
||
|
// No - disable the slider
|
||
|
fEnableSrcQuality = FALSE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Yes - enable the slider
|
||
|
fEnableSrcQuality = TRUE;
|
||
|
}
|
||
|
|
||
|
// Enable/disable the quality slider appropriately
|
||
|
hwndDlgItem = GetDlgItem( hwnd, IDC_SRCQUALITY );
|
||
|
if (hwndDlgItem)
|
||
|
{
|
||
|
EnableWindow( hwndDlgItem, fEnableSrcQuality );
|
||
|
}
|
||
|
|
||
|
// Enable/disable the defaults button
|
||
|
hwndDlgItem = GetDlgItem( hwnd, IDC_DEFAULTS );
|
||
|
if (hwndDlgItem)
|
||
|
{
|
||
|
EnableWindow( hwndDlgItem, fEnableAcceleration || fEnableSrcQuality );
|
||
|
}
|
||
|
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
INT_PTR CALLBACK PerformanceHandler(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
BOOL fReturnVal = FALSE;
|
||
|
|
||
|
switch (msg)
|
||
|
{
|
||
|
default:
|
||
|
fReturnVal = FALSE;
|
||
|
break;
|
||
|
|
||
|
case WM_INITDIALOG:
|
||
|
{
|
||
|
fReturnVal = InitAdvDialog(hDlg);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_CONTEXTMENU:
|
||
|
{
|
||
|
WinHelp((HWND)wParam, gszHelpFile, HELP_CONTEXTMENU, (UINT_PTR)(LPTSTR)aAdvAudioHelp);
|
||
|
fReturnVal = TRUE;
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_HELP:
|
||
|
{
|
||
|
WinHelp((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (UINT_PTR)(LPTSTR)aAdvAudioHelp);
|
||
|
fReturnVal = TRUE;
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_HSCROLL:
|
||
|
{
|
||
|
HWND hScroll = (HWND) lParam;
|
||
|
|
||
|
if (hScroll == GetDlgItem(hDlg,IDC_ACCELERATION))
|
||
|
{
|
||
|
SetHardwareLevel(hDlg,(DWORD) SendDlgItemMessage( hDlg, IDC_ACCELERATION, TBM_GETPOS, 0, 0 ));
|
||
|
}
|
||
|
else if (hScroll == GetDlgItem(hDlg, IDC_SRCQUALITY))
|
||
|
{
|
||
|
SetSRCLevel(hDlg, (DWORD) SendDlgItemMessage( hDlg, IDC_SRCQUALITY, TBM_GETPOS, 0, 0 ));
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
{
|
||
|
switch (LOWORD(wParam))
|
||
|
{
|
||
|
case IDC_DEFAULTS:
|
||
|
RestoreDefaults(hDlg);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
fReturnVal = FALSE;
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case WM_NOTIFY:
|
||
|
{
|
||
|
LPNMHDR pnmh = (LPNMHDR) lParam;
|
||
|
|
||
|
switch (pnmh->code)
|
||
|
{
|
||
|
case PSN_APPLY:
|
||
|
{
|
||
|
ApplyCurrentSettings(&gAudData);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return fReturnVal;
|
||
|
}
|
||
|
|
||
|
|