windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/setupmgr/main/maindlgs.c
2020-09-26 16:20:57 +08:00

323 lines
8.3 KiB
C

//----------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
// All rights reserved.
//
// File Name:
// maindlgs.c
//
// Description:
// This file has dialog procedures for welcome and finish pages.
//
//----------------------------------------------------------------------------
#include "pch.h"
#include "resource.h"
//----------------------------------------------------------------------------
//
// Function: OnWelcomeInitDialog
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID
OnWelcomeInitDialog( IN HWND hwnd ) {
LPWSTR szCommandLineArguments;
INT argc;
LPWSTR *argv;
RECT rc;
LPTSTR lpWelcomeText = NULL;
SetWindowFont( GetDlgItem(hwnd, IDC_BIGBOLDTITLE),
FixedGlobals.hBigBoldFont,
TRUE );
// Set the welcome text
//
if (lpWelcomeText = AllocateString(NULL, IDS_WELCOME_TEXT_CORP))
{
SetDlgItemText(hwnd, IDC_WELCOME_TEXT, lpWelcomeText);
FREE(lpWelcomeText);
}
FixedGlobals.ScriptName[0] = _T('\0');
szCommandLineArguments = GetCommandLine();
argv = CommandLineToArgvW( szCommandLineArguments, &argc );
if( argv == NULL ) {
//
// If I can't get the command line, then do nothing
//
return;
}
//
// If they passed an answerfile on the command line, then jump to the
// load wizard page
//
if( argc > 1 ) {
lstrcpyn( FixedGlobals.ScriptName, argv[1], AS(FixedGlobals.ScriptName) );
PostMessage( GetParent( hwnd ),
PSM_SETCURSELID,
(WPARAM) 0,
(LPARAM) IDD_NEWOREDIT );
}
// Center the wizard.
//
if ( GetWindowRect(GetParent(hwnd), &rc) )
SetWindowPos(GetParent(hwnd), NULL, ((GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2), ((GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2), 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
}
//----------------------------------------------------------------------------
//
// Function: DlgWelcomePage
//
// Purpose: Dialog procedure for the welcome page.
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK DlgWelcomePage(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
BOOL bStatus = TRUE;
switch (uMsg) {
case WM_INITDIALOG:
// Not sure how to enable this on corp mode w/o the setupmgr.ini file,
// so just don't give the option for now.
//
ShowWindow(GetDlgItem(hwnd, IDC_HIDE), SW_HIDE);
if ( GET_FLAG(OPK_WELCOME) )
WIZ_PRESS(hwnd, PSBTN_NEXT);
else
{
SET_FLAG(OPK_WELCOME, TRUE);
OnWelcomeInitDialog( hwnd );
}
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code ) {
case PSN_QUERYCANCEL:
WIZ_CANCEL(hwnd);
break;
case PSN_SETACTIVE:
WIZ_BUTTONS(hwnd, PSWIZB_NEXT);
break;
case PSN_WIZNEXT:
bStatus = FALSE;
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}
#define NTEXTFIELDS 3
VOID
OnInitFinishPage(IN HWND hwnd)
{
TCHAR *FileNames[NTEXTFIELDS], *p;
int i,j;
SetWindowFont(GetDlgItem(hwnd, IDC_BIGBOLDTITLE),
FixedGlobals.hBigBoldFont,
TRUE);
//
// Put the filenames we want to display into an array and squish out
// the null strings
//
FileNames[0] = FixedGlobals.ScriptName;
FileNames[1] = FixedGlobals.UdfFileName;
FileNames[2] = FixedGlobals.BatchFileName;
for ( i=0; i<NTEXTFIELDS; i++ ) {
if ( FileNames[i] == NULL || FileNames[i][0] == _T('\0') ) {
for ( j=i; j<NTEXTFIELDS-1; j++ ) {
FileNames[j] = FileNames[j+1];
}
FileNames[j] = NULL;
}
}
SetDlgItemText( hwnd, IDC_FILENAME1, (p = FileNames[0]) ? p : _T("") );
SetDlgItemText( hwnd, IDC_FILENAME2, (p = FileNames[1]) ? p : _T("") );
SetDlgItemText( hwnd, IDC_FILENAME3, (p = FileNames[2]) ? p : _T("") );
// Show the batch example message if we have a batch file
//
ShowWindow(GetDlgItem(hwnd, IDC_BATCHTEXT), FixedGlobals.BatchFileName[0] ? SW_SHOW : SW_HIDE);
//
// ISSUE-2002/02/28-stelo- In the case of remote boot, we need to change the text
// message at the bottom of this page about the batch script
// Need to tell them to use the ris admin tool to enable
// the answer file.
//
PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_FINISH);
}
//----------------------------------------------------------------------------
//
// Function: DlgFinishPage
//
// Purpose: Dialog procedure for the finish page.
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK DlgFinishPage(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
BOOL bStatus = TRUE;
switch (uMsg) {
case WM_INITDIALOG:
OnInitFinishPage(hwnd);
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code ) {
//
// ISSUE-2002/02/28-stelo- A cancel button on the successful completion
// page doesn't make alot of sense either.
// What do other good wizards do???
//
case PSN_QUERYCANCEL:
CancelTheWizard(hwnd);
break;
case PSN_SETACTIVE:
break;
case PSN_WIZBACK:
break;
case PSN_WIZFINISH:
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}
//----------------------------------------------------------------------------
//
// Function: DlgFinish2Page
//
// Purpose: Unsuccessful completion page
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK DlgFinish2Page(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
BOOL bStatus = TRUE;
switch (uMsg) {
case WM_INITDIALOG:
SetWindowFont(GetDlgItem(hwnd, IDC_BIGBOLDTITLE),
FixedGlobals.hBigBoldFont,
TRUE);
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code ) {
//
// ISSUE-2002/02/28-stelo- What is the proper thing to do here?
// Disable the cancel button?
// Find out what other wizards do on the
// unsuccessful completion page.
//
case PSN_QUERYCANCEL:
break;
case PSN_SETACTIVE:
PropSheet_SetWizButtons(
GetParent(hwnd),
PSWIZB_FINISH );
break;
case PSN_WIZFINISH:
break;
default:
bStatus = FALSE;
break;
}
}
break;
default:
bStatus = FALSE;
break;
}
return bStatus;
}