2009-01-28 7 views
23

Je décide de développer une interface graphique pour un petit projet api C++/win32 (en utilisant Visual Studio C++ 2008). Le projet n'aura besoin que de quelques composants pour démarrer le processus principal, il sera donc très léger (juste un bouton et une boîte de texte à peu près ...). Ma question est la suivante:Comment créer une interface graphique pour une application Windows utilisant C++?

Je n'ai pas l'expérience de développer des interfaces graphiques sur Windows mais je peux apprendre facilement. Alors, que dois-je utiliser? Un éditeur visuel (glisser et déposer le code generationg: ma préférence pour la conception graphique de bureau de loin (java/swing)). Ou devrais-je utiliser une bibliothèque spécifique? De toute façon, QUEL bibliothèque ou éditeur visuel dois-je utiliser? J'ai entendu quelqu'un mentionner écrire l'interface graphique en C#, puis appeler le code C++ ... le fait est que c'est une interface graphique tellement simple que je trouverais plus facile de tout garder en C++, mais je suis ouvert à tout ce que meilleure suggestion est.

Répondre

12

Si vous faites une interface graphique très simple et vous utilisez déjà Visual Studio il peut faire sens pour aller avec MFC. Vous pouvez simplement utiliser l'Assistant Visual Studio MFC pour créer une application basée sur une boîte de dialogue, supprimez deux contrôles dessus et c'est parti. MFC est daté et a sa part d'inconvénients, mais il fera certainement le travail pour vous si vous parlez juste d'un bouton et d'une zone de texte.

Je n'ai aucune expérience avec Qt, donc je ne peux pas comparer les deux.

15

de loin la meilleure bibliothèque de GUI C++ est Qt, il est complet, facile à apprendre, très rapide et multiplateforme.

ah, il a récemment obtenu une licence LGPL, maintenant vous pouvez le télécharger gratuitement et inclure des programmes commerciaux

+0

v4.5 sera sous licence LGPL, mais ce n'est pas encore publié. – sth

+1

Le principal avantage de QT est qu'il est multiplateforme. Vous ne pensez peut-être pas que vous en avez besoin maintenant, mais attendez quelques années plus tard et vous voulez mettre en communication ... si vous êtes parti avec QT, vous rirez. – jkp

+2

Rédaction de code multiplateforme juste parce que vous pouvez _might_ vouloir courir sur plusieurs plates-formes dans quelques années est une raison terrible de le faire. Il y a des frais généraux de développement importants dans l'écriture de code pour plus d'une plateforme et vous ne devriez pas le faire à moins d'avoir une très bonne analyse de rentabilisation pour le faire. –

2

Qt de Nokia est certainement le chemin à parcourir. Une autre option est gtk, mais Qt est mieux supporté et documenté. De toute façon, ils sont tous deux gratuits. Et les deux sont largement utilisés et bien connus, il est donc facile de trouver des réponses à vos questions.

3

Il suffit de créer une nouvelle application MFC C++. Il est construit, assez facile, et des milliers d'exemples existent dans le monde ...

De plus, vous pouvez concevoir votre boîte de dialogue directement dans Visual Studio, leur donner des noms de variables, et 90% du code est généré pour vous .

2

Pour une application aussi simple, même MFC serait trop puissant. Si vous ne voulez pas introduire une autre dépendance, faites-le simplement dans Win32. Ce sera plus facile pour vous si vous n'avez jamais utilisé MFC.

Jetez un coup d'œil aux classiques "Programming Windows" de Charles Petzold ou à quelques tutoriels en ligne (par exemple http://www.winprog.org/tutorial/) et vous êtes prêt à partir.

1

Si vous voulez en savoir plus sur win32, WTL http://wtl.sourceforge.net/ est l'équivalent assez léger de MFC, mais vous devez aimer le modèle pour l'utiliser.

Si vous voulez quelque chose de simple MFC est déjà intégré avec VS, il a déjà une grande base de code supplémentaire et des solutions de contournement de bogues connus dans le réseau déjà.

Egalement Qt est un framework vraiment génial avec un bel ensemble d'outils, un éditeur de dialogues, des thèmes, et bien d'autres choses, en plus votre application sera prête à être multiplateforme, bien qu'il faudra un peu de temps pour s'y habituer .

Vous avez également Gtk, wxWindow, et vous n'aurez aucun problème si vous l'avez déjà utilisé sur Linux.

7

Je préfère nettement utiliser Microsoft Visual Studio et écrire une application Win32 native.

Pour une interface utilisateur aussi simple que celle que vous décrivez, vous pouvez simplement créer un Dialog Box et l'utiliser comme fenêtre principale de votre application. L'application par défaut créée par l'expert Win32 Project dans Visual Studio fait apparaître une fenêtre, donc vous pouvez replace cette fenêtre avec votre boîte de dialogue et remplacer le WndProc par un DialogProc similaire (mais plus simple).

La question est donc celle des outils et des coûts. Le Express Edition de Visual C++ fait tout ce que vous voulez sauf créer réellement la ressource de modèle de boîte de dialogue. Pour cela, vous pouvez soit le coder dans le RC file by hand ou in memory by hand. Question SO connexe: Windows API Dialogs without using resource files.

Ou vous pouvez essayer l'un des free resource editors que d'autres ont recommandé.

Enfin, le Visual Studio 2008 Standard Edition est une option plus coûteuse mais vous offre un éditeur de ressources intégré.

3

Je déconseille fortement d'utiliser Win32, car il est assez difficile de le faire fonctionner dans toutes les situations, c'est un travail plutôt ennuyeux et fastidieux et la bibliothèque Commandes communes n'est pas complète. En outre, la plupart du travail a été fait pour vous.

Chaque fois que je finis par faire du simple Win32, je dois passer au moins quelques heures sur les tâches les plus triviales car je dois rechercher tous les paramètres, drapeaux, fonctions, macros et trouver comment les brancher correctement. Je préfèrerais généralement un simple type glisser-déposer de la solution de type «ne faites pas mon corps» et je clamais la chose en deux minutes.

Comme une boîte à outils légère, je suggère omgui qui a une API propre et jolie. Il ne vient cependant pas avec des outils.

Si vous avez besoin d'un support d'outil, vous finirez probablement par choisir MFC (éditeur de ressources intégré dans Visual Studio) ou Qt. Je ne sais pas si wxWidgets a des outils, mais je suppose que c'est le cas. David Citron mentionne qu'apparemment l'éditeur de ressources dans Visual Studio génère des fichiers de ressources compatibles Win32, ce qui est probablement la meilleure façon de faire les choses si vous voulez garder les choses simples.

+1

L'éditeur de ressources intégré dans VS génère des ressources compatibles avec Win32. –

+0

C'est le cas? Maintenant vous me dites: - /, cela aurait probablement sauvé plusieurs années de ma vie. –

0

Une simple "fenêtre" avec du texte et un bouton est juste un MessageBox. Vous pouvez les créer avec un seul appel de fonction; vous n'avez besoin d'aucune bibliothèque.

3

Évitez QT (pour les noobs) ou des bibliothèques inutiles (absurdes pour une chose de base)

Il suffit d'utiliser le VS Win32 Assistant api, annonce la boîte de texte et de bouton ... et voilà tout!

En 25 secondes!

+5

où puis-je trouver cet assistant win32 api? – Zombies

0

J'ai utilisé wxWidgets pour un petit projet et j'ai adoré. Qt est un autre bon choix, mais pour un usage commercial, vous devrez probablement acheter une licence. Si vous écrivez en C++ n'utilisez pas l'API Win32 car vous finirez par le rendre orienté objet. Ce n'est pas facile et prend du temps. Aussi Win32 API a trop de macros et se sent compliqué pour ce qu'il offre.

Questions connexes