You can toggle the "always-on-top" behavior of a window by modifying its flags in response to a key press. SDL2 provides the SDL_SetWindowAlwaysOnTop()
function, which allows you to enable or disable this feature dynamically.
By tracking the current state with a boolean, you can easily flip this behavior when a specific key is pressed. Here’s an example program:
#include <SDL.h>
#include <iostream>
int main() {
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
std::cout << "SDL_Init Error: "
<< SDL_GetError() << '\n';
return 1;
}
SDL_Window* window =
SDL_CreateWindow("Always on Top Toggle",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
if (!window) {
std::cout << "SDL_CreateWindow Error: "
<< SDL_GetError() << '\n';
SDL_Quit();
return 1;
}
bool running = true;
bool alwaysOnTop = false;
SDL_Event event;
while (running) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = false;
} else if (event.type == SDL_KEYDOWN) {
if (event.key.keysym.sym == SDLK_t) {
alwaysOnTop = !alwaysOnTop;
SDL_SetWindowAlwaysOnTop(
window, alwaysOnTop);
std::cout << "Always on top: "
<< (alwaysOnTop
? "Enabled"
: "Disabled") << '\n';
}
}
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
Pressing 'T' toggles the always-on-top behavior.
T
in this example) can be changed to suit your program.Answers to questions are automatically generated and may not have been reviewed.
Learn how to control the visibility of SDL2 windows, including showing, hiding, minimizing, and more