diff --git a/dll/win32/syssetup/resource.h b/dll/win32/syssetup/resource.h index e8a8597e814..b17997f0306 100644 --- a/dll/win32/syssetup/resource.h +++ b/dll/win32/syssetup/resource.h @@ -33,6 +33,8 @@ #define IDI_ICON4 13 #define IDI_ICON5 14 #define IDI_CHECKICON 15 +#define IDI_ARROWICON 16 +#define IDI_CROSSICON 17 #define IDC_STATIC -1 diff --git a/dll/win32/syssetup/resources/arrow-16x16.ico b/dll/win32/syssetup/resources/arrow-16x16.ico new file mode 100644 index 00000000000..c0847dad95e Binary files /dev/null and b/dll/win32/syssetup/resources/arrow-16x16.ico differ diff --git a/dll/win32/syssetup/resources/cross-16x16.ico b/dll/win32/syssetup/resources/cross-16x16.ico new file mode 100644 index 00000000000..b2d6a15fac7 Binary files /dev/null and b/dll/win32/syssetup/resources/cross-16x16.ico differ diff --git a/dll/win32/syssetup/syssetup.rc b/dll/win32/syssetup/syssetup.rc index d31667ca7bc..8a2ab2a9e6c 100644 --- a/dll/win32/syssetup/syssetup.rc +++ b/dll/win32/syssetup/syssetup.rc @@ -31,6 +31,8 @@ IDI_ICON3 ICON "resources/3.ico" IDI_ICON4 ICON "resources/4.ico" IDI_ICON5 ICON "resources/5.ico" IDI_CHECKICON ICON "resources/check-16x16.ico" +IDI_ARROWICON ICON "resources/arrow-16x16.ico" +IDI_CROSSICON ICON "resources/cross-16x16.ico" STRINGTABLE BEGIN diff --git a/dll/win32/syssetup/wizard.c b/dll/win32/syssetup/wizard.c index ae01ea6ea90..46c79016f0a 100644 --- a/dll/win32/syssetup/wizard.c +++ b/dll/win32/syssetup/wizard.c @@ -2440,6 +2440,8 @@ ProcessPageDlgProc(HWND hwndDlg, { PSETUPDATA SetupData; PREGISTRATIONNOTIFY RegistrationNotify; + static HICON s_hCheckIcon, s_hArrowIcon, s_hCrossIcon; + static HFONT s_hNormalFont; /* Retrieve pointer to the global setup data */ SetupData = (PSETUPDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); @@ -2454,13 +2456,16 @@ ProcessPageDlgProc(HWND hwndDlg, ShowWindow(GetDlgItem(hwndDlg, IDC_TASKTEXT4), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_CHECK3), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_CHECK4), SW_HIDE); - SetupData->hCheckIcon = LoadImageW(hDllInstance, MAKEINTRESOURCEW(IDI_CHECKICON), - IMAGE_ICON, 16, 16, 0); + s_hCheckIcon = LoadImageW(hDllInstance, MAKEINTRESOURCEW(IDI_CHECKICON), IMAGE_ICON, 16, 16, 0); + s_hArrowIcon = LoadImageW(hDllInstance, MAKEINTRESOURCEW(IDI_ARROWICON), IMAGE_ICON, 16, 16, 0); + s_hCrossIcon = LoadImageW(hDllInstance, MAKEINTRESOURCEW(IDI_CROSSICON), IMAGE_ICON, 16, 16, 0); + s_hNormalFont = (HFONT)SendDlgItemMessage(hwndDlg, IDC_TASKTEXT1, WM_GETFONT, 0, 0); break; case WM_DESTROY: - DestroyIcon(SetupData->hCheckIcon); - SetupData->hCheckIcon = NULL; + DestroyIcon(s_hCheckIcon); + DestroyIcon(s_hArrowIcon); + DestroyIcon(s_hCrossIcon); break; case WM_NOTIFY: @@ -2492,16 +2497,19 @@ ProcessPageDlgProc(HWND hwndDlg, SendDlgItemMessage(hwndDlg, IDC_PROCESSPROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, (ULONG)lParam)); SendDlgItemMessage(hwndDlg, IDC_PROCESSPROGRESS, PBM_SETPOS, 0, 0); SendDlgItemMessage(hwndDlg, IDC_TASKTEXT1 + wParam, WM_SETFONT, (WPARAM)SetupData->hBoldFont, (LPARAM)TRUE); - SendDlgItemMessage(hwndDlg, IDC_CHECK1 + wParam, STM_SETIMAGE, IMAGE_ICON, (LPARAM)SetupData->hCheckIcon); + SendDlgItemMessage(hwndDlg, IDC_CHECK1 + wParam, STM_SETIMAGE, IMAGE_ICON, (LPARAM)s_hArrowIcon); break; case PM_ITEM_END: DPRINT("PM_ITEM_END\n"); + SendDlgItemMessage(hwndDlg, IDC_TASKTEXT1 + wParam, WM_SETFONT, (WPARAM)s_hNormalFont, (LPARAM)TRUE); if (lParam == ERROR_SUCCESS) { + SendDlgItemMessage(hwndDlg, IDC_CHECK1 + wParam, STM_SETIMAGE, IMAGE_ICON, (LPARAM)s_hCheckIcon); } else { + SendDlgItemMessage(hwndDlg, IDC_CHECK1 + wParam, STM_SETIMAGE, IMAGE_ICON, (LPARAM)s_hCrossIcon); ShowItemError(hwndDlg, (DWORD)lParam); } break; diff --git a/sdk/include/reactos/libs/syssetup/syssetup.h b/sdk/include/reactos/libs/syssetup/syssetup.h index 53434392aca..1eb5e2ab75c 100644 --- a/sdk/include/reactos/libs/syssetup/syssetup.h +++ b/sdk/include/reactos/libs/syssetup/syssetup.h @@ -59,7 +59,6 @@ typedef struct _SETUPDATA UINT uPostNetworkWizardPage; PRODUCT_OPTION ProductOption; - HICON hCheckIcon; } SETUPDATA, *PSETUPDATA;