En gros, le système de fenêtrage d'un système d'exploitation expose certains appels API que vous pouvez exécuter pour effectuer des tâches telles que la création d'une fenêtre ou l'ajout d'un bouton à la fenêtre. En fait, vous obtenez une série de fichiers d'en-tête et vous pouvez appeler des fonctions dans ces bibliothèques importées, comme vous le feriez avec stdlib et printf
.
Chaque système d'exploitation est livré avec sa propre boîte à outils d'interface graphique, sa suite de fichiers d'en-tête, ses appels d'API et sa propre façon de faire les choses. Il existe également des boîtes à outils multiplateformes comme GTK , Qt y wxWidgets qui vous aident à créer des programmes qui fonctionnent partout. Ils y parviennent en ayant les mêmes appels d'API sur chaque plate-forme, mais une implémentation différente pour les fonctions d'API qui font appel aux appels d'API du système d'exploitation natif.
Une chose qu'ils auront tous en commun, et qui sera différente d'un programme CLI, est ce qu'on appelle une boucle d'événement. L'idée de base est un peu compliquée et difficile à résumer, mais en gros, cela signifie qu'il ne se passe 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
- s'il y en a, distribuer ces événements aux gestionnaires appropriés
- lorsque vous avez terminé, redonnez le contrôle au système d'exploitation (généralement à l'aide d'une fonction spéciale "sleep", "select" ou "yield").
- alors la fonction yield reviendra lorsque le système d'exploitation aura terminé, et vous aurez un nouveau tour de boucle.
Il existe de nombreuses ressources sur la programmation par événement. Si vous avez une quelconque expérience de JavaScript, il s'agit de 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 existants, votre seul travail consiste à écrire et à enregistrer des gestionnaires.
Vous devez garder à l'esprit que la programmation des interfaces graphiques 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 un serveur web dans votre programme et d'avoir une interface basée sur HTML/web. La seule exception que j'ai rencontrée est le programme d'Apple intitulé Cacao + Xcode + Le logiciel est composé d'un générateur d'interface et de tutoriels qui en font l'environnement le plus facile d'accès pour les débutants en programmation d'interface graphique que j'aie jamais vu.
5 votes
Cela dépend. Quel type de système d'exploitation visez-vous ? De nombreux cadres d'interface graphique sont spécifiques au système d'exploitation.
3 votes
Quel système d'exploitation / plateforme ? Ou, si vous êtes intéressé par l'écriture d'applications GUI multiplateformes, veuillez le dire - ces choses font une grande différence. énorme différence pour C++...
1 votes
Cela n'a pas vraiment d'importance. Mais prenons l'exemple de Windows XP.
3 votes
PHP permet d'écrire des programmes avec interface graphique. Il n'y a aucune raison pour que vous ne puissiez pas exécuter des programmes PHP à partir de la ligne de commande, et il existe des bibliothèques graphiques comme PHP-GTK. gtk.php.net et PHP-Qt php-qt.org qui peuvent vous aider Vous pouvez également évaluer pourquoi vous avez besoin de c++. L'écriture d'interfaces graphiques en c++ est plus difficile que dans de nombreux autres langages, et vous pourriez être en mesure de regrouper votre code c++ dans des bibliothèques appelables depuis Python, C# ou PHP, ou quelque chose d'un peu plus facile à coder en interfaces graphiques.
6 votes
Votre question est tellement vaste que je pense que vous ne voulez pas seulement les noms des boîtes à outils ou même seulement quelques tutoriels. Tu veux des livres celles qui vous donnent plus que des API ou des exemples, qui vous donnent réellement des concepts. KTC en recommande quelques-uns ci-dessous, mais je vous suggère, quelle que soit la boîte à outils que vous choisissez pour commencer à jouer avec, de vous assurer d'en trouver une sur laquelle vous pouvez lire également.
7 votes
"Écrire des interfaces graphiques en c++ est plus difficile que dans de nombreux autres langages" Sur quoi vous basez-vous pour affirmer cela ?
1 votes
@waiwai933 Qu'avez-vous fait finalement ? Qu'avez-vous utilisé comme interface graphique ?