The SDL_WINDOWPOS_UNDEFINED
macro is used to let SDL determine the position of a new window automatically. When creating a window using SDL_CreateWindow()
, you can pass this macro for the x
and y
parameters to leave the window's placement up to SDL.
When you specify SDL_WINDOWPOS_UNDEFINED
, SDL doesn’t assign a fixed position to the window. Instead, the operating system decides where the window appears, usually defaulting to the top-left corner of the primary monitor or an arbitrary position chosen by the window manager.
Here’s an example:
#include <SDL2/SDL.h>
#include <iostream>
int main() {
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
std::cerr << "SDL_Init failed: "
<< SDL_GetError() << '\n';
return 1;
}
SDL_Window* window = SDL_CreateWindow(
"My Window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
800, 600, 0);
if (!window) {
std::cerr << "Failed to create window: "
<< SDL_GetError() << '\n';
SDL_Quit();
return 1;
}
// Keep the window open for 2 seconds
SDL_Delay(2000);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
For specific placement, consider SDL_WINDOWPOS_CENTERED
or display-specific macros like SDL_WINDOWPOS_CENTERED_DISPLAY(n)
. These provide more control over where your window appears.
Answers to questions are automatically generated and may not have been reviewed.
Learn how to handle multiple monitors in SDL, including creating windows on specific displays.