#pragma once #include #include #include "Control.h" #include "StringBase.h" #include "DialogResult.h" #include "MessageBoxIcon.h" #include "MessageBoxButtons.h" #include "MessageBoxOptions.h" #include "MessageBoxDefaultButton.h" // Remove built-in macros that interfere with the api #undef MessageBox namespace Forms { // Displays a message box that can contain text, buttons, and symbols that // inform and instruct the user. class MessageBox { public: // Displays a message box with specified text. static DialogResult Show(const String& Text); // Displays a message box with specified text and caption. static DialogResult Show(const String& Text, const String& Caption); // Displays a message box with specified text, caption, and style. static DialogResult Show(const String& Text, const String& Caption, MessageBoxButtons Buttons); // Displays a message box with specified text, caption, and style. static DialogResult Show(const String& Text, const String& Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon); // Displays a message box with specified text, caption, and style. static DialogResult Show(Control* Owner, const String& Text, const String& Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon); // Displays a message box with specified text, caption, and style. static DialogResult Show(Control* Owner, const String& Text, const String& Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton); // Displays a message box with specified text, caption, and style. static DialogResult Show(Control* Owner, const String& Text, const String& Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton, MessageBoxOptions Options); // Sets user defined message box colors for Foreground, Background, and Dialog Bottom Strip. static void SetMessageBoxColors(Drawing::Color Foreground = (Gdiplus::ARGB)Drawing::Color::Black, Drawing::Color Background = (Gdiplus::ARGB)Drawing::Color::White, Drawing::Color Bottom = Drawing::Color(240, 240, 240)); private: // Converts a native windows result to a dialog result static DialogResult Win32ToDialogResult(uint32_t Value); // Handles message box logic static DialogResult ShowCore(const String& Text, const String& Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton, MessageBoxOptions Options, bool ShowHelp, Control* Owner); // Internal help button constant constexpr static uint32_t HELP_BUTTON = 0x00004000; }; }