|
|
/*******************************************************************************
* * Copyright 1999 American Power Conversion, All Rights Reserved * * TITLE: UPSCUSTOM.C * * VERSION: 1.0 * * AUTHOR: SteveT * * DATE: 07 June, 1999 * * DESCRIPTION: This file contains all of the functions that support the * custom UPS Interface Configuration dialog. ********************************************************************************/
#include "upstab.h"
#include "..\pwrresid.h"
#include "..\PwrMn_cs.h"
/*
* forward declarations */ void initUPSCustomDlg(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void setRadioButtons(HWND hDlg, DWORD dwTmpConfig); DWORD getRadioButtons(HWND hDlg, DWORD dwTmpConfig);
static struct _customData *g_CustomData;
/*
* local declarations */
static const DWORD g_UPSCustomHelpIDs[] = { IDC_CUSTOM_CAVEAT, NO_HELP, IDC_ONBAT_CHECK,idh_positive_negative_powerfail, IDC_ONBAT_POS,idh_positive_negative_powerfail, IDC_ONBAT_NEG,idh_positive_negative_powerfail, IDC_LOWBAT_CHECK,idh_positive_negative_low_battery, IDC_LOWBAT_POS,idh_positive_negative_low_battery, IDC_LOWBAT_NEG,idh_positive_negative_low_battery, IDC_TURNOFF_CHECK,idh_positive_negative_shutdown, IDC_TURNOFF_POS,idh_positive_negative_shutdown, IDC_TURNOFF_NEG,idh_positive_negative_shutdown, IDB_CUSTOM_BACK,idh_back, IDB_CUSTOM_FINISH,idh_finish, IDC_STATIC, NO_HELP, IDC_CUSTOM_FRAME, NO_HELP, 0,0 };
/*
* BOOL CALLBACK UPSCustomDlgProc (HWND hDlg, * UINT uMsg, * WPARAM wParam, * LPARAM lParam); * * Description: This is a standard DialogProc associated with the UPS custom dialog * * Additional Information: See help on DialogProc * * Parameters: * * HWND hDlg :- Handle to dialog box * * UINT uMsg :- message ID * * WPARAM wParam :- Specifies additional message-specific information. * * LPARAM lParam :- Specifies additional message-specific information. * * Return Value: Except in response to the WM_INITDIALOG message, the dialog * box procedure should return nonzero if it processes the * message, and zero if it does not. */ INT_PTR CALLBACK UPSCustomDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { BOOL bRes = TRUE;
switch (uMsg) { case WM_INITDIALOG: { initUPSCustomDlg(hDlg,uMsg,wParam,lParam); break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_ONBAT_CHECK: EnableWindow( GetDlgItem( hDlg, IDC_ONBAT_POS ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_ONBAT_CHECK)) ); EnableWindow( GetDlgItem( hDlg, IDC_ONBAT_NEG ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_ONBAT_CHECK)) ); break;
case IDC_LOWBAT_CHECK: EnableWindow( GetDlgItem( hDlg, IDC_LOWBAT_POS ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_LOWBAT_CHECK)) ); EnableWindow( GetDlgItem( hDlg, IDC_LOWBAT_NEG ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_LOWBAT_CHECK)) ); break;
case IDC_TURNOFF_CHECK: EnableWindow( GetDlgItem( hDlg, IDC_TURNOFF_POS ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_TURNOFF_CHECK)) ); EnableWindow( GetDlgItem( hDlg, IDC_TURNOFF_NEG ), (BST_CHECKED == IsDlgButtonChecked(hDlg,IDC_TURNOFF_CHECK)) ); break;
case IDB_CUSTOM_BACK: case IDB_CUSTOM_FINISH: { // save the options settings
*(g_CustomData->lpdwCurrentCustomOptions) = getRadioButtons( hDlg, *(g_CustomData->lpdwCurrentCustomOptions)); EndDialog(hDlg,wParam); break; } case IDCANCEL: // escape key
{ EndDialog(hDlg,wParam); break; } default: bRes = FALSE; } break; } case WM_CLOSE: { EndDialog(hDlg,IDCANCEL); break; } case WM_HELP: //F1 or question box
{ WinHelp(((LPHELPINFO)lParam)->hItemHandle, PWRMANHLP, HELP_WM_HELP, (ULONG_PTR)(LPTSTR)g_UPSCustomHelpIDs); break; } case WM_CONTEXTMENU: // right mouse click help
{ WinHelp((HWND)wParam, PWRMANHLP, HELP_CONTEXTMENU, (ULONG_PTR)(LPTSTR)g_UPSCustomHelpIDs); break; } default: { bRes = FALSE; } } return bRes; }
/*
* void initUPSCustomDlg (HWND hDlg, * UINT uMsg, * WPARAM wParam, * LPARAM lParam); * * Description: initializes global data and controls for UPS custom dialog * * Additional Information: * * Parameters: * * HWND hDlg :- Handle to dialog box * * UINT uMsg :- message ID * * WPARAM wParam :- Specifies additional message-specific information. * * LPARAM lParam :- Specifies additional message-specific information. * * Return Value: none */ void initUPSCustomDlg(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { TCHAR szCustomCaption[MAX_PATH] = _T("");
g_CustomData = (struct _customData*)lParam;
/*
* initialize the title of the dialog box * We can't get "here" without a port being * defined, so there's no need to check that * one is returned; is has to have been */ LoadString( GetUPSModuleHandle(), IDS_CUSTOM_CAPTION, szCustomCaption, sizeof(szCustomCaption)/sizeof(TCHAR));
// Check buffer to ensure that there is sufficient room to append the port to the caption string
if ((_tcslen(szCustomCaption) + _tcslen(g_CustomData->lpszCurrentPort)) < (sizeof(szCustomCaption)/sizeof(TCHAR))) { _tcscat( szCustomCaption, g_CustomData->lpszCurrentPort); }
SetWindowText( hDlg, szCustomCaption);
/*
* init the radio buttons according to the UPS options flags. */ setRadioButtons( hDlg, *(g_CustomData->lpdwCurrentCustomOptions)); }
/*
* void setRadioButtons (HWND hDlg); * * Description: updates the polarity radio buttons * * Additional Information: * * Parameters: * * HWND hDlg :- Handle to dialog box * * Return Value: none */ void setRadioButtons(HWND hDlg, DWORD dwTmpConfig) { /*
* set the radio buttons * NOTE: These funcs require the button IDs to be sequential */
CheckDlgButton (hDlg, IDC_ONBAT_CHECK , (BOOL) dwTmpConfig & UPS_POWERFAILSIGNAL); CheckDlgButton (hDlg, IDC_LOWBAT_CHECK , (BOOL) dwTmpConfig & UPS_LOWBATTERYSIGNAL); CheckDlgButton (hDlg, IDC_TURNOFF_CHECK , (BOOL) dwTmpConfig & UPS_SHUTOFFSIGNAL);
CheckRadioButton( hDlg, IDC_ONBAT_POS, IDC_ONBAT_NEG, (dwTmpConfig & UPS_POSSIGONPOWERFAIL)?IDC_ONBAT_POS:IDC_ONBAT_NEG); EnableWindow( GetDlgItem( hDlg, IDC_ONBAT_POS ), (BOOL) dwTmpConfig & UPS_POWERFAILSIGNAL ); EnableWindow( GetDlgItem( hDlg, IDC_ONBAT_NEG ), (BOOL) dwTmpConfig & UPS_POWERFAILSIGNAL );
CheckRadioButton( hDlg, IDC_LOWBAT_POS, IDC_LOWBAT_NEG, (dwTmpConfig & UPS_POSSIGONLOWBATTERY)?IDC_LOWBAT_POS:IDC_LOWBAT_NEG); EnableWindow( GetDlgItem( hDlg, IDC_LOWBAT_POS ), (BOOL) dwTmpConfig & UPS_LOWBATTERYSIGNAL ); EnableWindow( GetDlgItem( hDlg, IDC_LOWBAT_NEG ), (BOOL) dwTmpConfig & UPS_LOWBATTERYSIGNAL );
CheckRadioButton( hDlg, IDC_TURNOFF_POS, IDC_TURNOFF_NEG, (dwTmpConfig & UPS_POSSIGSHUTOFF)?IDC_TURNOFF_POS:IDC_TURNOFF_NEG); EnableWindow( GetDlgItem( hDlg, IDC_TURNOFF_POS ), (BOOL) dwTmpConfig & UPS_SHUTOFFSIGNAL ); EnableWindow( GetDlgItem( hDlg, IDC_TURNOFF_NEG ), (BOOL) dwTmpConfig & UPS_SHUTOFFSIGNAL ); }
/*
* void getRadioButtons (HWND hDlg); * * Description: reads the polarity radio buttons * * Additional Information: * * Parameters: * * HWND hDlg :- Handle to dialog box * * Return Value: none */ DWORD getRadioButtons(HWND hDlg, DWORD dwTmpConfig) { /*
* NOTE: We are forcing the UPS, PowerFail signal, Low Battery signal * and Turn Off signal bits to true, just as a precautionary measure. */ // dwTmpConfig |= UPS_DEFAULT_SIGMASK;
// dwTmpConfig |= UPS_INSTALLED;
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_ONBAT_CHECK)) ? (dwTmpConfig | UPS_POWERFAILSIGNAL) : (dwTmpConfig & ~UPS_POWERFAILSIGNAL);
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_LOWBAT_CHECK)) ? (dwTmpConfig | UPS_LOWBATTERYSIGNAL) : (dwTmpConfig & ~UPS_LOWBATTERYSIGNAL);
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_TURNOFF_CHECK)) ? (dwTmpConfig | UPS_SHUTOFFSIGNAL) : (dwTmpConfig & ~UPS_SHUTOFFSIGNAL);
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_ONBAT_POS)) ? (dwTmpConfig | UPS_POSSIGONPOWERFAIL) : (dwTmpConfig & ~UPS_POSSIGONPOWERFAIL);
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_LOWBAT_POS)) ? (dwTmpConfig | UPS_POSSIGONLOWBATTERY) : (dwTmpConfig & ~UPS_POSSIGONLOWBATTERY);
dwTmpConfig = (BST_CHECKED==IsDlgButtonChecked(hDlg,IDC_TURNOFF_POS)) ? (dwTmpConfig | UPS_POSSIGSHUTOFF) : (dwTmpConfig & ~UPS_POSSIGSHUTOFF);
return dwTmpConfig; }
|