SDL 2.0
SDL_messagebox.h File Reference
#include "SDL_stdinc.h"
#include "SDL_video.h"
#include "begin_code.h"
#include "close_code.h"
+ Include dependency graph for SDL_messagebox.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SDL_MessageBoxButtonData
 Individual button data. More...
 
struct  SDL_MessageBoxColor
 RGB value used in a message box color scheme. More...
 
struct  SDL_MessageBoxColorScheme
 A set of colors to use for message box dialogs. More...
 
struct  SDL_MessageBoxData
 MessageBox structure containing title, text, window, etc. More...
 

Enumerations

enum  SDL_MessageBoxFlags {
  SDL_MESSAGEBOX_ERROR = 0x00000010 ,
  SDL_MESSAGEBOX_WARNING = 0x00000020 ,
  SDL_MESSAGEBOX_INFORMATION = 0x00000040
}
 SDL_MessageBox flags. If supported will display warning icon, etc. More...
 
enum  SDL_MessageBoxButtonFlags {
  SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001 ,
  SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002
}
 Flags for SDL_MessageBoxButtonData. More...
 
enum  SDL_MessageBoxColorType {
  SDL_MESSAGEBOX_COLOR_BACKGROUND ,
  SDL_MESSAGEBOX_COLOR_TEXT ,
  SDL_MESSAGEBOX_COLOR_BUTTON_BORDER ,
  SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND ,
  SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED ,
  SDL_MESSAGEBOX_COLOR_MAX
}
 

Functions

int SDL_ShowMessageBox (const SDL_MessageBoxData *messageboxdata, int *buttonid)
 Create a modal message box. More...
 
int SDL_ShowSimpleMessageBox (Uint32 flags, const char *title, const char *message, SDL_Window *window)
 Create a simple modal message box. More...
 

Enumeration Type Documentation

◆ SDL_MessageBoxButtonFlags

Flags for SDL_MessageBoxButtonData.

Enumerator
SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT 

Marks the default button when return is hit

SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT 

Marks the default button when escape is hit

Definition at line 47 of file SDL_messagebox.h.

48{
49 SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */
50 SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */
SDL_MessageBoxButtonFlags
Flags for SDL_MessageBoxButtonData.
@ SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT
@ SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT

◆ SDL_MessageBoxColorType

Enumerator
SDL_MESSAGEBOX_COLOR_BACKGROUND 
SDL_MESSAGEBOX_COLOR_TEXT 
SDL_MESSAGEBOX_COLOR_BUTTON_BORDER 
SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND 
SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED 
SDL_MESSAGEBOX_COLOR_MAX 

Definition at line 71 of file SDL_messagebox.h.

◆ SDL_MessageBoxFlags

SDL_MessageBox flags. If supported will display warning icon, etc.

Enumerator
SDL_MESSAGEBOX_ERROR 

error dialog

SDL_MESSAGEBOX_WARNING 

warning dialog

SDL_MESSAGEBOX_INFORMATION 

informational dialog

Definition at line 37 of file SDL_messagebox.h.

38{
39 SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */
40 SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */
41 SDL_MESSAGEBOX_INFORMATION = 0x00000040 /**< informational dialog */
SDL_MessageBoxFlags
SDL_MessageBox flags. If supported will display warning icon, etc.
@ SDL_MESSAGEBOX_ERROR
@ SDL_MESSAGEBOX_WARNING
@ SDL_MESSAGEBOX_INFORMATION

Function Documentation

◆ SDL_ShowMessageBox()

int SDL_ShowMessageBox ( const SDL_MessageBoxData messageboxdata,
int *  buttonid 
)

Create a modal message box.

Parameters
messageboxdataThe SDL_MessageBoxData structure with title, text, etc.
buttonidThe pointer to which user id of hit button should be copied.
Returns
-1 on error, otherwise 0 and buttonid contains user id of button hit or -1 if dialog was closed.
Note
This function should be called on the thread that created the parent window, or on the main thread if the messagebox has no parent. It will block execution of that thread until the user clicks a button or closes the messagebox.

Definition at line 3868 of file SDL_video.c.

3869{
3870 int dummybutton;
3871 int retval = -1;
3872 SDL_bool relative_mode;
3873 int show_cursor_prev;
3874 SDL_bool mouse_captured;
3875 SDL_Window *current_window;
3876
3877 if (!messageboxdata) {
3878 return SDL_InvalidParamError("messageboxdata");
3879 } else if (messageboxdata->numbuttons < 0) {
3880 return SDL_SetError("Invalid number of buttons");
3881 }
3882
3883 current_window = SDL_GetKeyboardFocus();
3884 mouse_captured = current_window && ((SDL_GetWindowFlags(current_window) & SDL_WINDOW_MOUSE_CAPTURE) != 0);
3885 relative_mode = SDL_GetRelativeMouseMode();
3888 show_cursor_prev = SDL_ShowCursor(1);
3890
3891 if (!buttonid) {
3892 buttonid = &dummybutton;
3893 }
3894
3895 if (_this && _this->ShowMessageBox) {
3896 retval = _this->ShowMessageBox(_this, messageboxdata, buttonid);
3897 }
3898
3899 /* It's completely fine to call this function before video is initialized */
3900#if SDL_VIDEO_DRIVER_ANDROID
3901 if (retval == -1 &&
3902 Android_ShowMessageBox(messageboxdata, buttonid) == 0) {
3903 retval = 0;
3904 }
3905#endif
3906#if SDL_VIDEO_DRIVER_WINDOWS
3907 if (retval == -1 &&
3909 WIN_ShowMessageBox(messageboxdata, buttonid) == 0) {
3910 retval = 0;
3911 }
3912#endif
3913#if SDL_VIDEO_DRIVER_WINRT
3914 if (retval == -1 &&
3916 WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
3917 retval = 0;
3918 }
3919#endif
3920#if SDL_VIDEO_DRIVER_COCOA
3921 if (retval == -1 &&
3923 Cocoa_ShowMessageBox(messageboxdata, buttonid) == 0) {
3924 retval = 0;
3925 }
3926#endif
3927#if SDL_VIDEO_DRIVER_UIKIT
3928 if (retval == -1 &&
3930 UIKit_ShowMessageBox(messageboxdata, buttonid) == 0) {
3931 retval = 0;
3932 }
3933#endif
3934#if SDL_VIDEO_DRIVER_X11
3935 if (retval == -1 &&
3937 X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
3938 retval = 0;
3939 }
3940#endif
3941 if (retval == -1) {
3942 SDL_SetError("No message system available");
3943 }
3944
3945 if (current_window) {
3946 SDL_RaiseWindow(current_window);
3947 if (mouse_captured) {
3949 }
3950 }
3951
3952 SDL_ShowCursor(show_cursor_prev);
3953 SDL_SetRelativeMouseMode(relative_mode);
3954
3955 return retval;
3956}
#define SDL_SetError
#define SDL_ShowCursor
#define SDL_SetRelativeMouseMode
#define SDL_CaptureMouse
#define SDL_GetKeyboardFocus
#define SDL_GetRelativeMouseMode
#define SDL_InvalidParamError(param)
Definition: SDL_error.h:54
void SDL_ResetKeyboard(void)
Definition: SDL_keyboard.c:572
SDL_bool
Definition: SDL_stdinc.h:162
@ SDL_TRUE
Definition: SDL_stdinc.h:164
@ SDL_FALSE
Definition: SDL_stdinc.h:163
@ SDL_SYSWM_X11
Definition: SDL_syswm.h:123
@ SDL_SYSWM_WINDOWS
Definition: SDL_syswm.h:122
@ SDL_SYSWM_UIKIT
Definition: SDL_syswm.h:126
@ SDL_SYSWM_COCOA
Definition: SDL_syswm.h:125
@ SDL_SYSWM_WINRT
Definition: SDL_syswm.h:129
Uint32 SDL_GetWindowFlags(SDL_Window *window)
Get the window flags.
Definition: SDL_video.c:1741
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
static SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
Definition: SDL_video.c:3849
void SDL_RaiseWindow(SDL_Window *window)
Raise a window above other windows and set the input focus.
Definition: SDL_video.c:2187
@ SDL_WINDOW_MOUSE_CAPTURE
Definition: SDL_video.h:116
int(* ShowMessageBox)(_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid)
Definition: SDL_sysvideo.h:303
The type used to identify a window.
Definition: SDL_sysvideo.h:74
SDL_bool retval

References _this, SDL_MessageBoxData::numbuttons, retval, SDL_CaptureMouse, SDL_FALSE, SDL_GetKeyboardFocus, SDL_GetRelativeMouseMode, SDL_GetWindowFlags(), SDL_InvalidParamError, SDL_MessageboxValidForDriver(), SDL_RaiseWindow(), SDL_ResetKeyboard(), SDL_SetError, SDL_SetRelativeMouseMode, SDL_ShowCursor, SDL_SYSWM_COCOA, SDL_SYSWM_UIKIT, SDL_SYSWM_WINDOWS, SDL_SYSWM_WINRT, SDL_SYSWM_X11, SDL_TRUE, SDL_WINDOW_MOUSE_CAPTURE, and SDL_VideoDevice::ShowMessageBox.

Referenced by SDL_ShowSimpleMessageBox().

◆ SDL_ShowSimpleMessageBox()

int SDL_ShowSimpleMessageBox ( Uint32  flags,
const char *  title,
const char *  message,
SDL_Window window 
)

Create a simple modal message box.

Parameters
flagsSDL_MessageBoxFlags
titleUTF-8 title text
messageUTF-8 message text
windowThe parent window, or NULL for no parent
Returns
0 on success, -1 on error
See also
SDL_ShowMessageBox

Definition at line 3959 of file SDL_video.c.

3960{
3961#ifdef __EMSCRIPTEN__
3962 /* !!! FIXME: propose a browser API for this, get this #ifdef out of here? */
3963 /* Web browsers don't (currently) have an API for a custom message box
3964 that can block, but for the most common case (SDL_ShowSimpleMessageBox),
3965 we can use the standard Javascript alert() function. */
3966 EM_ASM_({
3967 alert(UTF8ToString($0) + "\n\n" + UTF8ToString($1));
3968 }, title, message);
3969 return 0;
3970#else
3973
3974 SDL_zero(data);
3975 data.flags = flags;
3976 data.title = title;
3977 data.message = message;
3978 data.numbuttons = 1;
3979 data.buttons = &button;
3980 data.window = window;
3981
3985 button.text = "OK";
3986
3987 return SDL_ShowMessageBox(&data, NULL);
3988#endif
3989}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1974
GLuint GLsizei const GLchar * message
GLbitfield flags
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
Create a modal message box.
Definition: SDL_video.c:3868
#define NULL
Definition: begin_code.h:167
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
Individual button data.
MessageBox structure containing title, text, window, etc.
SDL_Texture * button

References button, NULL, SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT, SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, SDL_ShowMessageBox(), and SDL_zero.