Quel est le bon endroit pour commencer à programmer des interfaces graphiques pour Windows ?[fermé]

StackOverflow https://stackoverflow.com/questions/4347

  •  08-06-2019
  •  | 
  •  

Question

J'ai de l'expérience dans l'écriture d'applications console et réseau client/serveur en C et C++, mais je ne connais presque rien à l'utilisation de l'API visuelle win32, MFC, Qt, wxWidgets, etc.Par où commencer et dans quelle méthode dois-je me spécialiser pour être prêt et robuste pour l’avenir ?

Était-ce utile?

La solution

Il s’agit d’une question assez vaste, car la programmation d’applications GUI sous Windows peut se faire de nombreuses manières.

Le développement d'une application GUI comporte deux parties principales :le langue et le API/framework.Étant donné que vous souhaitez apprendre à créer des applications Windows GUI, le langage n’est pas vraiment un point de mire pour vous.Par conséquent, vous devez choisir un langage que vous connaissez déjà et travailler avec un framework ou une API qui peut être exploité par le langage que vous avez choisi.

Si vous souhaitez utiliser C, vous êtes pratiquement limité à gérer vous-même l'API Win32, auquel cas lire Petzold ou Richter serait un bon point de départ.L'API Win32 peut être assez intimidante, mais cela vaut la peine d'apprendre (à mon humble avis).Il existe de nombreux didacticiels sur Win32 sur le Web, et il y en a toujours MSDN, avec une référence/guide complet de l'API Win32.Assurez-vous de couvrir non seulement l'API, mais également d'autres domaines tels que les ressources/boîtes de dialogue, car ils constituent des éléments constitutifs de votre application Win32.

Si vous souhaitez utiliser C++, vous disposez de toutes les options dont vous disposez lorsque vous utilisez C ainsi que quelques autres.Je recommanderais d'utiliser directement l'API Win32, puis de passer à un framework connu tel que MFC, Qt, wxWindows ou GTK afin que vous puissiez passer moins de temps à travailler avec du code passe-partout et vous concentrer plutôt sur l'écriture de la logique de votre application.Les 3 dernières options que je viens de lister ont l'avantage supplémentaire d'être multiplateformes, vous n'avez donc pas à vous soucier trop des problèmes spécifiques à la plateforme.Étant donné que vous avez dit que vous vouliez travailler avec Windows, je suppose que vous préférez vous concentrer sur cela plutôt que sur plusieurs plates-formes - alors optez pour MFC, mais passez d'abord un peu de temps avec l'API Win32 pour vous familiariser avec certains des les notions.

Lorsqu'il s'agit de MFC et de l'API Win32, c'est une bonne idée d'essayer de bien comprendre la terminologie avant d'écrire du code.Par exemple, vous devez comprendre ce que pompe à messages est, et comment cela fonctionne.Vous devez connaître des concepts tels que "tiré par le propriétaire contrôles", et sous-classement.Lorsque vous comprendrez ces choses (et plus encore), il vous sera plus facile de travailler avec MFC car il utilise une terminologie similaire dans ses interfaces de classe (par exemple.vous devez savoir ce que signifie « traduire les messages » avant de pouvoir comprendre comment et quand l'utiliser PréTraduireMessage).

Vous pouvez également utiliser Managed C++ pour écrire des applications GUI .NET, mais j'ai lu à quelques endroits que Managed C++ n'était pas vraiment destiné à être utilisé de cette manière.Au lieu de cela, il doit être utilisé comme passerelle entre le code natif/non managé et le code managé.Si vous utilisez .NET, il est préférable d'utiliser un langage .NET tel que VB.NET ou C# pour créer vos interfaces graphiques.

Alors si tu sont vous allez utiliser .NET, vous avez actuellement le choix entre WinForms bibliothèque, ou WPF.Personnellement, je pense que vous perdriez du temps à apprendre à créer des applications WinForms étant donné que WPF est conçu pour les remplacer.Au fil du temps, WPF deviendra plus répandu et Winforms va très probablement disparaître.WPF dispose d'un ensemble d'API beaucoup plus riche et ne souffre pas de la plupart des limitations de Winforms.Toutefois, si vous choisissez cette voie, vous devrez sans doute apprendre XAML, qui est un langage de balisage qui pilote les applications WPF.Cette technologie arrive à maturité et il existe de nombreux endroits intéressants pour en apprendre davantage.Premièrement, il existe des sites tels que ApprendreWPF, et DrWPF qui contiennent de très bons articles.Deuxièmement, il y a beaucoup de qualité livres sur le sujet.

Donc, pour résumer, une fois que vous avez choisi votre langue et votre technologie, le chemin est en fait assez simple.Prenez simplement un livre ou deux, lisez des blogs, découvrez quelques exemples de code.et, surtout ...écrire du code.Continuez à écrire, continuez à faire des erreurs et continuez à en tirer des leçons.

En guise de note finale...

En d’autres termes, Silverlight.Si vous ne souhaitez pas emprunter la voie MS, vous pouvez jeter un œil à Flash/Flex d'Adobe.Silverlight et Flash/Flex créent des RIA.Et je pense que c’est là où nous nous dirigeons.Les jours d'Office comme les applications sont comptés

Je ne suis pas du tout d'accord.Silverlight n'est pas la même chose que WPF.Silverlight est spécifique au Web et ne possède qu'un sous-ensemble des fonctionnalités de WPF.Étant donné que la question concerne les applications Windows GUI, les applications Internet riches Flash/Flex ne sont pas vraiment une suggestion appropriée.Je ne suis pas non plus d'accord avec le fait que les jours des applications client riches (telles que Office) soient comptés du tout.

J'espère que cela aide.Bonne chance :)

Autres conseils

Je ne sais pas si je dirais que c'est un bon point de départ, mais si vous voulez être prêt pour l'avenir, jetez un œil au Windows Presentation Foundation qui est entièrement construit dans le but de programmer des interfaces graphiques pour Windows

Ma première expérience dans l'écriture d'applications GUI simples pour Windows s'est déroulée avec C# et Visual Studio.L'interface de création d'interface graphique est un simple glisser-déposer qui génère des méthodes squelettes basées sur les actions potentielles de l'utilisateur.Je n'ai fait qu'une programmation assez basique avec cela, mais j'imagine que ce serait un excellent point de départ pour apprendre les bases et étendre les capacités plus avancées au fur et à mesure.

Il existe de nombreux didacticiels Win32 en ligne :

http://www.zeusedit.com/forum/viewtopic.php?t=1218

Il existe de nombreux compilateurs parmi lesquels choisir :

http://www.zeusedit.com/forum/viewtopic.php?t=238

Je recommanderais également d'obtenir le Kit de développement logiciel Borland Win32 documentation au format de fichier WinHelp :

http://www.zeusedit.com/forum/viewtopic.php?t=7

Il ne couvre que les bases de Win32, mais au démarrage, cela peut être utile car il est moins intimidant et moins volumineux que MSDN.

Je n'emprunterais jamais Silverlight, Flash/Flex ou toute autre voie similaire.Cela a l'air sympa, mais le principal problème est que le code du moteur qui le fait fonctionner est complètement fermé et contrôlé par une seule entreprise.Prenez, par exemple, les versions 64 bits des deux.Si une nouvelle plate-forme apparaît, vous ne pourrez pas y migrer votre code existant.

Pour les applications professionnelles, Windows Forms est très mature.Il offre un chemin doux depuis la génération automatique de beaucoup de choses pour vous jusqu'à permettre un contrôle plus fin et à rouler le vôtre.Il existe des tonnes de contrôles tiers de haute qualité et un grand nombre d'exemples, de documents, etc.Il est difficile de se retrouver confronté à un problème que quelqu'un d'autre n'a pas résolu.Je recommande fortement d'acquérir des connaissances de base sur Win32 (par ex. Petzold) car le framework WinForms vit au-dessus.

Je n'ai aucune expérience WPF, mais d'après les exemples d'applications que j'ai vus, cela semble être un bon choix pour les applications dont les interfaces bénéficieraient de métaphores plus graphiques.Donc, si vous créez une application bancaire, cela ne vaut probablement pas les frais de conception supplémentaires.Mais si vous créez, par exemple, une application de gestion d'entrepôt, elle pourrait être améliorée en déposant de jolies boîtes dans de jolis bacs.

@StephenCox :mauvaise réponse à la mauvaise question.OP pose des questions sur les applications clientes de bureau et, de plus, WPF != Silverlight.

Pour un point de départ simple pour comprendre la nature « événementielle », tous les cadres sont créés autour de regarder FLTK.

Voici quelques vidéos de démarrage rapide Lien

Pour un usage professionnel, je recommanderais Qt, cher mais qui en vaut souvent la peine dans des situations commerciales.

Puisque vous êtes déjà familier avec le C et le C++, je vous recommande d'apprendre à écrire une application graphique Windows simple à l'aide du livre de Charles Petzold.Il vous donnera une compréhension fondamentale du fonctionnement de Windows.Il est bon de comprendre que presque tout ce que vous voyez est une fenêtre (un bouton est une fenêtre par exemple) et que ces fenêtres répondent aux messages.Cependant, je ne consacrerais pas beaucoup de temps à cela et vous n'avez pas nécessairement besoin de le faire en premier si vous choisissez WPF.Je pense simplement qu'il est bon d'avoir une compréhension de base de cela.

Il y a eu récemment un bon podcast sur .Net Rocks intitulé "Kate Gregory développe en C++ pour Vista !" là-bas, elle recommande à quelqu'un qui débute maintenant de ne pas utiliser/apprendre MFC (même s'il a été récemment mis à jour).

Pour vous préparer à l'avenir, vous devez apprendre WPF, mais ce n'est pas encore terminé, donc selon les types d'applications côté client que vous souhaitez créer, vous devrez probablement apprendre WinForms.La majorité des gens n’utilisent pas encore WPF, c’est donc le bon moment pour commencer à apprendre.Je pense qu'il vous sera plus facile d'utiliser C# pour l'apprendre au lieu de faire du code managé avec C++.

Commencez par bien maîtriser vos bases.Le meilleur tutoriel que j'ai trouvé est : http://winprog.org/tutorial/start.html

Après cela, même si la page d'accueil est odieuse de mauvais goût, les pages du didacticiel sont bonnes en termes de contenu et d'esthétique : http://www.tenouk.com/cplusmfcdotnet.html

Et bien sûr, il y a MSDN.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top