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.
 
 
 
 
 
 

448 lines
12 KiB

//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 20002 Microsoft Corporation
//
// Module Name:
// AdvancedDlg.cpp
//
// Maintained By:
// Galen Barbee (GalenB) 10-APR-2002
//
//////////////////////////////////////////////////////////////////////////////
#include "Pch.h"
#include "AdvancedDlg.h"
#include "WizardUtils.h"
#include "WizardHelp.h"
#include "SummaryPage.h"
#include <HtmlHelp.h>
//////////////////////////////////////////////////////////////////////////////
// Constants
//////////////////////////////////////////////////////////////////////////////
DEFINE_THISCLASS("AdvancedDlg");
//////////////////////////////////////////////////////////////////////////////
// Context-sensitive help table.
//////////////////////////////////////////////////////////////////////////////
const DWORD g_rgidAdvancedDlgHelpIDs[] =
{
IDC_ADVANCED_RB_FULL_CONFIG, IDH_ADVANCED_RB_FULL_CONFIG,
IDC_ADVANCED_S_FULL_CONFIG_DESC, IDH_ADVANCED_RB_FULL_CONFIG,
IDC_ADVANCED_RB_MIN_CONFIG, IDH_ADVANCED_RB_MIN_CONFIG,
IDC_ADVANCED_S_MIN_CONFIG_DESC, IDH_ADVANCED_RB_MIN_CONFIG,
IDC_ADVANCED_S_MIN_CONFIG_DESC2, IDH_ADVANCED_RB_MIN_CONFIG,
IDC_ADVANCED_S_MIN_CONFIG_DESC3, IDH_ADVANCED_RB_MIN_CONFIG,
0, 0
};
//////////////////////////////////////////////////////////////////////////////
// Static Function Prototypes
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::S_HrDisplayModalDialog
//
// Description:
// Display the dialog box.
//
// Arguments:
// hwndParentIn - Parent window for the dialog box.
// pccwIn - CClusCfgWizard pointer for talking to the middle tier.
// pssaOut - array of all the initial IsManaged states
//
// Return Values:
// S_OK - Operation completed successfully.
//
// Remarks:
//
//--
//////////////////////////////////////////////////////////////////////////////
HRESULT
CAdvancedDlg::S_HrDisplayModalDialog(
HWND hwndParentIn
, CClusCfgWizard * pccwIn
)
{
TraceFunc( "" );
Assert( pccwIn != NULL );
HRESULT hr = S_OK;
INT_PTR dlgResult = IDOK;
//
// Display the dialog.
//
{
CAdvancedDlg dlg( pccwIn );
dlgResult = DialogBoxParam(
g_hInstance
, MAKEINTRESOURCE( IDD_ADVANCED )
, hwndParentIn
, CAdvancedDlg::S_DlgProc
, (LPARAM) &dlg
);
if ( dlgResult == IDOK )
{
hr = S_OK;
} // if:
else
{
hr = S_FALSE;
} // else:
}
HRETURN( hr );
} //*** CAdvancedDlg::S_HrDisplayModalDialog
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::CAdvancedDlg
//
// Description:
// Constructor.
//
// Arguments:
// pccwIn - CClusCfgWizard for talking to the middle tier.
//
// Return Values:
// None.
//
//--
//////////////////////////////////////////////////////////////////////////////
CAdvancedDlg::CAdvancedDlg(
CClusCfgWizard * pccwIn
)
: m_pccw( pccwIn )
{
TraceFunc( "" );
Assert( pccwIn != NULL );
// m_hwnd
m_pccw->AddRef();
TraceFuncExit();
} //*** CAdvancedDlg::CAdvancedDlg
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::~CAdvancedDlg
//
// Description:
// Destructor.
//
// Arguments:
// None.
//
// Return Values:
// None.
//
//--
//////////////////////////////////////////////////////////////////////////////
CAdvancedDlg::~CAdvancedDlg( void )
{
TraceFunc( "" );
if ( m_pccw != NULL )
{
m_pccw->Release();
} // if:
TraceFuncExit();
} //*** CAdvancedDlg::~CAdvancedDlg
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::S_DlgProc
//
// Description:
// Dialog proc for the Quorum dialog box.
//
// Arguments:
// hwndDlgIn - Dialog box window handle.
// nMsgIn - Message ID.
// wParam - Message-specific parameter.
// lParam - Message-specific parameter.
//
// Return Values:
// TRUE - Message has been handled.
// FALSE - Message has not been handled yet.
//
// Remarks:
// It is expected that this dialog box is invoked by a call to
// DialogBoxParam() with the lParam argument set to the address of the
// instance of this class.
//
//--
//////////////////////////////////////////////////////////////////////////////
INT_PTR
CALLBACK
CAdvancedDlg::S_DlgProc(
HWND hwndDlgIn
, UINT nMsgIn
, WPARAM wParam
, LPARAM lParam
)
{
// Don't do TraceFunc because every mouse movement
// will cause this function to be called.
WndMsg( hwndDlgIn, nMsgIn, wParam, lParam );
LRESULT lr = FALSE;
CAdvancedDlg * pdlg;
//
// Get a pointer to the class.
//
if ( nMsgIn == WM_INITDIALOG )
{
SetWindowLongPtr( hwndDlgIn, GWLP_USERDATA, lParam );
pdlg = reinterpret_cast< CAdvancedDlg * >( lParam );
pdlg->m_hwnd = hwndDlgIn;
} // if:
else
{
pdlg = reinterpret_cast< CAdvancedDlg * >( GetWindowLongPtr( hwndDlgIn, GWLP_USERDATA ) );
} // else:
if ( pdlg != NULL )
{
Assert( hwndDlgIn == pdlg->m_hwnd );
switch( nMsgIn )
{
case WM_INITDIALOG:
lr = pdlg->OnInitDialog();
break;
case WM_COMMAND:
lr = pdlg->OnCommand( HIWORD( wParam ), LOWORD( wParam ), reinterpret_cast< HWND >( lParam ) );
break;
case WM_HELP:
WinHelp(
(HWND)((LPHELPINFO) lParam)->hItemHandle,
CLUSCFG_HELP_FILE,
HELP_WM_HELP,
(ULONG_PTR) g_rgidAdvancedDlgHelpIDs
);
break;
case WM_CONTEXTMENU:
WinHelp(
(HWND)wParam,
CLUSCFG_HELP_FILE,
HELP_CONTEXTMENU,
(ULONG_PTR) g_rgidAdvancedDlgHelpIDs
);
break;
// no default clause needed
} // switch: nMsgIn
} // if: page is specified
return lr;
} //*** CAdvancedDlg::S_DlgProc
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::OnInitDialog
//
// Description:
// Handler for the WM_INITDIALOG message.
//
// Arguments:
// None.
//
// Return Values:
// TRUE Focus has been set.
// FALSE Focus has not been set.
//--
//////////////////////////////////////////////////////////////////////////////
LRESULT
CAdvancedDlg::OnInitDialog( void )
{
TraceFunc( "" );
Assert( m_pccw != NULL );
LRESULT lr = FALSE; // did not set focus
HRESULT hr = S_OK;
// EConfigurationSettings ecsConfigType = csFullConfig;
// BOOL fValuePresent = FALSE;
BOOL fMinConfig = FALSE;
//
// It's no big deal if we cannot read the settings from the registry
// since everything defaults to full config.
//
// STHR( m_pccw->HrReadSettings( &ecsConfigType, &fValuePresent ) );
//
// If the value is not present then we have to get the minconfig state from
// the wizard.
//
/*
if ( fValuePresent == FALSE )
{
BOOL fMinConfig;
hr = THR( m_pccw->get_MinimalConfiguration( &fMinConfig ) );
if ( FAILED( hr ) )
{
goto Cleanup;
} // if:
if ( fMinConfig )
{
ecsConfigType = csMinConfig;
} // if:
} // if:
SendDlgItemMessage( m_hwnd, IDC_ADVANCED_RB_MIN_CONFIG, BM_SETCHECK, ecsConfigType == csMinConfig ? BST_CHECKED : BST_UNCHECKED, 0 );
SendDlgItemMessage( m_hwnd, IDC_ADVANCED_RB_FULL_CONFIG, BM_SETCHECK, ecsConfigType != csMinConfig ? BST_CHECKED : BST_UNCHECKED, 0 );
SendDlgItemMessage( m_hwnd, IDC_ADVANCED_CB_MAKE_DEFAULT, BM_SETCHECK, fValuePresent ? BST_CHECKED : BST_UNCHECKED, 0 );
*/
hr = THR( m_pccw->get_MinimumConfiguration( &fMinConfig ) );
if ( FAILED( hr ) )
{
fMinConfig = FALSE;
} // if:
SendDlgItemMessage( m_hwnd, IDC_ADVANCED_RB_MIN_CONFIG, BM_SETCHECK, fMinConfig ? BST_CHECKED : BST_UNCHECKED, 0 );
SendDlgItemMessage( m_hwnd, IDC_ADVANCED_RB_FULL_CONFIG, BM_SETCHECK, fMinConfig ? BST_UNCHECKED : BST_CHECKED, 0 );
//Cleanup:
RETURN( lr );
} //*** CAdvancedDlg::OnInitDialog
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::OnCommand
//
// Description:
// Handler for the WM_COMMAND message.
//
// Arguments:
// idNotificationIn - Notification code.
// idControlIn - Control ID.
// hwndSenderIn - Handle for the window that sent the message.
//
// Return Values:
// TRUE - Message has been handled.
// FALSE - Message has not been handled yet.
//
//--
//////////////////////////////////////////////////////////////////////////////
LRESULT
CAdvancedDlg::OnCommand(
UINT idNotificationIn
, UINT idControlIn
, HWND hwndSenderIn
)
{
TraceFunc( "" );
LRESULT lr = FALSE;
switch ( idControlIn )
{
case IDOK:
THR( HrOnOK() );
EndDialog( m_hwnd, IDOK );
break;
case IDCANCEL:
EndDialog( m_hwnd, IDCANCEL );
break;
case IDHELP:
HtmlHelp( m_hwnd, L"mscsconcepts.chm::/SAG_MSCS3setup_21.htm", HH_DISPLAY_TOPIC, 0 );
break;
} // switch: idControlIn
RETURN( lr );
} //*** CAdvancedDlg::OnCommand
//////////////////////////////////////////////////////////////////////////////
//++
//
// CAdvancedDlg::HrOnOK
//
// Description:
// Processing to be done when OK is pressed.
//
// Arguments:
// None.
//
// Return Values:
// S_OK
// Success
//
//--
//////////////////////////////////////////////////////////////////////////////
HRESULT
CAdvancedDlg::HrOnOK( void )
{
TraceFunc( "" );
HRESULT hr = S_OK;
LRESULT lr;
BOOL fMinimalConfig = FALSE;
// BOOL fMakeDefault = FALSE;
lr = SendDlgItemMessage( m_hwnd, IDC_ADVANCED_RB_MIN_CONFIG, BM_GETCHECK, 0, 0 );
fMinimalConfig = ( lr == BST_CHECKED );
// lr = SendDlgItemMessage( m_hwnd, IDC_ADVANCED_CB_MAKE_DEFAULT, BM_GETCHECK, 0, 0 );
// fMakeDefault = ( lr == BST_CHECKED );
hr = THR( m_pccw->put_MinimumConfiguration( fMinimalConfig ) );
if ( FAILED( hr ) )
{
goto Cleanup;
} // if:
//
// It's okay if this fails because we have already set the config choice for this
// session. It's no big deal if we cannot write the settings into the registry
// since everything defaults to full config.
//
// THR( m_pccw->HrWriteSettings( fMinimalConfig ? csMinConfig : csFullConfig, !fMakeDefault ) );
Cleanup:
HRETURN( hr );
} //*** CAdvancedDlg::HrOnOK