|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999-2000 Microsoft Corporation
//
// Module Name:
// WelcomePage.cpp
//
// Maintained By:
// Geoffrey Pease (GPease) 12-MAY-2000
//
//////////////////////////////////////////////////////////////////////////////
#include "Pch.h"
#include "WelcomePage.h"
DEFINE_THISCLASS("CWelcomePage");
//////////////////////////////////////////////////////////////////////////////
//++
//
// CWelcomePage::CWelcomePage
//
// Description:
// Constructor.
//
// Arguments:
// ecamCreateAddModeIn -- Creating cluster or adding nodes to cluster.
//
// Return Values:
// None.
//
//--
//////////////////////////////////////////////////////////////////////////////
CWelcomePage::CWelcomePage( ECreateAddMode ecamCreateAddModeIn ) { TraceFunc( "" );
// m_hwnd
m_hFont = NULL; m_ecamCreateAddMode = ecamCreateAddModeIn;
TraceFuncExit();
} //*** CWelcomePage::CWelcomePage()
//////////////////////////////////////////////////////////////////////////////
//++
//
// CWelcomePage::~CWelcomePage( void )
//
//--
//////////////////////////////////////////////////////////////////////////////
CWelcomePage::~CWelcomePage( void ) { TraceFunc( "" );
if ( m_hFont != NULL ) { DeleteObject( m_hFont ); }
TraceFuncExit();
} //*** CWelcomePage::~CWelcomePage()
//////////////////////////////////////////////////////////////////////////////
//++
//
// LRESULT
// CWelcomePage::OnInitDialog( void )
//
//--
//////////////////////////////////////////////////////////////////////////////
LRESULT CWelcomePage::OnInitDialog( void ) { TraceFunc( "" );
LRESULT lr = TRUE; HDC hdc = NULL; HRESULT hr;
NONCLIENTMETRICS ncm;
LOGFONT LogFont; INT iSize;
DWORD dw; BOOL fRet;
WCHAR szFontSize[ 3 ]; // shouldn't be bigger than 2 digits!!
BSTR bstrRequirement = NULL; BSTR bstrFormattedReq = NULL; BSTR bstrRequirements = NULL; int idxids; int cidsRequirements; UINT * pidsRequirements; static UINT rgidsCreateRequirements[] = { IDS_WELCOME_CREATE_REQ_1 , IDS_WELCOME_CREATE_REQ_2 , IDS_WELCOME_CREATE_REQ_3 , IDS_WELCOME_CREATE_REQ_4 , IDS_WELCOME_CREATE_REQ_5 }; static UINT rgidsAddRequirements[] = { IDS_WELCOME_ADD_REQ_1 , IDS_WELCOME_ADD_REQ_2 };
//
// Make the Title static BIG and BOLD. Why the wizard control itself can't
// do this is beyond me!
//
ZeroMemory( &ncm, sizeof( ncm ) ); ZeroMemory( &LogFont, sizeof( LOGFONT ) );
//
// Find out the system default font metrics.
//
ncm.cbSize = sizeof( ncm ); fRet = SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 ); if ( ! fRet ) { goto Win32Error; }
//
// Copy it.
//
LogFont = ncm.lfMessageFont;
//
// Make it BOLD.
//
LogFont.lfWeight = FW_BOLD;
//
// Find out what we want it to look like.
//
dw = LoadString( g_hInstance, IDS_LARGEFONTNAME, LogFont.lfFaceName, ARRAYSIZE( LogFont.lfFaceName ) ); AssertMsg( dw != 0, "String missing!" );
dw = LoadString( g_hInstance, IDS_LARGEFONTSIZE, szFontSize, ARRAYSIZE( szFontSize ) ); AssertMsg( dw != 0, "String missing!" );
iSize = wcstoul( szFontSize, NULL, 10 );
//
// Grab the DC.
//
hdc = GetDC( m_hwnd ); if ( hdc == NULL ) { goto Win32Error; }
//
// Use the magic equation....
//
LogFont.lfHeight = 0 - ( GetDeviceCaps( hdc, LOGPIXELSY ) * iSize / 72 );
//
// Create the font.
//
m_hFont = CreateFontIndirect( &LogFont ); if ( m_hFont == NULL ) { goto Win32Error; }
//
// Apply the font.
//
SetWindowFont( GetDlgItem( m_hwnd, IDC_WELCOME_S_TITLE ), m_hFont, TRUE );
//
// Load the requirement text.
//
if ( m_ecamCreateAddMode == camCREATING ) { pidsRequirements = rgidsCreateRequirements; cidsRequirements = ARRAYSIZE( rgidsCreateRequirements ); } // if: creating a new cluster
else { pidsRequirements = rgidsAddRequirements; cidsRequirements = ARRAYSIZE( rgidsAddRequirements ); } // else: adding nodes to an existing cluster
for ( idxids = 0 ; idxids < cidsRequirements ; idxids++ ) { hr = HrLoadStringIntoBSTR( g_hInstance, pidsRequirements[ idxids ], &bstrRequirement ); if ( FAILED( hr ) ) { goto Cleanup; } hr = HrFormatStringIntoBSTR( L" - %1!ws!\n", &bstrFormattedReq, bstrRequirement ); if ( FAILED( hr ) ) { goto Cleanup; } hr = HrConcatenateBSTRs( &bstrRequirements, bstrFormattedReq ); if ( FAILED( hr ) ) { goto Cleanup; }
TraceSysFreeString( bstrRequirement ); bstrRequirement = NULL; } // for: each requirement string
SetDlgItemText( m_hwnd, IDC_WELCOME_S_REQUIREMENTS, bstrRequirements );
goto Cleanup;
Win32Error: TW32( GetLastError() );
Cleanup: if ( hdc != NULL ) { ReleaseDC( m_hwnd, hdc ); }
TraceSysFreeString( bstrRequirement ); TraceSysFreeString( bstrFormattedReq ); TraceSysFreeString( bstrRequirements );
RETURN( lr );
} //*** CWelcomePage::OnInitDialog()
//////////////////////////////////////////////////////////////////////////////
//++
//
// LRESULT
// CWelcomePage::OnNotify(
// WPARAM idCtrlIn,
// LPNMHDR pnmhdrIn
// )
//
//--
//////////////////////////////////////////////////////////////////////////////
LRESULT CWelcomePage::OnNotify( WPARAM idCtrlIn, LPNMHDR pnmhdrIn ) { TraceFunc( "" );
LRESULT lr = TRUE;
SetWindowLongPtr( m_hwnd, DWLP_MSGRESULT, 0 );
switch( pnmhdrIn->code ) { case PSN_SETACTIVE: PropSheet_SetWizButtons( GetParent( m_hwnd ), PSWIZB_NEXT ); break; }
RETURN( lr );
} //*** CWelcomePage::OnNotify()
//////////////////////////////////////////////////////////////////////////////
//++
//
// INT_PTR
// CALLBACK
// CWelcomePage::S_DlgProc(
// HWND hwhndDlgIn,
// UINT nMsgIn,
// WPARAM wParam,
// LPARAM lParam
// )
//
//--
//////////////////////////////////////////////////////////////////////////////
INT_PTR CALLBACK CWelcomePage::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;
CWelcomePage * pPage;
if ( nMsgIn == WM_INITDIALOG ) { PROPSHEETPAGE * ppage = reinterpret_cast< PROPSHEETPAGE * >( lParam ); SetWindowLongPtr( hwndDlgIn, GWLP_USERDATA, (LPARAM) ppage->lParam ); pPage = reinterpret_cast< CWelcomePage * >( ppage->lParam ); pPage->m_hwnd = hwndDlgIn; } else { pPage = reinterpret_cast< CWelcomePage *> ( GetWindowLongPtr( hwndDlgIn, GWLP_USERDATA ) ); }
if ( pPage != NULL ) { Assert( hwndDlgIn == pPage->m_hwnd );
switch ( nMsgIn ) { case WM_INITDIALOG: lr = pPage->OnInitDialog(); break;
case WM_NOTIFY: lr = pPage->OnNotify( wParam, reinterpret_cast< LPNMHDR >( lParam ) ); break;
// no default clause needed
} // switch: nMsgIn
} // if: page is specified
return lr;
} //*** CWelcomePage::S_DlgProc()
|