Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

327 lines
10 KiB

/*****************************************************************************
*
* $Workfile: CfgAll.cpp $
*
* Copyright (C) 1997 Hewlett-Packard Company.
* Copyright (c) 1997 Microsoft Corporation.
* All rights reserved.
*
* 11311 Chinden Blvd.
* Boise, Idaho 83714
*
*****************************************************************************/
/*
* Author: Becky Jacobsen
*
* This file contains the dialog for configuring an existing port for the port monitor.
*/
#include "precomp.h"
#include "CoreUI.h"
#include "resource.h" // includes the definitions for the resources
#include "RTcpData.h"
#include "CfgAll.h" // includes the application-specific information
#include "TcpMonUI.h"
// Global variables:
extern HINSTANCE g_hInstance;
//
// FUNCTION: AllPortsPage(HWND, UINT, UINT, LONG)
//
// PURPOSE: To process messages from the page for configuring all
// the tcp monitor ports in the system.
//
// MESSAGES:
//
// WM_INITDIALOG - intializes the page
// WM_COMMAND - handle button clicks
// WM_NOTIFY - handle reset
// WM_HSCROLL - handle scroll events from the 2 trackbars
//
BOOL APIENTRY AllPortsPage(HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
CAllPortsPage *wndDlg = NULL;
wndDlg = (CAllPortsPage *)GetWindowLongPtr(hDlg, GWLP_USERDATA);
switch(message)
{
case WM_INITDIALOG:
wndDlg = (CAllPortsPage *) new CAllPortsPage;
if( wndDlg == NULL )
return( FALSE );
SetWindowLongPtr(hDlg, GWLP_USERDATA, (UINT_PTR)wndDlg);
wndDlg->OnInitDialog(hDlg, wParam, lParam);
break;
case WM_COMMAND:
wndDlg->OnCommand(hDlg, wParam, lParam);
break;
case WM_NOTIFY:
return wndDlg->OnWMNotify(hDlg, wParam, lParam);
break;
case WM_HSCROLL:
wndDlg->OnHscroll(hDlg, wParam, lParam);
break;
case WM_HELP:
OnHelp(IDD_DIALOG_CONFIG_ALL, hDlg, lParam);
break;
case WM_DESTROY:
delete wndDlg;
break;
default:
return FALSE;
}
return TRUE;
} // AllPortsPage
//
// FUNCTION: CAllPortsPage Constructor
//
// PURPOSE:
//
CAllPortsPage::CAllPortsPage()
{
} // Constructor
//
// FUNCTION: OnInitDialog(HWND hDlg)
//
// PURPOSE: To initialize the allports dialog. Calls SetupTrackBar for each dialog
// and checks or unchecks the Status Update enabled check box as appropriate.
//
BOOL CAllPortsPage::OnInitDialog(HWND hDlg,
WPARAM,
LPARAM lParam)
{
m_pParams = (CFG_PARAM_PACKAGE *) ((PROPSHEETPAGE *) lParam)->lParam;
SetupTrackBar(hDlg, IDC_TRACKBAR_FAILURE_TIMEOUT, IDC_TRACKBAR_TOP, FT_MIN, FT_MAX, m_pParams->pData->FailureTimeout, FT_PAGESIZE, IDC_DIGITAL_FAILURE_TIMEOUT);
SendMessage(GetDlgItem(hDlg, IDC_CHECK_STATUSUPDATE), BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
if(m_pParams->pData->SUEnabled == FALSE) {
// EnableStatusUpdate(hDlg, FALSE);
CheckDlgButton(hDlg, IDC_CHECK_STATUSUPDATE, BST_UNCHECKED);
} else {
CheckDlgButton(hDlg, IDC_CHECK_STATUSUPDATE, BST_CHECKED);
}
return TRUE;
} // OnAllPortsInitDialog
//
// FUNCTION: OnCommand
//
// PURPOSE: To process windows WM_COMMAND messages
//
BOOL CAllPortsPage::OnCommand(HWND hDlg,
WPARAM wParam,
LPARAM lParam)
{
if(HIWORD(wParam) == BN_CLICKED) {
// a button is being clicked.
OnBnClicked(hDlg, wParam, lParam);
}
return TRUE;
} // OnCommand
//
// FUNCTION: OnWMNotify
//
// PURPOSE: This function is called by the page in response to a WM_NOTIFY message.
//
// lParam - second message parameter of the WM_NOTIFY message
//
BOOL CAllPortsPage::OnWMNotify(HWND hDlg, WPARAM, LPARAM lParam)
{
switch(((NMHDR FAR *) lParam)->code) {
case PSN_APPLY:
//
// The settings will be written by the apply in cfgport.cpp
// OnOk(hDlg);
break;
case PSN_SETACTIVE:
{
}
break;
case PSN_RESET:
{
}
break;
case PSN_QUERYCANCEL:
m_pParams->dwLastError = ERROR_CANCELLED;
return FALSE;
break;
default:
break;// do nothing
}
return TRUE;
} // OnWMNotify
//
// FUNCTION: OnHscroll(HWND hDlg, WPARAM wParam, LPARAM lParam)
//
// PURPOSE: To set the Digital Readout window text when either of the
// trackbar thumbs are moved by the user.
//
void CAllPortsPage::OnHscroll(HWND hDlg,
WPARAM wParam,
LPARAM lParam)
{
TCHAR strValue[15] = NULLSTR;
long idTrackbar = 0;
long idDigitalReadout = 0;
// I need the child window ID of this trackbar to get the id
// of the corresponding static display control.
idTrackbar = GetWindowLong((HWND)lParam, GWL_ID);
if(idTrackbar == IDC_TRACKBAR_FAILURE_TIMEOUT) {
idDigitalReadout = IDC_DIGITAL_FAILURE_TIMEOUT;
}
switch(LOWORD(wParam)) // loword of wparam is the notification code.
{
case TB_BOTTOM: // VK_END
case TB_ENDTRACK: // WM_KEYUP (the user released a key that sent a relevant virtual-key code)
case TB_LINEDOWN: // VK_RIGHT or VK_DOWN
case TB_LINEUP: // VK_LEFT or VK_UP
case TB_PAGEDOWN: // VK_NEXT (the user clicked the channel below or to the right of the slider)
case TB_PAGEUP: // VK_PRIOR (the user clicked the channel above or to the left of the slider)
case TB_TOP: // VK_HOME
{
int iPosition = SendMessage(GetDlgItem(hDlg, idTrackbar), TBM_GETPOS, 0, 0);
if(idTrackbar == IDC_TRACKBAR_FAILURE_TIMEOUT)
{
m_pParams->pData->FailureTimeout = iPosition;
}
_stprintf(strValue, TEXT("%d"), iPosition);
}
break;
case TB_THUMBPOSITION: // WM_LBUTTONUP following a TB_THUMBTRACK notification message
{
// this is the only case where we don't have to do anything.
// int iPosition = HIWORD(wParam);
}
break;
case TB_THUMBTRACK: // Slider movement (the user dragged the slider)
{
int iPosition = HIWORD(wParam);
if(idTrackbar == IDC_TRACKBAR_FAILURE_TIMEOUT)
{
m_pParams->pData->FailureTimeout = iPosition;
}
_stprintf(strValue, TEXT("%d"), iPosition);
}
break;
default:
break;
}
SetWindowText(GetDlgItem(hDlg, idDigitalReadout), strValue);
} // OnHscroll
//
// FUNCTION: OnBnClicked(HWND hDlg, WPARAM wParam, LPARAM lParam)
//
// PURPOSE: When the enable Status Update checkbox is checked or unchecked
// the status update controls are enabled or disabled respectively.
//
void CAllPortsPage::OnBnClicked(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
if(LOWORD(wParam) == IDC_CHECK_STATUSUPDATE) {
// the Enable Status Update button was clicked.
UINT state = IsDlgButtonChecked(hDlg, LOWORD(wParam));
if(state == BST_UNCHECKED) {
m_pParams->pData->SUEnabled = FALSE;
} else {
m_pParams->pData->SUEnabled = TRUE;
}
}
} // OnBnClicked
//
// FUNCTION: SetupTrackBar(...)
//
// PURPOSE: To get the window position, create the track bar and setup it's range
// and current thumb position.
//
// Arguments: hDlg is the dialog box that will be the parent of the track bar.
// iChildWindowID is the id given to the Track Bar
// iPositionCtrl is the id of a picture frame on the dialog that will
// be used to position the track bar.
// iRangeMin is the minimum value the track bar can be set to.
// iRangeMax is the maximum value the track bar can be set to.
// lPosition is the current thumb position.
// lPageSize is the amount the thumb will jump by when the user clicks
// on the track bar instead of dragging the thumb around.
// iAssociatedDigitalReadout is the static text control that displays
// the current value the thumb is indicating.
// hToolTip is the tool tip control to register a tool tip with.
//
void CAllPortsPage::SetupTrackBar(HWND hDlg,
int iChildWindowID,
int iPositionCtrl,
int iRangeMin,
int iRangeMax,
long lPosition,
long lPageSize,
int iAssociatedDigitalReadout)
{
HWND hTrackBar = NULL;
RECT r;
POINT pt1;
POINT pt2;
GetWindowRect(GetDlgItem(hDlg, iPositionCtrl), &r);
pt1.x = r.left;
pt1.y = r.top;
pt2.x = r.right;
pt2.y = r.bottom;
ScreenToClient(hDlg, &pt1);
ScreenToClient(hDlg, &pt2);
hTrackBar = CreateWindowEx(0, TRACKBAR_CLASS, TEXT(""), WS_VISIBLE | WS_CHILD | WS_GROUP | WS_TABSTOP |
TBS_HORZ, pt1.x, pt1.y, pt2.x - pt1.x,
pt2.y - pt1.y, hDlg, (HMENU)iChildWindowID, g_hInstance, NULL);
SendMessage(hTrackBar, TBM_SETRANGE, TRUE, MAKELONG(iRangeMin, iRangeMax));
SendMessage(hTrackBar, TBM_SETPAGESIZE, 0, lPageSize);
SendMessage(hTrackBar, TBM_SETPOS, TRUE, lPosition);
TCHAR strValue[5];
_stprintf(strValue, TEXT("%d"), lPosition);
SetWindowText(GetDlgItem(hDlg, iAssociatedDigitalReadout), strValue);
} // SetupTrackBar