From 7c407ab6a1a92a59a0fd6e200d8b7b52a5b8c0c0 Mon Sep 17 00:00:00 2001 From: maiconpintoabreu Date: Mon, 29 Sep 2025 16:57:28 +0100 Subject: [PATCH] Add core monitor change example --- examples/core/core_monitor_change.c | 84 ++++++++++++++++++++++++++ examples/core/core_monitor_change.png | Bin 0 -> 6062 bytes 2 files changed, 84 insertions(+) create mode 100644 examples/core/core_monitor_change.c create mode 100644 examples/core/core_monitor_change.png diff --git a/examples/core/core_monitor_change.c b/examples/core/core_monitor_change.c new file mode 100644 index 000000000..f9c9e3040 --- /dev/null +++ b/examples/core/core_monitor_change.c @@ -0,0 +1,84 @@ +/******************************************************************************************* +* +* raylib [core] example - monitor change +* +* Example complexity rating: [★☆☆☆] 1/4 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.6 +* +* Example contributed by Maicon Santana (@maiconpintoabreu) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2025-2025 Maicon Santana (@maiconpintoabreu) +* +********************************************************************************************/ + +#include "raylib.h" + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [core] example - monitor change"); + + int currentMonitor = GetCurrentMonitor(); + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + + if (IsKeyPressed(KEY_ENTER)) { + currentMonitor += 1; + if(currentMonitor == GetMonitorCount()) { + currentMonitor = 0; + } + SetWindowMonitor(currentMonitor); + } else { + currentMonitor = GetCurrentMonitor(); + } + + const Vector2 resolution = (Vector2){(float)GetMonitorWidth(currentMonitor), (float)GetMonitorHeight(currentMonitor)}; + const int refreshRate = GetMonitorRefreshRate(currentMonitor); + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + DrawText("[Enter] Move to the next monitor available", 20, 20, 20, DARKGRAY); + + DrawText( + TextFormat("%3.0f x %3.0f [%ihz]", + resolution.x, + resolution.y, + refreshRate + ), 20, 70, 20, GRAY); + DrawText(TextFormat("%i", currentMonitor), screenWidth * 0.5, screenHeight * 0.5, 70, GRAY); + DrawRectangleLines(20, 100, screenWidth - 40, screenHeight - 120, DARKGRAY); + + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/core/core_monitor_change.png b/examples/core/core_monitor_change.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb984ccb10910ff48681ad568e058f339d6eb32 GIT binary patch literal 6062 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 literal 0 HcmV?d00001