diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-10-27 14:42:32 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-11-01 16:34:09 -0500 |
commit | bad2e93524f376cfeb76d5231d4b08510bdad033 (patch) | |
tree | b201ec4b1495a0af4805ea6b0bc4fce9f8bde7b7 /src/ext | |
parent | 8fa040da9d0d3826f5ffda6bcbec4f53abd97452 (diff) | |
download | wix-bad2e93524f376cfeb76d5231d4b08510bdad033.tar.gz wix-bad2e93524f376cfeb76d5231d4b08510bdad033.tar.bz2 wix-bad2e93524f376cfeb76d5231d4b08510bdad033.zip |
Add more thmutil window messages to simplify handling control events.
Diffstat (limited to 'src/ext')
-rw-r--r-- | src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | 210 |
1 files changed, 152 insertions, 58 deletions
diff --git a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp index 8cdd31ce..2283880c 100644 --- a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp +++ b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | |||
@@ -2878,65 +2878,11 @@ private: | |||
2878 | pBA->OnShowFailure(); | 2878 | pBA->OnShowFailure(); |
2879 | return 0; | 2879 | return 0; |
2880 | 2880 | ||
2881 | case WM_COMMAND: | 2881 | case WM_THMUTIL_CONTROL_WM_COMMAND: |
2882 | switch (HIWORD(wParam)) | 2882 | return pBA->OnThemeControlWmCommand(reinterpret_cast<THEME_CONTROLWMCOMMAND_ARGS*>(wParam), reinterpret_cast<THEME_CONTROLWMCOMMAND_RESULTS*>(lParam)); |
2883 | { | ||
2884 | case BN_CLICKED: | ||
2885 | switch (LOWORD(wParam)) | ||
2886 | { | ||
2887 | case WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX: | ||
2888 | pBA->OnClickAcceptCheckbox(); | ||
2889 | return 0; | ||
2890 | |||
2891 | case WIXSTDBA_CONTROL_INSTALL_BUTTON: | ||
2892 | pBA->OnClickInstallButton(); | ||
2893 | return 0; | ||
2894 | |||
2895 | case WIXSTDBA_CONTROL_REPAIR_BUTTON: | ||
2896 | pBA->OnClickRepairButton(); | ||
2897 | return 0; | ||
2898 | |||
2899 | case WIXSTDBA_CONTROL_UNINSTALL_BUTTON: | ||
2900 | pBA->OnClickUninstallButton(); | ||
2901 | return 0; | ||
2902 | |||
2903 | case WIXSTDBA_CONTROL_LAUNCH_BUTTON: | ||
2904 | pBA->OnClickLaunchButton(); | ||
2905 | return 0; | ||
2906 | |||
2907 | case WIXSTDBA_CONTROL_SUCCESS_RESTART_BUTTON: __fallthrough; | ||
2908 | case WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON: | ||
2909 | pBA->OnClickRestartButton(); | ||
2910 | return 0; | ||
2911 | |||
2912 | case WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON: | ||
2913 | pBA->OnClickCloseButton(); | ||
2914 | return 0; | ||
2915 | } | ||
2916 | break; | ||
2917 | } | ||
2918 | break; | ||
2919 | 2883 | ||
2920 | case WM_NOTIFY: | 2884 | case WM_THMUTIL_CONTROL_WM_NOTIFY: |
2921 | if (lParam) | 2885 | return pBA->OnThemeControlWmNotify(reinterpret_cast<THEME_CONTROLWMNOTIFY_ARGS*>(wParam), reinterpret_cast<THEME_CONTROLWMNOTIFY_RESULTS*>(lParam)); |
2922 | { | ||
2923 | LPNMHDR pnmhdr = reinterpret_cast<LPNMHDR>(lParam); | ||
2924 | switch (pnmhdr->code) | ||
2925 | { | ||
2926 | case NM_CLICK: __fallthrough; | ||
2927 | case NM_RETURN: | ||
2928 | switch (static_cast<DWORD>(pnmhdr->idFrom)) | ||
2929 | { | ||
2930 | case WIXSTDBA_CONTROL_EULA_LINK: | ||
2931 | pBA->OnClickEulaLink(); | ||
2932 | return 1; | ||
2933 | case WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK: | ||
2934 | pBA->OnClickLogFileLink(); | ||
2935 | return 1; | ||
2936 | } | ||
2937 | } | ||
2938 | } | ||
2939 | break; | ||
2940 | } | 2886 | } |
2941 | 2887 | ||
2942 | if (pBA && pBA->m_pTaskbarList && uMsg == pBA->m_uTaskbarButtonCreatedMessage) | 2888 | if (pBA && pBA->m_pTaskbarList && uMsg == pBA->m_uTaskbarButtonCreatedMessage) |
@@ -3666,6 +3612,154 @@ private: | |||
3666 | ReleaseStr(sczLogFile); | 3612 | ReleaseStr(sczLogFile); |
3667 | } | 3613 | } |
3668 | 3614 | ||
3615 | BOOL OnThemeControlWmCommand( | ||
3616 | __in const THEME_CONTROLWMCOMMAND_ARGS* pArgs, | ||
3617 | __in THEME_CONTROLWMCOMMAND_RESULTS* pResults | ||
3618 | ) | ||
3619 | { | ||
3620 | HRESULT hr = S_OK; | ||
3621 | BOOL fProcessed = FALSE; | ||
3622 | BA_FUNCTIONS_ONTHEMECONTROLWMCOMMAND_ARGS themeControlWmCommandArgs = { }; | ||
3623 | BA_FUNCTIONS_ONTHEMECONTROLWMCOMMAND_RESULTS themeControlWmCommandResults = { }; | ||
3624 | |||
3625 | switch (HIWORD(pArgs->wParam)) | ||
3626 | { | ||
3627 | case BN_CLICKED: | ||
3628 | switch (pArgs->pThemeControl->wId) | ||
3629 | { | ||
3630 | case WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX: | ||
3631 | OnClickAcceptCheckbox(); | ||
3632 | fProcessed = TRUE; | ||
3633 | pResults->lResult = 0; | ||
3634 | ExitFunction(); | ||
3635 | |||
3636 | case WIXSTDBA_CONTROL_INSTALL_BUTTON: | ||
3637 | OnClickInstallButton(); | ||
3638 | fProcessed = TRUE; | ||
3639 | pResults->lResult = 0; | ||
3640 | ExitFunction(); | ||
3641 | |||
3642 | case WIXSTDBA_CONTROL_REPAIR_BUTTON: | ||
3643 | OnClickRepairButton(); | ||
3644 | fProcessed = TRUE; | ||
3645 | pResults->lResult = 0; | ||
3646 | ExitFunction(); | ||
3647 | |||
3648 | case WIXSTDBA_CONTROL_UNINSTALL_BUTTON: | ||
3649 | OnClickUninstallButton(); | ||
3650 | fProcessed = TRUE; | ||
3651 | pResults->lResult = 0; | ||
3652 | ExitFunction(); | ||
3653 | |||
3654 | case WIXSTDBA_CONTROL_LAUNCH_BUTTON: | ||
3655 | OnClickLaunchButton(); | ||
3656 | fProcessed = TRUE; | ||
3657 | pResults->lResult = 0; | ||
3658 | ExitFunction(); | ||
3659 | |||
3660 | case WIXSTDBA_CONTROL_SUCCESS_RESTART_BUTTON: __fallthrough; | ||
3661 | case WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON: | ||
3662 | OnClickRestartButton(); | ||
3663 | fProcessed = TRUE; | ||
3664 | pResults->lResult = 0; | ||
3665 | ExitFunction(); | ||
3666 | |||
3667 | case WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON: | ||
3668 | OnClickCloseButton(); | ||
3669 | fProcessed = TRUE; | ||
3670 | pResults->lResult = 0; | ||
3671 | ExitFunction(); | ||
3672 | } | ||
3673 | break; | ||
3674 | } | ||
3675 | |||
3676 | if (m_pfnBAFunctionsProc) | ||
3677 | { | ||
3678 | themeControlWmCommandArgs.cbSize = sizeof(themeControlWmCommandArgs); | ||
3679 | themeControlWmCommandArgs.wParam = pArgs->wParam; | ||
3680 | themeControlWmCommandArgs.wzName = pArgs->pThemeControl->sczName; | ||
3681 | themeControlWmCommandArgs.wId = pArgs->pThemeControl->wId; | ||
3682 | themeControlWmCommandArgs.hWnd = pArgs->pThemeControl->hWnd; | ||
3683 | |||
3684 | themeControlWmCommandResults.cbSize = sizeof(themeControlWmCommandResults); | ||
3685 | themeControlWmCommandResults.lResult = pResults->lResult; | ||
3686 | |||
3687 | hr = m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMCOMMAND, &themeControlWmCommandArgs, &themeControlWmCommandResults, m_pvBAFunctionsProcContext); | ||
3688 | if (E_NOTIMPL != hr) | ||
3689 | { | ||
3690 | BalExitOnFailure(hr, "BAFunctions OnThemeControlWmCommand failed."); | ||
3691 | |||
3692 | if (themeControlWmCommandResults.fProcessed) | ||
3693 | { | ||
3694 | fProcessed = TRUE; | ||
3695 | pResults->lResult = themeControlWmCommandResults.lResult; | ||
3696 | ExitFunction(); | ||
3697 | } | ||
3698 | } | ||
3699 | } | ||
3700 | |||
3701 | LExit: | ||
3702 | return fProcessed; | ||
3703 | } | ||
3704 | |||
3705 | BOOL OnThemeControlWmNotify( | ||
3706 | __in const THEME_CONTROLWMNOTIFY_ARGS* pArgs, | ||
3707 | __in THEME_CONTROLWMNOTIFY_RESULTS* pResults | ||
3708 | ) | ||
3709 | { | ||
3710 | HRESULT hr = S_OK; | ||
3711 | BOOL fProcessed = FALSE; | ||
3712 | BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_ARGS themeControlWmNotifyArgs = { }; | ||
3713 | BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_RESULTS themeControlWmNotifyResults = { }; | ||
3714 | |||
3715 | switch (pArgs->lParam->code) | ||
3716 | { | ||
3717 | case NM_CLICK: __fallthrough; | ||
3718 | case NM_RETURN: | ||
3719 | switch (pArgs->pThemeControl->wId) | ||
3720 | { | ||
3721 | case WIXSTDBA_CONTROL_EULA_LINK: | ||
3722 | OnClickEulaLink(); | ||
3723 | fProcessed = TRUE; | ||
3724 | pResults->lResult = 1; | ||
3725 | ExitFunction(); | ||
3726 | case WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK: | ||
3727 | OnClickLogFileLink(); | ||
3728 | fProcessed = TRUE; | ||
3729 | pResults->lResult = 1; | ||
3730 | ExitFunction(); | ||
3731 | } | ||
3732 | } | ||
3733 | |||
3734 | if (m_pfnBAFunctionsProc) | ||
3735 | { | ||
3736 | themeControlWmNotifyArgs.cbSize = sizeof(themeControlWmNotifyArgs); | ||
3737 | themeControlWmNotifyArgs.lParam = pArgs->lParam; | ||
3738 | themeControlWmNotifyArgs.wzName = pArgs->pThemeControl->sczName; | ||
3739 | themeControlWmNotifyArgs.wId = pArgs->pThemeControl->wId; | ||
3740 | themeControlWmNotifyArgs.hWnd = pArgs->pThemeControl->hWnd; | ||
3741 | |||
3742 | themeControlWmNotifyResults.cbSize = sizeof(themeControlWmNotifyResults); | ||
3743 | themeControlWmNotifyResults.lResult = pResults->lResult; | ||
3744 | |||
3745 | hr = m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMCOMMAND, &themeControlWmNotifyArgs, &themeControlWmNotifyResults, m_pvBAFunctionsProcContext); | ||
3746 | if (E_NOTIMPL != hr) | ||
3747 | { | ||
3748 | BalExitOnFailure(hr, "BAFunctions OnThemeControlWmNotify failed."); | ||
3749 | |||
3750 | if (themeControlWmNotifyResults.fProcessed) | ||
3751 | { | ||
3752 | fProcessed = TRUE; | ||
3753 | pResults->lResult = themeControlWmNotifyResults.lResult; | ||
3754 | ExitFunction(); | ||
3755 | } | ||
3756 | } | ||
3757 | } | ||
3758 | |||
3759 | LExit: | ||
3760 | return fProcessed; | ||
3761 | } | ||
3762 | |||
3669 | 3763 | ||
3670 | // | 3764 | // |
3671 | // SetState | 3765 | // SetState |