Specifying Display Index with SDL_CreateWindow()

Can I specify the display index when using SDL_CreateWindow()?

SDL allows you to specify the display index indirectly by setting the initial window position to match the desired monitor. Use the SDL_WINDOWPOS_CENTERED_DISPLAY(n) or SDL_WINDOWPOS_UNDEFINED_DISPLAY(n) macros, where n is the zero-based index of the monitor.

Example Code

Here's an example where we create a window on the display with index 1:

#include <SDL2/SDL.h>
#include <iostream>

int main() {
  SDL_Init(SDL_INIT_VIDEO);

  // Creating a window on the second
  // monitor (index 1)
  SDL_Window* window = SDL_CreateWindow(
    "Multi-Monitor Test",
    SDL_WINDOWPOS_CENTERED_DISPLAY(1), 
    SDL_WINDOWPOS_CENTERED_DISPLAY(1), 
    800, 600, SDL_WINDOW_SHOWN);

  if (!window) {
    std::cerr << "Window creation failed: "
      << SDL_GetError() << "\n";
  } else {
    std::cout << "Window created on "
      "specified monitor\n";
  }

  SDL_Delay(2000);
  SDL_DestroyWindow(window);
  SDL_Quit();
  return 0;
}
Window created on specified monitor

Notes

  • The SDL_WINDOWPOS_CENTERED_DISPLAY(n) macro positions the window in the center of monitor n.
  • If n exceeds the available number of displays, SDL defaults to the primary display.

Video Displays

Learn how to handle multiple monitors in SDL, including creating windows on specific displays.

Questions & Answers

Answers are generated by AI models and may not have been reviewed. Be mindful when running any code on your device.

Centering Window on Specific Display
How can I move an SDL window to the centre of a specific display?
Handling No Displays in SDL2
How do I handle the case where no displays are available?
SDL_WINDOWPOS_UNDEFINED Explained
What does the SDL_WINDOWPOS_UNDEFINED macro do, and why would I use it?
Understanding SDL Display Indices
What are display indices, and how do they map to physical monitors?
Handling Windows Exceeding Screen Boundaries
How do I handle cases where my window exceeds the screen boundaries on a specific monitor?
Forcing a Window to Appear on the Primary Monitor
How can I make my game window always appear on the primary monitor?
Displaying Windows on Different Monitors
How can I ensure windows are displayed on different monitors?
SDL_GetWindowDisplayIndex() for Multiple Displays
How does SDL_GetWindowDisplayIndex() work if the window spans multiple displays?
Or Ask your Own Question
Get an immediate answer to your specific question using our AI assistant