Comment démarrer dans le développement Windows?

Je suis programmeur web basé sur Unix depuis des années (Perl et PHP). Je suis également compétent avec C et C ++ (et bash et ce genre de choses de type sysadmin) en termes de langage lui-même. Je n’ai jamais eu de problème pour apprendre une nouvelle langue (je me suis amusé avec Java il y a quelques années et même si je pouvais l’écrire, je ne l’aimais pas comme langue).

Ce que je n’ai pas d’expérience, c’est la vaste gamme de frameworks existants pour écrire des applications Windows graphiques.

J’ai quelques idées pour les applications Windows que je souhaite utiliser. Je pourrais faire cela est Perl / TCL / TK mais je veux quelque chose de plus “natif” pour une variété de raisons.

Grâce à ma société actuelle, j’ai access aux outils Microsoft (et aux licences pour les utiliser pour le “développement”). J’ai donc décidé de m’apprendre quelque chose de nouveau.

J’ai donc installé Visual Studio 2008. J’ai tiré, j’ai cliqué sur “New Project” et je me suis retrouvé complètement déconcerté par la variété des nouveaux projets que je pouvais lancer.

Quelqu’un peut-il s’il vous plaît m’aider à comprendre non seulement les différences fondamentales, mais aussi des conseils sur le genre de choses que chaque type se prête?

En supposant que je suis sur le chemin du C ++ (je connais le langage donc ne pas choisir C # – à moins que ce ne soit plus recommandé …) je pourrais utiliser:

  • Windows Forms
  • Application MFC
  • Win32

Je sais aussi que loin de Microsoft, je pourrais utiliser wxWidgets. wxWidgets me plait (cross platform, etc.) mais comment cela se compare-t-il aux différentes options de Microsoft ci-dessus? Je sais aussi que Qt existe.

Cela dépend de la proximité du métal que vous voulez être. Choisissez .Net / C # / Windows Forms / WPF si vous souhaitez écrire rapidement des applications Windows uniquement. Choisissez C ++ / MFC si vous êtes déterminé à apprendre une plate-forme qui n’est pas facile à utiliser et qui a 15 ans de code hérité, mais vous donne un contrôle infini sur chaque petit détail (MFC est également Windows uniquement) .

MFC est un wrapper autour de l’api C win32, plus quelques bonus supplémentaires qui contiennent des fonctionnalités standard. Cela aide beaucoup de savoir comment fonctionne l’api win32. Pour apprendre cela, je recommande «Programming Windows» de Charles Petzold (appelé «le Petzold» par les anciens). Vous pouvez également choisir de commencer avec MFC. Jetez un coup d’œil aux nombreux exemples et didacticiels fournis avec Visual Studio et sur des sites tels que codeproject.com.

.Net / C # est beaucoup plus facile à utiliser. Il fait abstraction d’une grande partie de l’api de Win32, mais c’est toujours un wrapper – donc, pour certaines choses, vous devez “supprimer un niveau”, comme vous aviez l’habitude de le faire avec Visual Basic. IMHO (et je vais probablement être modded down pour cela), C # est le nouveau Visual Basic sauf qu’il n’est pas si moche en tant que langage et qu’il est typé statiquement. Pour être honnête, il a aussi certains avantages, comme ne pas nécessiter le temps d’exécution étrange de VB (mais cela nécessite .Net, donc …)

C # est la langue de choix pour le développement Windows, pour moi. Je viens du même genre de fond que vous et j’ai trouvé C # incroyablement rafraîchissant. J’aime vraiment ce langage et .NET est maintenant ma plate-forme de choix. De plus, il est facile de restr en contact avec vos racines Unix via le développement Mono. Vraiment, .NET est une excellente plate-forme et vous devriez l’explorer.

De plus, en ce qui concerne Visual Studio, il ne faut pas oublier que les différents projets spécifient uniquement le type de bibliothèques incluses, par défaut, et le processus de génération. Si vous voulez restr avec un Makefile de style Unix, vous pouvez faire du développement Windows avec Mono.

Alex

Windows Forms est de loin le plus beau de ceux-là. Cependant, l’utilisation de Windows Forms à partir de C ++ ne fera que vous embrouiller davantage si vous ne savez pas déjà ce que vous faites, car alors vous utilisez vraiment C ++ / CLI, ce qui pourrait bien être un langage complètement différent. Mieux vaut aller en C # si vous voulez aller dans cette voie.

MFC est probablement le plus proche de ce que vous connaissez. Mais, encore une fois, Windows Forms est tellement mieux.

Je choisirais vraiment C # au lieu de C ++. Pour les applications client Windows, il ne peut pas être battu. Pour le type C / C ++ comme vous, la courbe d’apprentissage de la syntaxe sera courte. La difficulté sera d’apprendre le framework .NET, mais c’est le coût que vous devrez assumer d’une manière ou d’une autre.

Une fois que vous avez sélectionné C #, sélectionnez simplement Windows Forms ou WPF Application. Les deux sont des types d’application côté client. Si vous choisissez WPF Application, vous devrez également apprendre XAML, un concept relativement nouveau mais extrêmement puissant.

J’ai essayé de faire de la programmation C ++ dans .Net (Windows Forms). Et même si c’était possible, ce n’était certainement pas une expérience agréable, principalement parce que vous avez des mots-clés supplémentaires et d’autres qui diffèrent de C ++ standard. Mais si vous êtes disposé à apprendre plus de C ++, c’est une option.

Moi-même, j’ai commencé à travailler sur un projet utilisant C # qui fonctionne très bien. Il est facile à apprendre si vous avez des connaissances en C ++.

Je ne voudrais pas que le monde touche à nouveau l’API Win32. C’est vraiment terrible!

Si vous êtes simplement intéressé par l’écriture d’applications Windows, restz avec “Windows Form Application”. Il vous lancera avec un formulaire Windows vide et une classe contenant votre méthode main ().

Le projet “Console Application” est probablement le plus simple, il crée simplement un fichier de classe avec un main () et c’est tout.

Le projet “Class Library” a des parameters d’échafaudage et de création par défaut pour créer une DLL.

Il n’y a généralement pas de différences fondamentales entre les différents types de projets. Tout ce qu’ils font est de configurer des inclusions par défaut pour vous et de générer un code d’échafaudage (par exemple, un formulaire de fenêtres vide) pour vous aider à démarrer.

Je recommande d’apprendre le C #. Si vous connaissez Java, ce ne sera pas un grand pas pour vous. La version initiale de C # était en fait conçue pour être exactement comme Java, mais ils ont légèrement divergé au fil des ans.

Je pense que ce que je suggère a beaucoup plus à voir avec votre objective. Si vous cherchez à créer votre propre application et à vouloir la commercialiser rapidement, et que celle-ci doit être Windows, alors j’utiliserais C # WF comme d’autres l’ont suggéré.

Si vous cherchez à vous rendre plus employable, alors j’irais avec C # / ASP.Net. De cette façon, vous apprenez le C #, mais vous en apprenez également davantage sur le développement Web en général et sur ASP.Net en particulier. Je pense que vous constaterez que Windows Forms est beaucoup plus facile, comparativement, et ne vaut pas vraiment la peine de passer beaucoup de temps.

Donc si j’étais vous, je construirais mon application pour que la majorité soit séparée de l’interface. J’apprendrais d’abord comment faire interagir ce code dans ASP.Net, puis je l’essayerais dans Windows Forms. Si vous pouvez le faire, vous apprendrez beaucoup de compétences très importantes pour le développement du framework .Net.

À mon humble avis, wxWidgets est meilleur que ceux-là. Par exemple, je connais de nombreuses personnes qui ont converti leurs projets de MFC à wx. wxWidgets a tout le MFC (dans les premières versions de wx, beaucoup de classes étaient des clones de classes MFC), et beaucoup plus. Ce n’est pas simplement une bibliothèque graphique, mais vous avez des wrappers pour toutes sortes de tâches courantes, comme la lecture / écriture de fichiers XML, le registre Windows, la manipulation de différents types de graphiques et de données d’images, les classes de conversion Un grand nombre de classes supplémentaires sur le site Web wxCode peuvent facilement améliorer vos applications.

wxWidgets est également multi-plateforme, a un support complet d’Unicode et ne fait que progresser. Si vous décidez de l’essayer, assurez-vous d’essayer wxFormBuilder pour créer facilement une interface utilisateur WYSIWYG (boîtes de dialog, fenêtres, …).