//---------------------------------------------------------------------------- // // 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; }