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

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.
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_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.

Function Documentation

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 3508 of file SDL_video.c.

References 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().

3509 {
3510  int dummybutton;
3511  int retval = -1;
3512  SDL_bool relative_mode;
3513  int show_cursor_prev;
3514  SDL_bool mouse_captured;
3515  SDL_Window *current_window;
3516 
3517  if (!messageboxdata) {
3518  return SDL_InvalidParamError("messageboxdata");
3519  }
3520 
3521  current_window = SDL_GetKeyboardFocus();
3522  mouse_captured = current_window && ((SDL_GetWindowFlags(current_window) & SDL_WINDOW_MOUSE_CAPTURE) != 0);
3523  relative_mode = SDL_GetRelativeMouseMode();
3526  show_cursor_prev = SDL_ShowCursor(1);
3528 
3529  if (!buttonid) {
3530  buttonid = &dummybutton;
3531  }
3532 
3533  if (_this && _this->ShowMessageBox) {
3534  retval = _this->ShowMessageBox(_this, messageboxdata, buttonid);
3535  }
3536 
3537  /* It's completely fine to call this function before video is initialized */
3538 #if SDL_VIDEO_DRIVER_ANDROID
3539  if (retval == -1 &&
3540  Android_ShowMessageBox(messageboxdata, buttonid) == 0) {
3541  retval = 0;
3542  }
3543 #endif
3544 #if SDL_VIDEO_DRIVER_WINDOWS
3545  if (retval == -1 &&
3547  WIN_ShowMessageBox(messageboxdata, buttonid) == 0) {
3548  retval = 0;
3549  }
3550 #endif
3551 #if SDL_VIDEO_DRIVER_WINRT
3552  if (retval == -1 &&
3553  SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WINRT) &&
3554  WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
3555  retval = 0;
3556  }
3557 #endif
3558 #if SDL_VIDEO_DRIVER_COCOA
3559  if (retval == -1 &&
3560  SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_COCOA) &&
3561  Cocoa_ShowMessageBox(messageboxdata, buttonid) == 0) {
3562  retval = 0;
3563  }
3564 #endif
3565 #if SDL_VIDEO_DRIVER_UIKIT
3566  if (retval == -1 &&
3567  SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_UIKIT) &&
3568  UIKit_ShowMessageBox(messageboxdata, buttonid) == 0) {
3569  retval = 0;
3570  }
3571 #endif
3572 #if SDL_VIDEO_DRIVER_X11
3573  if (retval == -1 &&
3574  SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_X11) &&
3575  X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
3576  retval = 0;
3577  }
3578 #endif
3579  if (retval == -1) {
3580  SDL_SetError("No message system available");
3581  }
3582 
3583  if (current_window) {
3584  SDL_RaiseWindow(current_window);
3585  if (mouse_captured) {
3587  }
3588  }
3589 
3590  SDL_ShowCursor(show_cursor_prev);
3591  SDL_SetRelativeMouseMode(relative_mode);
3592 
3593  return retval;
3594 }
static SDL_UNUSED SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
Definition: SDL_video.c:3490
#define SDL_SetRelativeMouseMode
#define SDL_GetKeyboardFocus
#define SDL_InvalidParamError(param)
Definition: SDL_error.h:54
void SDL_RaiseWindow(SDL_Window *window)
Raise a window above other windows and set the input focus.
Definition: SDL_video.c:1969
Uint32 SDL_GetWindowFlags(SDL_Window *window)
Get the window flags.
Definition: SDL_video.c:1571
static SDL_VideoDevice * _this
Definition: SDL_video.c:114
SDL_bool
Definition: SDL_stdinc.h:126
SDL_bool retval
#define SDL_GetRelativeMouseMode
int(* ShowMessageBox)(_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid)
Definition: SDL_sysvideo.h:271
#define SDL_SetError
The type used to identify a window.
Definition: SDL_sysvideo.h:71
void SDL_ResetKeyboard(void)
Definition: SDL_keyboard.c:564
#define SDL_CaptureMouse
#define SDL_ShowCursor
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 3597 of file SDL_video.c.

References button, SDL_MessageBoxData::buttons, SDL_MessageBoxButtonData::flags, SDL_MessageBoxData::flags, SDL_MessageBoxData::message, NULL, SDL_MessageBoxData::numbuttons, SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT, SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, SDL_ShowMessageBox(), SDL_zero, SDL_MessageBoxButtonData::text, SDL_MessageBoxData::title, window, and SDL_MessageBoxData::window.

3598 {
3601 
3602  SDL_zero(data);
3603  data.flags = flags;
3604  data.title = title;
3605  data.message = message;
3606  data.numbuttons = 1;
3607  data.buttons = &button;
3608  data.window = window;
3609 
3610  SDL_zero(button);
3613  button.text = "OK";
3614 
3615  return SDL_ShowMessageBox(&data, NULL);
3616 }
const char * message
SDL_Texture * button
const char * title
SDL_Window * window
GLuint GLsizei const GLchar * message
SDL_Window * window
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1967
Individual button data.
#define SDL_zero(x)
Definition: SDL_stdinc.h:355
const SDL_MessageBoxButtonData * buttons
MessageBox structure containing title, text, window, etc.
#define NULL
Definition: begin_code.h:143
int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
Create a modal message box.
Definition: SDL_video.c:3508
GLbitfield flags