Essentiellement, le système de fenêtrage d'un système d'exploitation expose certains appels d'API que vous pouvez effectuer pour effectuer des tâches telles que créer une fenêtre ou placer un bouton sur la fenêtre. Fondamentalement, vous obtenez une suite de fichiers d'en-tête et vous pouvez appeler des fonctions dans ces bibliothèques importées, tout comme vous le feriez avec stdlib et printf
.
Chaque système d'exploitation est livré avec sa propre boîte à outils GUI, sa suite de fichiers d'en-tête et ses appels d'API, ainsi que sa propre façon de faire. Il existe également des boîtes à outils multiplateformes comme GTK , Qt et wxWidgets qui vous aident à créer des programmes qui fonctionnent n'importe où. Ils y parviennent en ayant les mêmes appels API sur chaque plate-forme, mais une implémentation différente pour les fonctions API qui appellent les appels API natifs du système d'exploitation.
Une chose qu'ils auront tous en commun, qui sera différente d'un programme CLI, est ce qu'on appelle une boucle d'événement. L'idée de base est quelque peu compliquée et difficile à compresser, mais cela signifie essentiellement qu'il n'y a pas grand-chose dans votre classe principale / fonction principale, sauf:
- vérifier la file d'attente des événements s'il y a de nouveaux événements
- le cas échéant, envoyez ces événements aux gestionnaires appropriés
- lorsque vous avez terminé, cédez le contrôle au système d'exploitation (généralement avec une sorte d'appel spécial de fonction "veille" ou "sélection" ou "rendement")
- alors la fonction yield reviendra lorsque le système d'exploitation sera terminé, et vous aurez un autre tour de la boucle.
Il existe de nombreuses ressources sur la programmation basée sur les événements. Si vous avez une expérience avec JavaScript, c'est la même idée de base, sauf que vous, le scripteur, n'avez aucun accès ou contrôle sur la boucle d'événements elle-même, ou sur les événements qui existent, votre seul travail consiste à écrire et à enregistrer des gestionnaires.
Vous devez garder à l'esprit que la programmation GUI est incroyablement compliquée et difficile, en général. Si vous en avez la possibilité, il est en fait beaucoup plus facile d'intégrer simplement un serveur Web intégré à votre programme et d'avoir une interface HTML / Web. La seule exception que j'ai rencontrée est le constructeur d'interface Cocoa + Xcode + d' Apple + des didacticiels qui en font facilement l'environnement le plus accessible pour les personnes nouvelles en programmation GUI que j'ai vues.