From 983347820fa2eaeef266cd0911738759c5b5f979 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 2 Nov 2004 15:42:09 +0000 Subject: [PATCH] Add the 'Date and Time' page. Selecting a timezone does not work yet. svn path=/trunk/; revision=11526 --- reactos/lib/syssetup/dllmain.c | 8 +- reactos/lib/syssetup/resource.h | 17 +- reactos/lib/syssetup/syssetup_Cz.rc | 18 ++ reactos/lib/syssetup/syssetup_De.rc | 32 ++- reactos/lib/syssetup/syssetup_En.rc | 35 +++- reactos/lib/syssetup/syssetup_Fr.rc | 32 ++- reactos/lib/syssetup/wizard.c | 305 +++++++++++++++++++++++++++- 7 files changed, 418 insertions(+), 29 deletions(-) diff --git a/reactos/lib/syssetup/dllmain.c b/reactos/lib/syssetup/dllmain.c index 677d953dec0..d800460aa0d 100644 --- a/reactos/lib/syssetup/dllmain.c +++ b/reactos/lib/syssetup/dllmain.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: dllmain.c,v 1.4 2004/08/28 11:08:50 ekohl Exp $ +/* $Id: dllmain.c,v 1.5 2004/11/02 15:42:09 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -48,7 +48,11 @@ DllMain (HINSTANCE hInstance, { if (dwReason == DLL_PROCESS_ATTACH) { - InitCommonControls(); + INITCOMMONCONTROLSEX InitControls; + + InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX); + InitControls.dwICC = ICC_DATE_CLASSES | ICC_PROGRESS_CLASS | ICC_UPDOWN_CLASS; + InitCommonControlsEx(&InitControls); hDllInstance = hInstance; } diff --git a/reactos/lib/syssetup/resource.h b/reactos/lib/syssetup/resource.h index f42c984b847..4a61b953aaf 100644 --- a/reactos/lib/syssetup/resource.h +++ b/reactos/lib/syssetup/resource.h @@ -42,8 +42,14 @@ #define IDC_LAYOUTTEXT 1012 #define IDC_CUSTOMLAYOUT 1013 -#define IDD_PROCESSPAGE 1014 -#define IDC_PROCESSPROGRESS 1015 +#define IDD_DATETIMEPAGE 1014 +#define IDC_DATEPICKER 1015 +#define IDC_TIMEPICKER 1016 +#define IDC_TIMEZONELIST 1017 +#define IDC_DAYLIGHTSAVINGS 1018 + +#define IDD_PROCESSPAGE 1020 +#define IDC_PROCESSPROGRESS 1021 #define IDD_FINISHPAGE 1050 #define IDC_FINISHTITLE 1051 @@ -62,7 +68,10 @@ #define IDS_LOCALETITLE 3004 #define IDS_LOCALESUBTITLE 3005 -#define IDS_PROCESSTITLE 3004 -#define IDS_PROCESSSUBTITLE 3005 +#define IDS_DATETIMETITLE 3006 +#define IDS_DATETIMESUBTITLE 3007 + +#define IDS_PROCESSTITLE 3008 +#define IDS_PROCESSSUBTITLE 3009 #endif /* RESOURCE_H */ diff --git a/reactos/lib/syssetup/syssetup_Cz.rc b/reactos/lib/syssetup/syssetup_Cz.rc index 8213eb3148a..860fff784c5 100644 --- a/reactos/lib/syssetup/syssetup_Cz.rc +++ b/reactos/lib/syssetup/syssetup_Cz.rc @@ -88,6 +88,24 @@ BEGIN END +IDD_DATETIMEPAGE DIALOG DISCARDABLE 0, 0, 317, 143 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ReactOS Setup" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Date and Time", IDC_STATIC, 53, 7, 253, 8 + CONTROL "", IDC_DATEPICKER, "SysDateTimePick32", + DTS_LONGDATEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 53, 29, 137, 14 + CONTROL "", IDC_TIMEPICKER, "SysDateTimePick32", + DTS_TIMEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 200, 29, 54, 14 + LTEXT "Timezone", IDC_STATIC, 53, 80, 253, 8 + COMBOBOX "", IDC_TIMEZONELIST, 53, 96, 201, 42, + CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + AUTOCHECKBOX "Daylight savings", + IDC_DAYLIGHTSAVINGS, 53, 124, 201, 10 +END + + IDD_PROCESSPAGE DIALOG 0, 0, 317, 143 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ReactOS Setup" diff --git a/reactos/lib/syssetup/syssetup_De.rc b/reactos/lib/syssetup/syssetup_De.rc index 3f588a24325..00d4480ab74 100644 --- a/reactos/lib/syssetup/syssetup_De.rc +++ b/reactos/lib/syssetup/syssetup_De.rc @@ -90,6 +90,24 @@ BEGIN END +IDD_DATETIMEPAGE DIALOG DISCARDABLE 0, 0, 317, 143 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ReactOS Setup" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Datum und Zeit", IDC_STATIC, 53, 7, 253, 8 + CONTROL "", IDC_DATEPICKER, "SysDateTimePick32", + DTS_LONGDATEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 53, 29, 137, 14 + CONTROL "", IDC_TIMEPICKER, "SysDateTimePick32", + DTS_TIMEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 200, 29, 54, 14 + LTEXT "Zeitzone", IDC_STATIC, 53, 80, 253, 8 + COMBOBOX "", IDC_TIMEZONELIST, 53, 96, 201, 42, + CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + AUTOCHECKBOX "Automatiche Umstellung auf Sommer-/Winterzeit", + IDC_DAYLIGHTSAVINGS, 53, 124, 201, 10 +END + + IDD_PROCESSPAGE DIALOG 0, 0, 317, 143 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ReactOS Setup" @@ -131,12 +149,14 @@ END STRINGTABLE BEGIN - IDS_OWNERTITLE "Owner page title" - IDS_OWNERSUBTITLE "Owner page subtitle" - IDS_COMPUTERTITLE "Computer page title" - IDS_COMPUTERSUBTITLE "Computer page subtitle" - IDS_LOCALETITLE "Locale page title" - IDS_LOCALESUBTITLE "Locale page subtitle" + IDS_OWNERTITLE "Personalize your Software" + IDS_OWNERSUBTITLE "Setup uses this information about yourself to personalize ReactOS." + IDS_COMPUTERTITLE "Computer Name and Administrator Password" + IDS_COMPUTERSUBTITLE "You must provide a name and an Administrator Password for your computer." + IDS_LOCALETITLE "Regional settings" + IDS_LOCALESUBTITLE "You can customize ReactOS for different regions and languages." + IDS_DATETIMETITLE "Date and Time" + IDS_DATETIMESUBTITLE "Set the correct date and time for your computer." IDS_PROCESSTITLE "Process page title" IDS_PROCESSSUBTITLE "Process page subtitle" END diff --git a/reactos/lib/syssetup/syssetup_En.rc b/reactos/lib/syssetup/syssetup_En.rc index 66d6b846a21..4197d07cfde 100644 --- a/reactos/lib/syssetup/syssetup_En.rc +++ b/reactos/lib/syssetup/syssetup_En.rc @@ -90,6 +90,24 @@ BEGIN END +IDD_DATETIMEPAGE DIALOG DISCARDABLE 0, 0, 317, 143 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ReactOS Setup" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Date and Time", IDC_STATIC, 53, 7, 253, 8 + CONTROL "", IDC_DATEPICKER, "SysDateTimePick32", + DTS_LONGDATEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 53, 29, 137, 14 + CONTROL "", IDC_TIMEPICKER, "SysDateTimePick32", + DTS_TIMEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 200, 29, 54, 14 + LTEXT "Timezone", IDC_STATIC, 53, 80, 253, 8 + COMBOBOX "", IDC_TIMEZONELIST, 53, 96, 201, 42, + CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + AUTOCHECKBOX "Daylight savings", + IDC_DAYLIGHTSAVINGS, 53, 124, 201, 10 +END + + IDD_PROCESSPAGE DIALOG 0, 0, 317, 143 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ReactOS Setup" @@ -97,7 +115,8 @@ FONT 8, "MS Shell Dlg" BEGIN LTEXT "Some text...", IDC_STATIC, 53, 7, 253, 20 LTEXT "Some more text...", IDC_STATIC, 53, 29, 253, 20 - CONTROL "", IDC_PROCESSPROGRESS, "msctls_progress32", PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 53, 70, 253, 8 + CONTROL "", IDC_PROCESSPROGRESS, "msctls_progress32", + PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 53, 70, 253, 8 END @@ -131,12 +150,14 @@ END STRINGTABLE BEGIN - IDS_OWNERTITLE "Owner page title" - IDS_OWNERSUBTITLE "Owner page subtitle" - IDS_COMPUTERTITLE "Computer page title" - IDS_COMPUTERSUBTITLE "Computer page subtitle" - IDS_LOCALETITLE "Locale page title" - IDS_LOCALESUBTITLE "Locale page subtitle" + IDS_OWNERTITLE "Personalize your Software" + IDS_OWNERSUBTITLE "Setup uses this information about yourself to personalize ReactOS." + IDS_COMPUTERTITLE "Computer Name and Administrator Password" + IDS_COMPUTERSUBTITLE "You must provide a name and an Administrator Password for your computer." + IDS_LOCALETITLE "Regional settings" + IDS_LOCALESUBTITLE "You can customize ReactOS for different regions and languages." + IDS_DATETIMETITLE "Date and Time" + IDS_DATETIMESUBTITLE "Set the correct date and time for your computer." IDS_PROCESSTITLE "Process page title" IDS_PROCESSSUBTITLE "Process page subtitle" END diff --git a/reactos/lib/syssetup/syssetup_Fr.rc b/reactos/lib/syssetup/syssetup_Fr.rc index c39a4bb0b98..4e98261cbb6 100644 --- a/reactos/lib/syssetup/syssetup_Fr.rc +++ b/reactos/lib/syssetup/syssetup_Fr.rc @@ -91,6 +91,24 @@ BEGIN END +IDD_DATETIMEPAGE DIALOG DISCARDABLE 0, 0, 317, 143 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ReactOS Setup" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Date and Time", IDC_STATIC, 53, 7, 253, 8 + CONTROL "", IDC_DATEPICKER, "SysDateTimePick32", + DTS_LONGDATEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 53, 29, 137, 14 + CONTROL "", IDC_TIMEPICKER, "SysDateTimePick32", + DTS_TIMEFORMAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 200, 29, 54, 14 + LTEXT "Timezone", IDC_STATIC, 53, 80, 253, 8 + COMBOBOX "", IDC_TIMEZONELIST, 53, 96, 201, 42, + CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + AUTOCHECKBOX "Daylight savings", + IDC_DAYLIGHTSAVINGS, 53, 124, 201, 10 +END + + IDD_PROCESSPAGE DIALOG 0, 0, 317, 143 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ReactOS Setup" @@ -132,12 +150,14 @@ END STRINGTABLE BEGIN - IDS_OWNERTITLE "Owner page title" - IDS_OWNERSUBTITLE "Owner page subtitle" - IDS_COMPUTERTITLE "Computer page title" - IDS_COMPUTERSUBTITLE "Computer page subtitle" - IDS_LOCALETITLE "Locale page title" - IDS_LOCALESUBTITLE "Locale page subtitle" + IDS_OWNERTITLE "Personalize your Software" + IDS_OWNERSUBTITLE "Setup uses this information about yourself to personalize ReactOS." + IDS_COMPUTERTITLE "Computer Name and Administrator Password" + IDS_COMPUTERSUBTITLE "You must provide a name and an Administrator Password for your computer." + IDS_LOCALETITLE "Regional settings" + IDS_LOCALESUBTITLE "You can customize ReactOS for different regions and languages." + IDS_DATETIMETITLE "Date and Time" + IDS_DATETIMESUBTITLE "Set the correct date and time for your computer." IDS_PROCESSTITLE "Process page title" IDS_PROCESSSUBTITLE "Process page subtitle" END diff --git a/reactos/lib/syssetup/wizard.c b/reactos/lib/syssetup/wizard.c index ddcb24a39c3..cba8746f05e 100644 --- a/reactos/lib/syssetup/wizard.c +++ b/reactos/lib/syssetup/wizard.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: wizard.c,v 1.9 2004/10/11 21:08:04 weiden Exp $ +/* $Id: wizard.c,v 1.10 2004/11/02 15:42:09 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -355,6 +355,99 @@ ComputerPageDlgProc(HWND hwndDlg, } +static VOID +SetKeyboardLayoutName(HWND hwnd) +{ +#if 0 + WCHAR szLayoutPath[256]; + WCHAR szLocaleName[32]; + DWORD dwLocaleSize; + HKEY hKey; + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"SYSTEM\\CurrentControlSet\\Control\\NLS\\Locale", + 0, + KEY_ALL_ACCESS, + &hKey)) + return; + + dwValueSize = 16 * sizeof(WCHAR); + if (RegQueryValueExW(hKey, + NULL, + NULL, + NULL, + szLocaleName, + &dwLocaleSize)) + { + RegCloseKey(hKey); + return; + } + + wcscpy(szLayoutPath, + L"SYSTEM\\CurrentControlSet\\Control\\KeyboardLayouts\\" + wcscat(szLayoutPath, + szLocaleName); + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + szLayoutPath, + 0, + KEY_ALL_ACCESS, + &hKey)) + return; + + dwValueSize = 32 * sizeof(WCHAR); + if (RegQueryValueExW(hKey, + L"Layout Text", + NULL, + NULL, + szLocaleName, + &dwLocaleSize)) + { + RegCloseKey(hKey); + return; + } + + RegCloseKey(hKey); +#endif +} + +static VOID +RunLocalePage(VOID) +{ + PROPSHEETPAGE psp; + PROPSHEETHEADER psh; + HMODULE hDll; +// TCHAR Caption[256]; + + hDll = LoadLibraryW(L"intl.cpl"); + + ZeroMemory(&psp, sizeof(PROPSHEETPAGE)); + psp.dwSize = sizeof(PROPSHEETPAGE); + psp.dwFlags = PSP_DEFAULT; + psp.hInstance = hDll; + psp.pszTemplate = MAKEINTRESOURCE(IDD_LOCALEPAGE); + psp.pfnDlgProc = GetProcAddress(hDll, "LocalePageProc"); + + +// LoadString(hDll, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR)); + + ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); + psh.dwSize = sizeof(PROPSHEETHEADER); + psh.dwFlags = PSH_PROPSHEETPAGE; // | PSH_PROPTITLE; + psh.hwndParent = NULL; + psh.hInstance = hDll; +// psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON)); +// psh.pszCaption = Caption; + psh.nPages = 1; + psh.nStartPage = 0; + psh.ppsp = &psp; + + PropertySheet(&psh); + + FreeLibrary(hDll); +} + + INT_PTR CALLBACK LocalePageDlgProc(HWND hwndDlg, UINT uMsg, @@ -374,6 +467,196 @@ LocalePageDlgProc(HWND hwndDlg, SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam; SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)SetupData); + + SetKeyboardLayoutName(GetDlgItem(hwndDlg, IDC_LAYOUTTEXT)); + + } + break; + + case WM_COMMAND: + if (HIWORD(wParam) == BN_CLICKED) + { + switch (LOWORD(wParam)) + { + case IDC_CUSTOMLOCALE: + { + RunLocalePage(); + } + break; + } + } + break; + + case WM_NOTIFY: + { + LPNMHDR lpnm = (LPNMHDR)lParam; + + switch (lpnm->code) + { + case PSN_SETACTIVE: + /* Enable the Back and Next buttons */ + PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT); + break; + + case PSN_WIZNEXT: + break; + + default: + break; + } + } + break; + + default: + break; + } + + return FALSE; +} + + +static VOID +InitTimeZoneList(HWND hwnd) +{ + WCHAR szKeyName[256]; + WCHAR szValue[256]; + DWORD dwIndex; + DWORD dwNameSize; + DWORD dwValueSize; + LONG lError; + HKEY hZonesKey; + HKEY hZoneKey; + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones", + 0, + KEY_ALL_ACCESS, + &hZonesKey)) + return; + + dwIndex = 0; + while (TRUE) + { + dwNameSize = 256; + lError = RegEnumKeyExW(hZonesKey, + dwIndex, + szKeyName, + &dwNameSize, + NULL, + NULL, + NULL, + NULL); + if (lError != ERROR_SUCCESS && lError != ERROR_MORE_DATA) + break; + + if (RegOpenKeyExW(hZonesKey, + szKeyName, + 0, + KEY_ALL_ACCESS, + &hZoneKey)) + break; + + dwValueSize = 256 * sizeof(WCHAR); + if (RegQueryValueExW(hZoneKey, + L"Display", + NULL, + NULL, + (LPBYTE)szValue, + &dwValueSize)) + { + RegCloseKey(hZoneKey); + break; + } + + SendMessageW(hwnd, + CB_ADDSTRING, + 0, + (LPARAM)szValue); + + RegCloseKey(hZoneKey); + + dwIndex++; + } + + RegCloseKey(hZonesKey); + + SendMessageW(hwnd, + CB_SETCURSEL, + (WPARAM)0, // index + 0); + +#if 0 + SendMessage(hwnd, + CB_ADDSTRING, + 0, + (LPARAM)"Test0"); + SendMessage(hwnd, + CB_ADDSTRING, + 0, + (LPARAM)"Test1"); + SendMessage(hwnd, + CB_ADDSTRING, + 0, + (LPARAM)"Test2"); + SendMessage(hwnd, + CB_ADDSTRING, + 0, + (LPARAM)"Test3"); + + SendMessage(hwnd, + CB_SETCURSEL, + (WPARAM)0, // index + 0); +#endif +} + + +static VOID +SetLocalDateTime(HWND hwnd) +{ + SYSTEMTIME Date; + SYSTEMTIME Time; + SYSTEMTIME SystemTime; + + if (DateTime_GetSystemTime(GetDlgItem(hwnd, IDC_DATEPICKER), &Date) == GDT_VALID) + { + if (DateTime_GetSystemTime(GetDlgItem(hwnd, IDC_TIMEPICKER), &Time) == GDT_VALID) + { + SystemTime.wYear = Date.wYear; + SystemTime.wMonth = Date.wMonth; + SystemTime.wDayOfWeek = Date.wDayOfWeek; + SystemTime.wDay = Date.wDay; + SystemTime.wHour = Time.wHour; + SystemTime.wMinute = Time.wMinute; + SystemTime.wSecond = Time.wSecond; + SystemTime.wMilliseconds = Time.wMilliseconds; + + SetLocalTime(&SystemTime); + } + } +} + + +INT_PTR CALLBACK +DateTimePageDlgProc(HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + PSETUPDATA SetupData; + + /* Retrieve pointer to the global setup data */ + SetupData = (PSETUPDATA)GetWindowLongPtr (hwndDlg, GWL_USERDATA); + + switch (uMsg) + { + case WM_INITDIALOG: + { + /* Save pointer to the global setup data */ + SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam; + SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)SetupData); + + InitTimeZoneList(GetDlgItem(hwndDlg, IDC_TIMEZONELIST)); } break; @@ -390,6 +673,11 @@ LocalePageDlgProc(HWND hwndDlg, break; case PSN_WIZNEXT: + { +// SetTimeZoneInformation(); + + SetLocalDateTime(hwndDlg); + } break; default: @@ -585,27 +873,36 @@ InstallWizard(VOID) ahpsp[3] = CreatePropertySheetPage(&psp); + /* Create the DateTime page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_DATETIMETITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_DATETIMESUBTITLE); + psp.pfnDlgProc = DateTimePageDlgProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_DATETIMEPAGE); + ahpsp[4] = CreatePropertySheetPage(&psp); + + /* Create the Process page */ psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_PROCESSTITLE); psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_PROCESSSUBTITLE); psp.pfnDlgProc = ProcessPageDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_PROCESSPAGE); - ahpsp[4] = CreatePropertySheetPage(&psp); + ahpsp[5] = CreatePropertySheetPage(&psp); /* Create the Finish page */ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; psp.pfnDlgProc = FinishDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE); - ahpsp[5] = CreatePropertySheetPage(&psp); + ahpsp[6] = CreatePropertySheetPage(&psp); /* Create the property sheet */ psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER; psh.hInstance = hDllInstance; psh.hwndParent = NULL; - psh.nPages = 6; + psh.nPages = 7; psh.nStartPage = 0; psh.phpage = ahpsp; psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK); -- 2.17.1