400 lines
10 KiB
C
400 lines
10 KiB
C
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// File Name:
|
||
|
// oemads.c
|
||
|
//
|
||
|
// Description:
|
||
|
// This is the dialog proc for the OEM Ads page.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#include "pch.h"
|
||
|
#include "resource.h"
|
||
|
|
||
|
const TCHAR TEXT_EXTENSION[] = _T("bmp");
|
||
|
|
||
|
static TCHAR *StrBitmapFiles;
|
||
|
static TCHAR *StrAllFiles;
|
||
|
static TCHAR g_szTextFileFilter[MAX_PATH + 1];
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Function: OnOemAdsInitDialog
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// Arguments: IN HWND hwnd - handle to the dialog
|
||
|
//
|
||
|
// Returns: VOID
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
static VOID
|
||
|
OnOemAdsInitDialog( IN HWND hwnd )
|
||
|
{
|
||
|
HRESULT hrPrintf;
|
||
|
|
||
|
//
|
||
|
// Load the resource strings
|
||
|
//
|
||
|
|
||
|
StrBitmapFiles = MyLoadString( IDS_BITMAP_FILES );
|
||
|
|
||
|
StrAllFiles = MyLoadString( IDS_ALL_FILES );
|
||
|
|
||
|
//
|
||
|
// Build the text file filter string
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// The question marks (?) are just placehoders for where the NULL char
|
||
|
// will be inserted.
|
||
|
//
|
||
|
|
||
|
hrPrintf=StringCchPrintf( g_szTextFileFilter, AS(g_szTextFileFilter),
|
||
|
_T("%s(*.bmp)?*.bmp?%s(*.*)?*.*?"),
|
||
|
StrBitmapFiles,
|
||
|
StrAllFiles );
|
||
|
|
||
|
ConvertQuestionsToNull( g_szTextFileFilter );
|
||
|
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Function: OnSetActiveOemAds
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// Arguments: IN HWND hwnd - handle to the dialog
|
||
|
//
|
||
|
// Returns: VOID
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
static VOID
|
||
|
OnSetActiveOemAds( IN HWND hwnd)
|
||
|
{
|
||
|
|
||
|
//
|
||
|
// Set the window text for Logo Bitmap and Background Bitmap
|
||
|
//
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_LOGOBITMAP,
|
||
|
WM_SETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) GenSettings.lpszLogoBitmap);
|
||
|
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_BACKGROUNDBITMAP,
|
||
|
WM_SETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) GenSettings.lpszBackgroundBitmap);
|
||
|
|
||
|
PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_BACK | PSWIZB_NEXT);
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Function: OnBrowseLoadBitmap
|
||
|
//
|
||
|
// Purpose: Creates a browse window for the user to select a bitmap and
|
||
|
// stores the path in the appropriate string (logo or background)
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
VOID
|
||
|
OnBrowseLoadBitmap( IN HWND hwnd, IN WORD wControlID ) {
|
||
|
|
||
|
TCHAR szBitmapString[MAX_PATH] = _T("");
|
||
|
|
||
|
OPENFILENAME ofn;
|
||
|
DWORD dwFlags;
|
||
|
TCHAR PathBuffer[MAX_PATH];
|
||
|
INT iRet;
|
||
|
|
||
|
dwFlags = OFN_HIDEREADONLY |
|
||
|
OFN_PATHMUSTEXIST;
|
||
|
|
||
|
GetCurrentDirectory(MAX_PATH, PathBuffer);
|
||
|
|
||
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
||
|
ofn.hwndOwner = hwnd;
|
||
|
ofn.hInstance = NULL;
|
||
|
ofn.lpstrFilter = g_szTextFileFilter;
|
||
|
ofn.lpstrCustomFilter = NULL;
|
||
|
ofn.nMaxCustFilter = 0L;
|
||
|
ofn.nFilterIndex = 1;
|
||
|
ofn.lpstrFile = szBitmapString;
|
||
|
ofn.nMaxFile = MAX_PATH;
|
||
|
ofn.lpstrFileTitle = NULL;
|
||
|
ofn.nMaxFileTitle = 0;
|
||
|
ofn.lpstrInitialDir = PathBuffer;
|
||
|
ofn.lpstrTitle = NULL;
|
||
|
ofn.Flags = dwFlags;
|
||
|
ofn.nFileOffset = 0;
|
||
|
ofn.nFileExtension = 0;
|
||
|
ofn.lpstrDefExt = TEXT_EXTENSION;
|
||
|
|
||
|
iRet = GetOpenFileName(&ofn);
|
||
|
|
||
|
if ( ! iRet )
|
||
|
return; // user pressed cancel on the dialog
|
||
|
|
||
|
//
|
||
|
// Now that we have the bitmap, store it in the proper string and fill
|
||
|
// the appropriate edit field
|
||
|
//
|
||
|
|
||
|
if( wControlID == IDC_LOGOBITMAP ) {
|
||
|
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_LOGOBITMAP,
|
||
|
WM_SETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) szBitmapString);
|
||
|
|
||
|
}
|
||
|
else {
|
||
|
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_BACKGROUNDBITMAP,
|
||
|
WM_SETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) szBitmapString);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Function: OnWizNextOemAds
|
||
|
//
|
||
|
// Purpose: Called when the Next button is pushed. Copies the bitmaps, if
|
||
|
// any chosen to the distribution share
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
BOOL OnWizNextOemAds( IN HWND hwnd ) {
|
||
|
|
||
|
TCHAR szLogoDestination[MAX_PATH + 1] = _T("");
|
||
|
TCHAR szBackgroundDestination[MAX_PATH + 1] = _T("");
|
||
|
TCHAR szBitmapDestPath[MAX_PATH + 1] = _T("");
|
||
|
TCHAR szBackSlash[] = _T("\\");
|
||
|
BOOL bStayHere = FALSE;
|
||
|
|
||
|
DWORD dwReturnValue;
|
||
|
|
||
|
//
|
||
|
// If OemFilesPath doesn't have a value, give it one.
|
||
|
//
|
||
|
|
||
|
if ( WizGlobals.OemFilesPath[0] == _T('\0') ) {
|
||
|
|
||
|
ConcatenatePaths( WizGlobals.OemFilesPath,
|
||
|
WizGlobals.DistFolder,
|
||
|
_T("$oem$"),
|
||
|
NULL );
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Force creation of the $oem$ dir (if it doesn't exist already)
|
||
|
//
|
||
|
|
||
|
if ( ! EnsureDirExists(WizGlobals.OemFilesPath) ) {
|
||
|
ReportErrorId(hwnd,
|
||
|
MSGTYPE_ERR | MSGTYPE_WIN32,
|
||
|
IDS_ERR_CREATE_FOLDER,
|
||
|
WizGlobals.OemFilesPath);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Fill the global structs with the edit box data
|
||
|
//
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_LOGOBITMAP,
|
||
|
WM_GETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) GenSettings.lpszLogoBitmap);
|
||
|
|
||
|
SendDlgItemMessage(hwnd,
|
||
|
IDC_BACKGROUNDBITMAP,
|
||
|
WM_GETTEXT,
|
||
|
(WPARAM) MAX_PATH,
|
||
|
(LPARAM) GenSettings.lpszBackgroundBitmap);
|
||
|
|
||
|
//
|
||
|
// Set the path where the bitmaps are to be copied to
|
||
|
// On a sysprep they go into the sysprep dir
|
||
|
// On a regular install they go to the $OEM$ dir
|
||
|
//
|
||
|
|
||
|
if( WizGlobals.iProductInstall == PRODUCT_SYSPREP )
|
||
|
{
|
||
|
|
||
|
ExpandEnvironmentStrings( _T("%SystemDrive%"),
|
||
|
szBitmapDestPath,
|
||
|
MAX_PATH );
|
||
|
|
||
|
lstrcatn( szBitmapDestPath, _T("\\sysprep"), MAX_PATH );
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
lstrcpyn( szBitmapDestPath, WizGlobals.OemFilesPath, MAX_PATH + 1 );
|
||
|
}
|
||
|
|
||
|
|
||
|
if( GenSettings.lpszLogoBitmap[0] != _T('\0') ) {
|
||
|
|
||
|
//
|
||
|
// Build up the destination path
|
||
|
//
|
||
|
ConcatenatePaths( szLogoDestination,
|
||
|
szBitmapDestPath,
|
||
|
MyGetFullPath( GenSettings.lpszLogoBitmap ),
|
||
|
NULL );
|
||
|
|
||
|
if( ! DoesFileExist( szLogoDestination ) ) {
|
||
|
|
||
|
if ( ! CopyFile(GenSettings.lpszLogoBitmap, szLogoDestination, TRUE) ) {
|
||
|
|
||
|
ReportErrorId(hwnd,
|
||
|
MSGTYPE_ERR | MSGTYPE_WIN32,
|
||
|
IDS_ERR_COPY_FILE,
|
||
|
GenSettings.lpszLogoBitmap, szLogoDestination);
|
||
|
|
||
|
bStayHere = TRUE;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if( GenSettings.lpszBackgroundBitmap[0] != _T('\0') ) {
|
||
|
|
||
|
//
|
||
|
// Build up the destination path
|
||
|
//
|
||
|
ConcatenatePaths( szBackgroundDestination,
|
||
|
szBitmapDestPath,
|
||
|
MyGetFullPath( GenSettings.lpszBackgroundBitmap ),
|
||
|
NULL);
|
||
|
|
||
|
if( ! DoesFileExist( szBackgroundDestination ) ) {
|
||
|
|
||
|
if ( ! CopyFile( GenSettings.lpszBackgroundBitmap,
|
||
|
szBackgroundDestination,
|
||
|
TRUE ) ) {
|
||
|
|
||
|
ReportErrorId(hwnd,
|
||
|
MSGTYPE_ERR | MSGTYPE_WIN32,
|
||
|
IDS_ERR_COPY_FILE,
|
||
|
GenSettings.lpszBackgroundBitmap,
|
||
|
szBackgroundDestination);
|
||
|
|
||
|
bStayHere = TRUE;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Route the wizard
|
||
|
//
|
||
|
return (!bStayHere );
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Function: DlgOemAdsPage
|
||
|
//
|
||
|
// Purpose: This is the dialog procedure for the OEM Ads page.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
INT_PTR CALLBACK DlgOemAdsPage(
|
||
|
IN HWND hwnd,
|
||
|
IN UINT uMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LPARAM lParam)
|
||
|
{
|
||
|
|
||
|
BOOL bStatus = TRUE;
|
||
|
|
||
|
switch (uMsg) {
|
||
|
|
||
|
case WM_INITDIALOG:
|
||
|
OnOemAdsInitDialog( hwnd );
|
||
|
break;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
|
||
|
switch ( LOWORD(wParam) ) {
|
||
|
|
||
|
case IDC_LOGOBITMAPBROWSE:
|
||
|
|
||
|
if ( HIWORD(wParam) == BN_CLICKED )
|
||
|
OnBrowseLoadBitmap( hwnd, IDC_LOGOBITMAP );
|
||
|
|
||
|
break;
|
||
|
|
||
|
case IDC_BACKGROUNDBITMAPBROWSE:
|
||
|
|
||
|
if ( HIWORD(wParam) == BN_CLICKED )
|
||
|
OnBrowseLoadBitmap( hwnd, IDC_BACKGROUNDBITMAP );
|
||
|
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
|
||
|
bStatus = FALSE;
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_NOTIFY:
|
||
|
{
|
||
|
LPNMHDR pnmh = (LPNMHDR)lParam;
|
||
|
switch( pnmh->code ) {
|
||
|
|
||
|
case PSN_QUERYCANCEL:
|
||
|
|
||
|
CancelTheWizard( hwnd );
|
||
|
|
||
|
break;
|
||
|
|
||
|
case PSN_SETACTIVE:
|
||
|
|
||
|
OnSetActiveOemAds( hwnd );
|
||
|
|
||
|
break;
|
||
|
|
||
|
case PSN_WIZBACK:
|
||
|
break;
|
||
|
|
||
|
case PSN_WIZNEXT:
|
||
|
|
||
|
if ( !OnWizNextOemAds( hwnd ))
|
||
|
WIZ_FAIL(hwnd);
|
||
|
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
bStatus = FALSE;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
bStatus = FALSE;
|
||
|
break;
|
||
|
}
|
||
|
return bStatus;
|
||
|
}
|