/****************************************************************************\ OEMCUST.C Microsoft Confidential Copyright (c) Microsoft Corporation 1998 All rights reserved Dialog proc and other stuff for the OEM custom file screen. 3/99 - Added by JCOHEN 09/2000 - Stephen Lodwick (STELO) Ported OPK Wizard to Whistler \****************************************************************************/ // // Include File(s): // #include "pch.h" #ifdef OEMCUST #include "newfiles.h" #include "wizard.h" #include "resource.h" // // Internal Defined Value(s): // #define OEMCUST_FILE _T("OEMCUST.HTM") // // Internal Global Variable(s): // TCHAR g_szOemCustomDir[MAX_PATH]; // // Internal Function Prototype(s): // static BOOL OnSetActive(HWND); static BOOL OnInit(HWND, HWND, LPARAM); static VOID OnCommand(HWND, INT, HWND, UINT); static BOOL OnNext(HWND); // // External Function(s): // BOOL CALLBACK OemCustDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { HANDLE_MSG(hwnd, WM_INITDIALOG, OnInit); HANDLE_MSG(hwnd, WM_COMMAND, OnCommand); case WM_NOTIFY: switch ( ((NMHDR FAR *) lParam)->code ) { case PSN_KILLACTIVE: case PSN_RESET: case PSN_WIZBACK: case PSN_WIZFINISH: break; case PSN_WIZNEXT: if ( !OnNext(hwnd) ) SetWindowLongPtr(hwnd, DWLP_MSGRESULT, -1); break; case PSN_QUERYCANCEL: WIZ_CANCEL(hwnd); break; case PSN_HELP: WIZ_HELP(); break; case PSN_SETACTIVE: g_App.dwCurrentHelp = IDH_SANDBOX; if ( OnSetActive(hwnd) ) PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_BACK | PSWIZB_NEXT); else SetWindowLongPtr(hwnd, DWLP_MSGRESULT, -1); break; default: return FALSE; } break; default: return FALSE; } return TRUE; } // // Internal Function(s): // static BOOL OnSetActive(HWND hwnd) { // If this page is OK to show, just return TRUE. // if ( GET_FLAG(OPK_OEM) ) return TRUE; // This page and setting is not allowed in non OEM. // if ( IsDlgButtonChecked(hwnd, IDC_OEMCUST_ON) == BST_CHECKED ) { // We have to make sure the check box is uncheck. They may // have already been to this page when multi-lingual wasn't set. // CheckDlgButton(hwnd, IDC_OEMCUST_ON, BST_UNCHECKED); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_TEXT), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_DIR), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_BROWSE), FALSE); // Now save the unchecked state to the file. // OnNext(hwnd); } // We don't want to display this page. // return FALSE; } static BOOL OnInit(HWND hwnd, HWND hwndFocus, LPARAM lParam) { // Get the file path to use for the OEM custom files from // opkwiz inf. // GetPrivateProfileString(INI_SEC_OPTIONS, INI_KEY_OEMCUST, NULLSTR, g_szOemCustomDir, sizeof(g_szOemCustomDir) / sizeof (TCHAR), g_App.szOpkWizIniFile); SetDlgItemText(hwnd, IDC_OEMCUST_DIR, g_szOemCustomDir); // Check the dialog box if it was set in the oobeinfo ini. // if ( GetPrivateProfileInt(INI_SEC_OPTIONS, INI_KEY_OEMCUST, 0, g_App.szOobeInfoIniFile) ) { CheckDlgButton(hwnd, IDC_OEMCUST_ON, BST_CHECKED); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_TEXT), TRUE); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_DIR), TRUE); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_BROWSE), TRUE); } return FALSE; } static VOID OnCommand(HWND hwnd, INT id, HWND hwndCtl, UINT codeNotify) { BOOL bCheck; switch ( id ) { case IDC_OEMCUST_ON: // Enable/Disable the extra stuff if the option is checked or not. // bCheck = ( IsDlgButtonChecked(hwnd, IDC_OEMCUST_ON) == BST_CHECKED ); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_TEXT), bCheck); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_DIR), bCheck); EnableWindow(GetDlgItem(hwnd, IDC_OEMCUST_BROWSE), bCheck); break; case IDC_OEMCUST_BROWSE: // Browse for the folder the OEM wants to use as their source. // if ( BrowseForFolder(hwnd, IDS_BROWSEFOLDER, g_szOemCustomDir) ) SetDlgItemText(hwnd, IDC_OEMCUST_DIR, g_szOemCustomDir); break; } } static BOOL OnNext(HWND hwnd) { TCHAR szFullPath[MAX_PATH]; BOOL bCheck; DWORD dwAttr; // // First do some checks to make sure we can continue. // // If we have custom OEM files, there are some checks to make. // GetDlgItemText(hwnd, IDC_OEMCUST_DIR, g_szOemCustomDir, sizeof(g_szOemCustomDir)); if ( bCheck = ( IsDlgButtonChecked(hwnd, IDC_OEMCUST_ON) == BST_CHECKED ) ) { // Make sure we have a valid directory. // if ( g_szOemCustomDir[0] ) dwAttr = GetFileAttributes(g_szOemCustomDir); if ( ( !g_szOemCustomDir[0] ) || ( dwAttr == 0xFFFFFFFF ) || ( !( dwAttr & FILE_ATTRIBUTE_DIRECTORY ) ) ) { MsgBox(GetParent(hwnd), IDS_ERR_OEMCUSTDIR, IDS_APPNAME, MB_ERRORBOX); SetFocus(GetDlgItem(hwnd, IDC_OEMCUST_DIR)); return FALSE; } // Check for hardware tutorial required file. // lstrcpyn(szFullPath, g_szOemCustomDir,AS(szFullPath)); AddPathN(szFullPath, OEMCUST_FILE,AS(szFullPath)); if ( ( !EXIST(szFullPath) ) && ( MsgBox(GetParent(hwnd), IDS_ERR_OEMCUSTFILE, IDS_APPNAME, MB_ICONSTOP | MB_OKCANCEL | MB_APPLMODAL) == IDCANCEL ) ) return FALSE; } // // Checks are done, save the data now. // // Save the file path to use for the OEM custom files // in opkwiz inf. // WritePrivateProfileString(INI_SEC_OPTIONS, INI_KEY_OEMCUST, g_szOemCustomDir, g_App.szOpkWizIniFile); // Save the on/off setting for the OEM custom files // in oobeinfo ini. // WritePrivateProfileString(INI_SEC_OPTIONS, INI_KEY_OEMCUST, bCheck ? _T("1") : NULL, g_App.szOobeInfoIniFile); return TRUE; } #endif // OEMCUST