OLD | NEW |
1 /** | 1 /** |
2 * \file interaction.h User interaction classes. Message boxes and translations. | 2 * \file interaction.h User interaction classes. Message boxes and translations. |
3 */ | 3 */ |
4 | 4 |
5 #ifndef INTERACTION_H | 5 #ifndef INTERACTION_H |
6 #define INTERACTION_H | 6 #define INTERACTION_H |
7 | 7 |
| 8 #include <string> |
| 9 |
| 10 #include "session.h" |
| 11 |
| 12 #include <Windows.h> |
| 13 #include <Msi.h> |
| 14 #include <MsiQuery.h> |
| 15 |
| 16 /** |
| 17 * A modal dialog box as displayable from within a custom action. |
| 18 * |
| 19 * The only fully user interface element that the Windows Installer supports for
use within custom actions is a small set of modal dialog boxes. |
| 20 * The Windows Installer provides the call MsiProcessMessage, overloaded by a se
t of message type constants. |
| 21 * This class represents those messages with user-provided messages; these ultim
ately call MessageBox. |
| 22 * |
| 23 * \sa |
| 24 * * MSDN [MsiProcessMessage function](http://msdn.microsoft.com/en-us/librar
y/windows/desktop/aa370354%28v=vs.85%29.aspx) |
| 25 * * MSDN [Sending Messages to Windows Installer Using MsiProcessMessage](htt
p://msdn.microsoft.com/en-us/library/windows/desktop/aa371614%28v=vs.85%29.aspx) |
| 26 */ |
| 27 class Installer_Message_Box |
| 28 : public Message |
| 29 { |
| 30 public: |
| 31 typedef enum |
| 32 { |
| 33 default_box = 0, |
| 34 error_box = INSTALLMESSAGE::INSTALLMESSAGE_ERROR, |
| 35 warning_box = INSTALLMESSAGE::INSTALLMESSAGE_WARNING, |
| 36 user_box = INSTALLMESSAGE::INSTALLMESSAGE_USER |
| 37 } |
| 38 box_type ; |
| 39 |
| 40 typedef enum |
| 41 { |
| 42 default_buttonset = 0, |
| 43 ok = MB_OK, |
| 44 ok_cancel = MB_OKCANCEL, |
| 45 abort_retry_ignore = MB_ABORTRETRYIGNORE, |
| 46 yes_no_cancel = MB_YESNOCANCEL, |
| 47 yes_no = MB_YESNO, |
| 48 retry_cancel = MB_RETRYCANCEL |
| 49 } |
| 50 buttonset_type ; |
| 51 |
| 52 typedef enum |
| 53 { |
| 54 default_default_button = 0, ///< use the default button |
| 55 default_button_one = MB_DEFBUTTON1, |
| 56 default_button_two = MB_DEFBUTTON2, |
| 57 default_button_three = MB_DEFBUTTON3 |
| 58 } |
| 59 default_button_type ; |
| 60 |
| 61 typedef enum |
| 62 { |
| 63 default_icon = 0, ///< use the default icon associated
with the box_type |
| 64 warning_icon = MB_ICONWARNING, ///< exclamation point |
| 65 information_icon = MB_ICONINFORMATION, ///< lowercase letter "i" in a circl
e |
| 66 error_icon = MB_ICONERROR ///< stop sign |
| 67 } |
| 68 icon_type ; |
| 69 |
| 70 /** |
| 71 * Ordinary constructor, wide string |
| 72 */ |
| 73 Installer_Message_Box( |
| 74 std::wstring message, |
| 75 box_type box = box_type::user_box, |
| 76 buttonset_type buttonset = buttonset_type::default_buttonset, |
| 77 default_button_type default_button = default_button_type::default_default_bu
tton, |
| 78 icon_type icon = icon_type::default_icon |
| 79 ) ; |
| 80 |
| 81 /** |
| 82 * Ordinary constructor, regular string |
| 83 */ |
| 84 Installer_Message_Box( |
| 85 std::string message, |
| 86 box_type box = box_type::user_box, |
| 87 buttonset_type buttonset = buttonset_type::default_buttonset, |
| 88 default_button_type default_button = default_button_type::default_default_bu
tton, |
| 89 icon_type icon = icon_type::default_icon |
| 90 ) ; |
| 91 } ; |
| 92 |
| 93 /** |
| 94 * Error for any non-handled return value from Session.write_message(). |
| 95 */ |
| 96 struct unexpected_return_value_from_message_box |
| 97 : std::logic_error |
| 98 { |
| 99 unexpected_return_value_from_message_box() |
| 100 : std::logic_error( "Unexpected return value from message box." ) |
| 101 {} |
| 102 } ; |
| 103 |
8 #endif | 104 #endif |
OLD | NEW |