Avertissement : ce document porte sur des détails spécifiques aux diverses saveurs de la plateforme Microsoft Windows.
On me demande à l'occasion comment, sous Microsoft Windows, créer un programme simple (souvent console) pour lequel la fenêtre ne serait pas visible.
Le programme ci-dessous en donne un exemple. Présumant un projet Console tout simple, il démarre, fait disparaître la fenêtre pendant cinq secondes, puis la fait réapparaître.
Pour avoir un programme Microsoft Windows vraiment sans fenêtre, il faut créer un programme Win32 et... ne jamais appeler de fonction qui fasse apparaître de fenêtre. Un programme Console sous Microsoft Windows s'exécute dans une fenêtre qui simule une console, et cette fenêtre apparaîtra spontanément. Le programme ci-dessous nécessite Windows 2000 (Win2K) ou plus (ce qui inclut Windows XP). Les solutions pré-Win2K sont moins jolies. La directive #define _WIN32_WINNT doit être déclarée avant d'inclure windows.h sinon la fonction ::GetConsoleWindow() ne sera pas déclarée (elle est dans un bloc #ifdef...#endif). Évidemment, quand la fenêtre console n'apparaît pas, n'allez pas procéder à une opération bloquante de lecture au clavier (comme lire à partir de std::cin) dans votre programme, car celui-ci ne se terminera alors jamais. |
|
Voilà; pas plus compliqué que ça.