return Ret;
}
+
+static VOID
+UpdateLocalSystemTime(HWND hwnd)
+{
+ SYSTEMTIME LocalTime;
+
+ GetLocalTime(&LocalTime);
+ DateTime_SetSystemtime(GetDlgItem(hwnd, IDC_DATEPICKER), GDT_VALID, &LocalTime);
+ DateTime_SetSystemtime(GetDlgItem(hwnd, IDC_TIMEPICKER), GDT_VALID, &LocalTime);
+}
+
+
static BOOL
WriteDateTimeSettings(HWND hwndDlg, PSETUPDATA SetupData)
{
WCHAR Title[64];
WCHAR ErrorLocalTime[256];
+
GetLocalSystemTime(hwndDlg, SetupData);
SetLocalTimeZone(GetDlgItem(hwndDlg, IDC_TIMEZONELIST),
SetupData);
return TRUE;
}
+
static INT_PTR CALLBACK
DateTimePageDlgProc(HWND hwndDlg,
UINT uMsg,
switch (uMsg)
{
case WM_INITDIALOG:
- {
/* Save pointer to the global setup data */
SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)SetupData);
SendDlgItemMessage(hwndDlg, IDC_AUTODAYLIGHT, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
}
+ break;
- }
- break;
-
+ case WM_TIMER:
+ UpdateLocalSystemTime(hwndDlg);
+ break;
case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
-
- switch (lpnm->code)
+ switch (((LPNMHDR)lParam)->code)
{
case PSN_SETACTIVE:
/* Enable the Back and Next buttons */
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, SetupData->uFirstNetworkWizardPage);
return TRUE;
}
+ SetTimer(hwndDlg, 1, 1000, NULL);
+ break;
+
+ case PSN_KILLACTIVE:
+ case DTN_DATETIMECHANGE:
+ KillTimer(hwndDlg, 1);
break;
case PSN_WIZNEXT:
- {
WriteDateTimeSettings(hwndDlg, SetupData);
- }
- break;
+ break;
case PSN_WIZBACK:
SetupData->UnattendSetup = FALSE;
default:
break;
}
- }
- break;
+ break;
case WM_DESTROY:
DestroyTimeZoneList(SetupData);
}
while (SetupFindNextLine(&InfContext, &InfContext));
+ if (SetupFindFirstLineW(pSetupData->hUnattendedInf,
+ L"Display",
+ NULL,
+ &InfContext))
+ {
+ DEVMODEW dm = { { 0 } };
+ dm.dmSize = sizeof(dm);
+ if (EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm))
+ {
+ do
+ {
+ int iValue;
+ if (!SetupGetStringFieldW(&InfContext,
+ 0,
+ szName,
+ sizeof(szName) / sizeof(WCHAR),
+ &LineLength))
+ {
+ DPRINT1("Error: SetupGetStringField failed with %d\n", GetLastError());
+ return;
+ }
+
+ if (!SetupGetStringFieldW(&InfContext,
+ 1,
+ szValue,
+ sizeof(szValue) / sizeof(WCHAR),
+ &LineLength))
+ {
+ DPRINT1("Error: SetupGetStringField failed with %d\n", GetLastError());
+ return;
+ }
+ iValue = _wtoi(szValue);
+ DPRINT1("Name %S Value %i\n", szName, iValue);
+
+ if (!iValue)
+ continue;
+
+ if (!wcscmp(szName, L"BitsPerPel"))
+ {
+ dm.dmFields |= DM_BITSPERPEL;
+ dm.dmBitsPerPel = iValue;
+ }
+ else if (!wcscmp(szName, L"XResolution"))
+ {
+ dm.dmFields |= DM_PELSWIDTH;
+ dm.dmPelsWidth = iValue;
+ }
+ else if (!wcscmp(szName, L"YResolution"))
+ {
+ dm.dmFields |= DM_PELSHEIGHT;
+ dm.dmPelsHeight = iValue;
+ }
+ else if (!wcscmp(szName, L"VRefresh"))
+ {
+ dm.dmFields |= DM_DISPLAYFREQUENCY;
+ dm.dmDisplayFrequency = iValue;
+ }
+ }
+ while (SetupFindNextLine(&InfContext, &InfContext));
+
+ ChangeDisplaySettingsW(&dm, CDS_UPDATEREGISTRY);
+ }
+ }
+
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
0,