Sur les exemples des deux cours précédents, à chaque fois que nous ouvrons le projet avec Visual Studio, deux fenêtres s’affichent simultanément : une fenêtre de console en mode ligne de commande, et notre fenêtre graphique principale. Or, nous souhaitons n’afficher que la fenêtre GUI sans la console parasite.
Supprimer la fenêtre console noire

Comme sur la capture ci-dessus, l’exécution génère deux fenêtres distinctes. Voici la méthode complète pour désactiver totalement la fenêtre console.
Tout d’abord, ajoutez cette ligne tout en haut du fichier source, avant l’ensemble des includes de fichiers d’en-tête :
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")Langage du code : C++ (cpp)

Si vous omettez cette directive, des erreurs de liaison apparaîtront lors de la compilation. Après l’avoir insérée, faites un clic droit sur le nom du projet dans l’Explorateur de solutions, puis sélectionnez Propriétés.


Naviguez ensuite dans l’arborescence : Propriétés de configuration (Configuration Properties) → Éditeur de liens (Linker) → Système (System)
Définissez le champ Sous-système (SubSystem) sur la valeur Windows
Enregistrez les paramètres et relancez l’exécution : la fenêtre console noire disparaît complètement, on obtient une application graphique autonome propre.

Actuellement, tous nos widgets d’interface sont confinés dans un petit panneau flottant nommé Control Panel. Nous allons modifier le code pour que ce panneau occupe l’intégralité de la fenêtre hôte GLFW.
Faire occuper tout l’écran aux contrôles de l’interface
Repérez cette ligne dans votre boucle de rendu :
ImGui::Begin("Control Panel");Langage du code : PHP (php)
Remplacez cette unique ligne par le bloc complet ci-dessous :
// Paramétrages principaux pour le plein écran
// Forcer le panneau à recouvrir toute la fenêtre GLFW
// 1. Synchroniser position et taille du panneau avec la fenêtre GLFW par trame
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::SetNextWindowSize(io.DisplaySize);
// 2. Supprimer tous les décorations : bordures, déplacement, redimensionnement, sauvegarde des paramètres
ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDecoration
| ImGuiWindowFlags_NoMove
| ImGuiWindowFlags_NoResize
| ImGuiWindowFlags_NoSavedSettings;
// 3. Supprimer les arrondis et la bordure extérieure pour coller parfaitement aux bords
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
// 4. Créer la fenêtre plein écran sans barre de titre
ImGui::Begin("Control Panel", nullptr, window_flags);Langage du code : C++ (cpp)
Ce bloc ajuste les dimensions du panneau ImGui pour correspondre exactement à la fenêtre GLFW, tout en retirant les ornements pour un rendu sans bordures sur toute la surface.
Ensuite, juste sous l’appel
ImGui::End();Langage du code : CSS (css)
Ajoutez cette instruction :
ImGui::PopStyleVar(2);Langage du code : CSS (css)
PushStyleVar stocke temporairement des valeurs de style sur une pile, en surchargeant les styles globaux par défaut.
Nous avons empilé deux modifications de style :
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);Langage du code : CSS (css)
PopStyleVar(2) dépile les deux entrées d’un coup, restaurant les styles initiaux de l’application.
Voici le code complet du main avec toutes les modifications intégrées :
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
#include <GLFW/glfw3.h>
#include "imgui.h"
#include "backends/imgui_impl_glfw.h"
#include "backends/imgui_impl_opengl3.h"
#include <cstdio>
int main()
{
// Initialize GLFW
if (!glfwInit())
{
printf("GLFW initialization failed\n");
return -1;
}
// OpenGL 3.3
const char* glsl_version = "#version 330";
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// Create window
GLFWwindow* window = glfwCreateWindow(1000, 600, "ImGui Minimal Demo (VS2022)", nullptr, nullptr);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glfwSwapInterval(1); // VSync enable
// Initialize ImGui
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
ImGui::StyleColorsDark();
// Bind GLFW + OpenGL3 backend
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init(glsl_version);
// UI state variables
float slider_value = 0.5f;
int click_count = 0;
bool show_full_demo = false;
// Main render loop
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
// Start new ImGui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// Paramétrages principaux pour le plein écran
// Forcer le panneau à recouvrir toute la fenêtre GLFW
// 1. Synchroniser position et taille du panneau avec la fenêtre GLFW par trame
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::SetNextWindowSize(io.DisplaySize);
// 2. Supprimer tous les décorations : bordures, déplacement, redimensionnement, sauvegarde des paramètres
ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDecoration
| ImGuiWindowFlags_NoMove
| ImGuiWindowFlags_NoResize
| ImGuiWindowFlags_NoSavedSettings;
// 3. Supprimer les arrondis et la bordure extérieure pour coller parfaitement aux bords
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
// 4. Créer la fenêtre plein écran sans barre de titre
ImGui::Begin("Control Panel", nullptr, window_flags);
ImGui::Text("Hello ImGui + VS2022");
ImGui::SliderFloat("Slider Value", &slider_value, 0.f, 1.f);
if (ImGui::Button("Click to Count"))
click_count++;
ImGui::SameLine();
ImGui::Text("Click Count: %d", click_count);
ImGui::Checkbox("Show Full ImGui Demo Window", &show_full_demo);
ImGui::End();
// 5. Restaurer les deux styles précédemment empilés
ImGui::PopStyleVar(2);
// Fin de la section modifiée
if (show_full_demo)
ImGui::ShowDemoWindow(&show_full_demo);
// Render ImGui draw data
ImGui::Render();
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
glClearColor(0.12f, 0.12f, 0.12f, 1.f);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glfwSwapBuffers(window);
}
// Cleanup resources
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
Langage du code : PHP (php)
Appliquez toutes ces modifications et relancez le programme, vous obtiendrez le rendu de la capture ci-dessous :

L’apparence correspond désormais à une application graphique classique de bureau.