//--------------------------------------------------------------------------; // // File: perfpage.cpp // // Copyright (c) 1997 Microsoft Corporation. All rights reserved // //--------------------------------------------------------------------------; #include "mmcpl.h" #include #ifdef DEBUG #undef DEBUG #include #define DEBUG #else #include #endif #include #include #include #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; }