Façon moderne et native de créer des applications GUI WinAPI en C++ [fermé]
Tout d'abord, je sais que c'est une question commune, mais je n'ai pas pu trouver la réponse exacte que je cherche.
J'ai fait beaucoup de projets en Java en utilisant Swing. En commençant par simplement coder l'interface graphique, puis en passant plus tard aux concepteurs de L'interface graphique. Cela s'est avéré être un Très moyen rapide et facile de créer des applications GUI.
Mais maintenant, je dois passer à C++. Je commence un projet qui utilise beaucoup de ressources HW (DirectX, OpenCV, etc...) Je sais qu'il existe des bibliothèques Java pour ces technologies. Cependant, C++ est certainement la bonne façon d'aller, compte tenu des internes de ce projet.
Je connais bien les langages C et c++ de la programmation MCU. En outre, j'ai lu de nombreux articles sur la programmation native WinAPI, les internes de Windows,etc. Je pense que j'ai assez de connaissances pour commencer. Je ne veux pas m'inquiéter beaucoup de la conception de L'interface graphique, mais cela doit sembler approprié.
Je sais qu'il y a peu d'options de base: WinAPI pur, MFC, WTL, Qt... Je serais très heureux s'il y avait une sorte de concepteur D'interface graphique outil, mais de mes recherches, il n'y a pas. Il y a L'Assistant MFC qui aide à créer une fenêtre de base, mais ce n'est pas un concepteur. La chose la plus proche que j'ai trouvée était Qt. Mais d'après ce que j'ai lu, il n'utilise pas WinAPI pour dessiner, car à l'avenir, l'apparence de L'application écrite Qt peut différer de l'apparence native de Windows.
Donc, pour résumer, veuillez, si vous avez de l'expérience dans la création d'Applications Windows c++ natives avec GUI, que me recommanderiez-vous? Plus précisément, y a-t-il un outil ou un concepteur I raté?
(J'utilise Visual Studio 2010 professional, puisque je l'ai gratuit grâce au projet DreamSpark)
7 réponses
J'ai récemment utilisé Qt4 et j'ai été très satisfait de l'API. Je l'ai trouvé simple, bien documenté, et le code est extrêmement concis.
Qt fait un très bon travail d'émulation de L'apparence du système d'exploitation cible (comme @in silico l'a souligné dans les commentaires, Qt dessine tout lui-même et n'utilise pas composants natifs) indépendamment, cela peut être codé à la main ou visuellement via l'éditeur GUI dans leur IDE, Qt Creator. Si vous suivez cette route, je il est recommandé de créer votre projet GUI initial (.pro
fichier), puis de l'importer dans Visual Studio via le Qt Visual Studio Add-In .
Slots et signaux , événement de Qt / système de messagerie, est également intéressant de mentionner. Oui, il est essentiel à la programmation GUI, mais pourrait également être extrêmement utile dans le code de niveau inférieur.
Je m'attends à ce que Qt fonctionne bien dans votre projet, mais comme toujours, créez quelques tests simples pour vous assurer que les technologies fonctionneront ensemble.
Vous pouvez utiliser le C++Builder XE2 (faisant partie de L'IDE RAD Studio), qui inclut la VCL (Visual Component Library), la VCL est un wrapper sur les contrôles Windows (et inclut également des contrôles personnalisés) qui augmentent la productivité du développement.
Voici quelques conseils:
Ne vous enfermez pas dans C++. C# et Java (par exemple) peuvent être facilement interop'ED avec C / C++. (Via PInvoke ou C++/CLI pour le premier et JNI pour le plus tard). C++ peut ne pas être le langage idéal pour écrire une interface graphique rapidement.
Votre Exigence de "look Windows natif" est arbitraire et vous devriez y réfléchir. Est-ce vraiment ce dont vous avez besoin ?
Winforms. C'est une technologie plus ancienne, mais est encore largement utilisé. Vous utilisez L'API de C++/CLI ou C# (ou tout autre langage. net).
-
WPF, une API plus récente mais qui sera plus difficile à gérer à partir de C++, (mieux avec C# ou VB)
-
Une des nombreuses GUI toolkit disponibles sur le marché qui ont une API C ou C++ (QT, GTK, wxWidgets, le VCL,... liste ici ). Certains ont des looks "natifs" , d'autres non. D'autres ont des designers d'autres non. D'autres sont gratuits, d'autres non.
Si vous avez besoin d'une interface utilisateur simple, je recommande d'utiliser WTL-est simple, léger, bibliothèque d'en-tête uniquement, très bon wrapper sur WinAPI. Dans Visual Studio, vous pouvez utiliser form designer pour créer des fenêtres et utiliser des classes WTL pour implémenter l'interaction avec l'utilisateur. WTL a une mauvaise documentation mais WTL ressemble à MFC.
Si vous voulez des possibilités riches, je recommande D'utiliser Qt. C'est un framework GUI très puissant avec une grande communauté.
La bibliothèque de classeswxWidgets c++ est livrée avec unScreen builder .
VCL est un bon moyen d'aller. Il dispose d'un outil de conception graphique (Embarcadero Rad Studio XE6) développeur graphique entièrement natif pour C++ et Delphi
Selon la rigueur de votre définition, vous pouvez utiliser. Net Windows Forms ou Windows Presentation Foundation et brancher la logique à partir de C++, C++/CLI et C#. Ce ne serait pas une solution C++ pure. En fait, je ne conseillerais même pas nécessairement d'utiliser C++ dans cette situation. Simplement utiliser C# serait plus intuitif et maintenable. WinForms et WPF ont des concepteurs d'interface graphique assez impressionnants.