Create a window with the specified properties.
Defined in <SDL3/SDL_video.h>
SDL_Window * SDL_CreateWindowWithProperties(SDL_PropertiesID props);
SDL_PropertiesID | props | the properties to use. |
(SDL_Window *) Returns the window that was created or NULL on failure; call SDL_GetError() for more information.
These are the supported properties:
SDL_PROP_WINDOW_CREATE_ALWAYS_ON_TOP_BOOLEAN
: true if the window should be always on topSDL_PROP_WINDOW_CREATE_BORDERLESS_BOOLEAN
: true if the window has no window decorationSDL_PROP_WINDOW_CREATE_EXTERNAL_GRAPHICS_CONTEXT_BOOLEAN
: true if the window will be used with an externally managed graphics context.SDL_PROP_WINDOW_CREATE_FOCUSABLE_BOOLEAN
: true if the window should accept keyboard input (defaults true)SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN
: true if the window should start in fullscreen mode at desktop resolutionSDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER
: the height of the windowSDL_PROP_WINDOW_CREATE_HIDDEN_BOOLEAN
: true if the window should start hiddenSDL_PROP_WINDOW_CREATE_HIGH_PIXEL_DENSITY_BOOLEAN
: true if the window uses a high pixel density buffer if possibleSDL_PROP_WINDOW_CREATE_MAXIMIZED_BOOLEAN
: true if the window should start maximizedSDL_PROP_WINDOW_CREATE_MENU_BOOLEAN
: true if the window is a popup menuSDL_PROP_WINDOW_CREATE_METAL_BOOLEAN
: true if the window will be used with Metal renderingSDL_PROP_WINDOW_CREATE_MINIMIZED_BOOLEAN
: true if the window should start minimizedSDL_PROP_WINDOW_CREATE_MODAL_BOOLEAN
: true if the window is modal to its parentSDL_PROP_WINDOW_CREATE_MOUSE_GRABBED_BOOLEAN
: true if the window starts with grabbed mouse focusSDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN
: true if the window will be used with OpenGL renderingSDL_PROP_WINDOW_CREATE_PARENT_POINTER
: an SDL_Window that will be the parent of this window, required for windows with the "tooltip", "menu", and "modal" propertiesSDL_PROP_WINDOW_CREATE_RESIZABLE_BOOLEAN
: true if the window should be resizableSDL_PROP_WINDOW_CREATE_TITLE_STRING
: the title of the window, in UTF-8 encodingSDL_PROP_WINDOW_CREATE_TRANSPARENT_BOOLEAN
: true if the window show transparent in the areas with alpha of 0SDL_PROP_WINDOW_CREATE_TOOLTIP_BOOLEAN
: true if the window is a tooltipSDL_PROP_WINDOW_CREATE_UTILITY_BOOLEAN
: true if the window is a utility window, not showing in the task bar and window listSDL_PROP_WINDOW_CREATE_VULKAN_BOOLEAN
: true if the window will be used with Vulkan renderingSDL_PROP_WINDOW_CREATE_WIDTH_NUMBER
: the width of the windowSDL_PROP_WINDOW_CREATE_X_NUMBER
: the x position of the window, or SDL_WINDOWPOS_CENTERED
, defaults to SDL_WINDOWPOS_UNDEFINED
. This is relative to the parent for windows with the "parent" property set.SDL_PROP_WINDOW_CREATE_Y_NUMBER
: the y position of the window, or SDL_WINDOWPOS_CENTERED
, defaults to SDL_WINDOWPOS_UNDEFINED
. This is relative to the parent for windows with the "parent" property set.These are additional supported properties on macOS:
SDL_PROP_WINDOW_CREATE_COCOA_WINDOW_POINTER
: the (__unsafe_unretained)
NSWindow associated with the window, if you want to wrap an existing window.SDL_PROP_WINDOW_CREATE_COCOA_VIEW_POINTER
: the (__unsafe_unretained)
NSView associated with the window, defaults to [window contentView]
These are additional supported properties on Wayland:
SDL_PROP_WINDOW_CREATE_WAYLAND_SURFACE_ROLE_CUSTOM_BOOLEAN
SDL_PROP_WINDOW_CREATE_WAYLAND_CREATE_EGL_WINDOW_BOOLEAN
wl_egl_window
object to be created and attached to the window, even if the window does not have the OpenGL property or SDL_WINDOW_OPENGL
flag set.SDL_PROP_WINDOW_CREATE_WAYLAND_WL_SURFACE_POINTER
These are additional supported properties on Windows:
SDL_PROP_WINDOW_CREATE_WIN32_HWND_POINTER
: the HWND associated with the window, if you want to wrap an existing window.SDL_PROP_WINDOW_CREATE_WIN32_PIXEL_FORMAT_HWND_POINTER
: optional, another window to share pixel format with, useful for OpenGL windowsThese are additional supported properties with X11:
SDL_PROP_WINDOW_CREATE_X11_WINDOW_NUMBER
: the X11 Window associated with the window, if you want to wrap an existing window.The window is implicitly shown if the "hidden" property is not set.
Windows with the "tooltip" and "menu" properties are popup windows and have the behaviors and guidelines outlined in SDL_CreatePopupWindow().
If this window is being created to be used with an SDL_Renderer, you should not add a graphics API specific property (SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN
, etc), as SDL will handle that internally when it chooses a renderer. However, SDL might need to recreate your window at that point, which may cause the window to appear briefly, and then flicker as it is recreated. The correct approach to this is to create the window with the SDL_PROP_WINDOW_CREATE_HIDDEN_BOOLEAN
property set to true, then create the renderer, then show the window with SDL_ShowWindow().
This function is available since SDL 3.1.3.
// Example program
// Use SDL3 to create a window with properties
#include <SDL3/SDL_log.h>
#include <SDL3/SDL_main.h>
#include <SDL3/SDL_video.h>
int
int argc, char** argv)
main(
{if (!SDL_Init(SDL_INIT_VIDEO)) {
"Unable to initialize SDL: %s", SDL_GetError());
SDL_Log(return 0;
}
SDL_PropertiesID props = SDL_CreateProperties();if(props == 0) {
"Unable to create properties: %s", SDL_GetError());
SDL_Log(return 0;
}
// Assume the following calls succeed
"My Window");
SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING,
SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_RESIZABLE_BOOLEAN, true);640);
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, 480);
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER,
SDL_Window *window = SDL_CreateWindowWithProperties(props);if(window == NULL) {
"Unable to create window: %s", SDL_GetError());
SDL_Log(return 0;
}
// A game loop goes here
SDL_DestroyWindow(window);
SDL_DestroyProperties(props);
return 0;
}