Comment écrire un logiciel Windows moderne en C ++?

Je suis très intéressé par la façon dont les logiciels Windows modernes sont écrits en C ++ de nos jours. J’ai demandé à mon ami qui avait travaillé sur le logiciel Windows et il a dit que les dernières choses avec lesquelles il travaillait étaient MFC, puis WTL. Il a dit que le MFC n’est plus quelque chose de moderne, mais WTL est toujours utilisé mais il n’en sait pas beaucoup plus. Il a également déclaré que WTL n’était pas aussi moderne et avant cela, il a programmé dans Windows API pure.

Comment écrit-on un logiciel pour Windows Vista ou Windows 7? Utilisez-vous toujours WTL? Qu’en est-il de MFC et de l’API Windows pure? Ou y a-t-il d’autres bibliothèques maintenant?

Je ne sais pas grand chose à ce sujet, mais C # ou d’autres langages .NET ont-ils remplacé C ++ dans l’écriture de logiciels Windows modernes?

De ce que j’ai vu au cours des dernières années:

  • WTL est sur une ligne de vie. Abandonné par Microsoft, repris par les fans et plusieurs abonnés très dévoués. Très propre, mais la courbe d’apprentissage est raide et la base de la fan diminue. Le groupe Yahoo n’est pas très actif. Je ne peux pas le recommander.

  • MFC a redonné vie à MSFT en lançant le pack de fonctionnalités. Assez étendu et un peu non-MFC-ish, il a un fort support pour le skinning, les dispositions d’amarrage et les rubans. Je pensais que ça allait être très populaire, mais je n’ai jamais vu beaucoup de développeurs sauter dessus. Les questions du forum MSDN sont rares. Si vous avez un code source MFC existant, alors jetez un oeil. Un autre rafraîchissement MFC pour VS2010 avec les fonctionnalités Win7 ajouté, il rest la solution d’interface utilisateur de base de la société.

  • wxWidgets est toujours là. Aucune expérience personnelle, mais Seigneur, les quelques pratiquants dont j’ai entendu parler grognent une tempête. Des choses vraiment amères aussi.

  • Qt existe depuis un certain temps, mais a considérablement progressé, en particulier l’année dernière. Celui qui l’utilise l’aime vraiment . Cela va au-delà des limites d’une bibliothèque de classes d’interface utilisateur, leurs utilisateurs recherchent activement des solutions aux tâches de programmation communes qui commencent par la lettre Q. C’est un vote de confiance puissant.

Mais si vous êtes sur une stack Microsoft, aucune de ces bibliothèques de classes n’est là où se trouve le véritable développement de l’interface utilisateur. WPF est l’éléphant dans la pièce, ses capacités sont à cent miles au-delà de ce qui est indiqué ci-dessus. Sa capacité à briser les limites des périphériques et des paradigmes est puissante, ce qui rend difficile l’écriture de code qui s’exécute sur un ordinateur de bureau, ainsi qu’un navigateur Web et un téléphone. Mais C ++ n’en fait pas partie.

WTL, Qt, wxWidgets sont assez communs.

  • Ils permettent tous un développement rapide de l’interface graphique et sont très polyvalents (la troisième option, à mon avis, prend plus de temps pour s’y habituer). Les deuxième et troisième options sont vraiment intéressantes car elles sont multiplates-formes.

  • Ecrire des fenêtres en pure WinAPI est extrêmement oldschool mais peut parfois être amusant.

  • C# approche C# pour créer des fenêtres est encore plus rapide que les options précédentes, mais elle est un peu moins flexible.

Jetez un coup d’œil à Qt – vous l’aimerez peut-être. À moins bien sûr que vous préfériez une version non portable. Mais même si vous ne prévoyez pas de construire sur OS X, Linux, les téléphones, le framework Qt est bien écrit, bien documenté et fonctionne. Le SDK comprend désormais un joli IDE (Qt Creator).

WTL à chaque fois que votre plate-forme principale est Windows. Google Chrome l’utilise, Spotify l’utilise. Son plus productif, flexible, n’est pas un porc de ressources. Par flexibilité, je veux dire que vous pouvez l’utiliser avec du code API Win32 pur / autre code C ++ sans trop de difficulté.

Pour plus d’informations WTL: collection de liens WTL

Dans .NET (C #, VB.NET, …), WPF est actuellement à la pointe de la programmation graphique (en remplacement de WinForms). Le code compilé dans .NET est en fait CIL qui est compilé en code natif à l’exécution par le JIT. Cela présente l’avantage que vous n’avez pas à vous soucier des systèmes cibles 64 ou 32 bits.

En C ++, Qt semble être une bonne solution car elle est bien conçue et fournit un grand nombre de services. Ce que je n’aime pas dans Qt c’est son aller-retour, c’est tellement lent, il y a un compilateur moc, le compilateur, puis un lien, ça prend du temps par rapport à C # /. NET pour obtenir l’exécutable. D’un autre côté, vous pouvez le rencontrer même dans les systèmes embarqués, ce qui le rend intéressant dans de tels cas.

Je vous conseille d’avoir au moins un aperçu de C # /. NET et de l’expérimenter avant de décider.

Après avoir évalué, je suis arrivé à la situation où Win32 ou WTL pur est le seul moyen d’écrire des applications gagnantes de style moderne qui ne sont pas basées sur WRT.

Le nouveau look est le point principal. MFC semble terrible sur Win8 et Win10, en particulier avec tous ces produits. Pure MFC est bon mais gros et la partie vue-modèle est juste des outrages terribles et j’aime plus WTL. Mais ce n’est pas documenté et c’est tellement mauvais et effrayant.

WxWidgets est un jouet laid.

QT n’est plus une alternative. Ils se concentrent trop sur le mobile et les applications. Et si vous allez sur MacOSX, vous ne pouvez pas utiliser QT du tout (oui, ça va tourner mais ça va vous faire vomir sur l’UX).

WinRT est tellement ressortingctif et manque de fonctionnalités que vous ne pouvez pas l’utiliser. Et vous pouvez être sûr qu’il échouera car personne n’utilise le WinStore ou Windows sur les tablettes / téléphones. Alors pourquoi s’embêter.

WPF est ok si vous pensez que vous appréciez les applications lentes et lourdes. Il semble plus agréable, mais tous les produits de beauté ne font désormais plus partie des directives de conception de l’interface utilisateur et les fonctionnalités des widgets sont inférieures à celles des widgets natifs Win32. Incroyable mais vrai. Et je vous enferme dans l’utilisation de C # inutilisable qui, à mon avis, est déconseillé car les performances ont à nouveau une importance (car la performance est l’énergie, c’est la durée de vie).

Même Herb Sutter et d’autres employés de haut rang de MS vous disent que le C ++ est l’avenir. Et la prochaine application Killer est basée sur C ++ 14 et Microsoft le sait.