Affichage des articles dont le libellé est MFC. Afficher tous les articles
Affichage des articles dont le libellé est MFC. Afficher tous les articles

vendredi 2 juin 2023

C++ avec Visual Studio 2019

Alors ce matin, je reprends le développement en C++ pour voir ce que l'on peut faire avec Visual Studio 2019... en C++. Quel sont les Templates les outils de test qui sont proposés par Visual Studio C++.

Visual Studio 2019 - Instanciation d'un projet Windows Desktop C++
Visual Studio 2019 - Instanciation d'un projet Windows Desktop C++

Après avoir fait pas mal de chose avec Arduino et avoir fait un tour complet des technologies Microsoft UWP, Balzor, WPF, MAUI ... je souhaite retourner faire un tour du côté de C++ mais à nouveau je retombe sur la difficulté de ce projet Template C++ instancié par Visual Studio 2019 et après ... et après on se sens tout nu.

Même Git est perdu avec tout ces fichiers temporaire décidément le développement d'application Desktop avec C++ ce n'est pas une sinécure. Je souhaite absolument ne pas installer les MFC ...

Je trouve une page pour développer une fenêtre :

Microsoft Learn - Créer une fenêtre - Win32 apps

Plus généralement :

Microsoft Learn - Créer des applications Windows de bureau à l’aide de l’API Win32

Je trouve également

Microsoft - Win2d

Je cherche un peu dans mes archives et finalement, je trouve ce projet MFCPlusNiveauSup  :

Visual Studio C++ - MFC - Application à la façon "MS Office"
Visual Studio C++ - MFC - Application à la façon "MS Office"

Je ne vous raconte pas le bouzin, le code tout à la main pas un designer graphiques si je veux vraiment faire du C++ je vais me rabattre sur :

GitHub - mabyre/Console-CPlusPlus-StarterKit
 For developers to work in C++ and C this is the best trace tool ever

Je crois que je vais tout fermer et aller à la plage...

Mais sinon il y a peut être un truc bien Ici  avec une machine virtuelle installée avec un environnement de développement.

Alors sinon, ce matin je reprends cette problématique de "comment développer en C++" et je décide de mettre à jour mon Visual Studio 2019 avec les features MFC et me voilà avec bien plus de possibilités :

Visual Studio 2019 Ajout des features MFC
Visual Studio 2019 Ajout des features MFC

J'ai un tas de choix à effectuer :

  • Type d'applications : on se rappelle MDI (Multiple Document Interface) choix de l'interface avec plutôt des boites de dialogues, un seul document, plusieurs documents
  • Propriétés du modèle de document : le type de document traité par l'application
  • Propriété de l'interface utilisateur : propriété des menus à rubans, des barres d'outils
  • Fonctionnalités avancées : on trouve par exemple Sockets Windows, Aperçu avant impression.
  • Classe générées : possibilité de modifier le nom des classes autre que CMFCApplication1App

On trouve par exemple la possibilité de choisir le style du projet :

Donc plus de doute, pour développer en C++ pas d'autres possibilités que les MFC ... Mais c'est un peu vieillot tout ça "Office 2007" ne date pas d'hier.

Du coup je vous propose de découvrir Qt/C++

Mais bon, allons un peu plus loin en instanciant quelques Templates, je choisie l'utilisation des MFC dans une bibliothèque statique et le thème Windows Native/Default :

Visual Studio 2019 - Application Desktop en C++
Visual Studio 2019 - Application Desktop en C++

C'est joli mais on remarque déjà un problème d'Encodage UTF8 ...

Parce que je suis joueur j'instancie une deuxième application avec un autre thème :

Visual Studio 2019 - Application Desktop en C++
Visual Studio 2019 - Application Desktop en C++

C'est bien vieux tout cela et je ne suis par sûr qu'il faille aller plus loin. C'est clair, le développement d'application modernes ne passe désormais plus que part .NET. Sinon on aurait au moins un concepteur graphique pour les pages .CPP alors que l'on en a un pour les Boites de Dialogues c'est curieux non ?

J'ai une petite technique à vous donner ici lorsque je me trouve face à tous ces choix pour les Template je fais des choix et j'instancie ces projets son le même ici en l’occurrence MFCApplication1 et je les compare. 

Voici deux choix MFC dans une lib statique et MFC dans une DLL partagée voici la différence :

MFC dans une librairies statique ou dans une librairie partagée
MFC dans une librairies statique ou dans une librairie partagée

On vient de voir très rapidement comment aujourd'hui développer une application Desktop en C++ avec Visual Studio 2019.

Si vous avez du code en C++ à faire tourner en mode Console, je vous conseille :

GitHub - mabyre/Console-CPlusPlus-StarterKit

Ou à la rigueur avec une Interface Graphique un peu plus "user friendly" :

GitHub - Mabyre/MFC-CplusPlus-StarterKit

Voilà de bons outils pour travailler votre C++.

Have fun!












lundi 4 mars 2019

Comment développer en C++ ?

Je cherche le meilleur moyen de développer en C++ car j'ai compris que les librairies graphiques comme DirectX ou plutôt Direct3D, OpenGL, VCL, FireMonkey et autres sont écrites en langage C++ et je cherche une bonne maitrise du temps réel avec mon application, quel choix faire pour développer en C++ ?

Et oui si vous faites du développement 3D C++ pour des gamers par exemple, vous serez amené à développer en Langage C++ alors j'ai moi même quelques expériences de ce langage mais aujourd'hui je suis perplexe devant les possibilités qui s'offrent à moi et je ne sais quelle option choisir alors faisons un tour rapide de toutes ces possibilités.

J'ai travaillé récemment avec Embarcadero dont j'ai fait une abondante critique. Il possède l'avantage de démarrer un développement rapidement bien plus qu'avec Visual Studio C++ MFC par exemple. Le scandale, c'est que Microsoft conserve MFC et n'a rien fait depuis donc si vous cherchez à instancier un nouveau projet avec Visual Studio vous allez tomber sur MFC ... Grrr pas bon, méchant les MFCs !

Qt/C++ est une bonne alternative, je n'y croyais pas mais c'est d'une prise en main rapide et les contrôles utilisateurs sont intelligents, ils permettent plein de choses rapidement, je vous le conseil.

Je lis cet article : Développez.com - Graphique

Le choix est large mais pas simple, la prise en main d'une librairie graphique c'est un investissement lourd. Moi je parlais des chaines de développement associée ici pas de chaîne mais alors comment cela se passe t-il ? Vous pouvez démarrer avec Eclipse.

Choix d'une application pour bien développer en C++

Que puis je faire avec Visual Studio ? Instancier un nouveau projet Windows Desktop - Assistant Windows Desktop :

Visual Studio un projet en Langage C++

Et Visual Studio me donne les choix suivants :

Visual Studio créer une application en C++

MFC and ATL

Je vous laisse avec la doc MSDN ... Et toutes ces vieilleries Microsoftiennes ...

What's New for Visual C++ in Visual Studio 2017

Si il y a encore du Nouveau en C++ sous Visual Studio 2017 ...

Microsoft - VCSamples - Visual Studio C++

On retrouve ATL CLR MFC plus d'autres exemples

Microsoft - Visual C++ Samples

On remonte encore plus haut dans les samples bien connus de Microsoft

Mais tout ceci ne nous aide pas beaucoup, je suis certain que nous sommes très très nombreux à regretter qu'il n'y ait pas d'alternative à MFC pour développer rapidement des application Desktop en C++. Depuis tout ce temps Microsoft aurait pu faire un effort.

Voilà, je tombe un peu là dans un trou à cause de Microsoft, je pensais trouver une bonne solution pour développer en C++ avec Visual Studio mais la solution moderne est sans doute ailleurs.

La solution moderne pour développer en C++ c'est très certainement Qt/C++.

Solution pour développer en C++

Aujourd'hui il existe une solution pour développer en C++ sans MFC, portable pour toutes les plateformes avec à la base une console et système de menu intelligent pour ajouter rapidement du code un test une fonctionnalité c'est le :

GitHub - Console C++ Starter Kit

Console C++ Starter Kit pour développer facilement en C++

Développez facilement en C++. Pas de MFC , pas de composants graphiques, juste avec une console et système de menus et un peu de code en langage C pour gérer la gestion de la mémoire et faire des Traces dans un display Trace le Reporter.

Venez nous rejoindre dans notre communauté Github.

jeudi 27 septembre 2018

Visual Studio C++ StarterKit avec MFC - Installation

Vous cherchez à développer avec Visual Studio en C++ et pourquoi pas ? On va voir ce que l'on peut faire avec cette plateforme et ses outils de développement. Comment utiliser Visual Studio pour développer en C++ ?

Installation des modules Visual Studio pour le C++

Avec Visual Studio 2017 en lançant l'installeur nous avons la possibilité d'installer trois modules :

Developpment Desktop en C++ avec Visual Studio
Développement Desktop en C++ avec Visual Studio
Mais nous avons la possibilité de développer pour les plateformes mobiles iOS et Android et Windows phone :


Développement mobile en C++ avec Visual Studio
Développement mobile en C++ avec Visual Studio
On voit également un module pour Linux.

Mon projet en C++ pour Desktop avec Visual Studio

J'instancie un projet de type Visual C++ pour créer une application avec Interface Graphique utilisateur qui s'exécute sous Windows.

Fichier->Nouveau->Projet->Autres langages->Visual C++->Application de bureau

Application de bureau Windows en C++
Application de bureau Windows en C++
Le projet est instancié :
Projet Visual Studio en C++
Je l'exécute :

Exécution du projet C++ avec Visual Studio
Une toute petite interface avec un tout petit menu.

Structure du projet Visual C++

Il faut aller voir dans les ressources pour trouver les objets graphiques, dans l'explorateur de solution je clique sur WindowsProject1.rc :


Visual C++ les ressources du projet
Visual C++ les ressources du projet
En double cliquant sur IDD_ABOUTBOX je retrouve la boite de dialogue About :



Boite de dialogue About
Boite de dialogue About
Tout ça est bien joli mais il n'y a pas les MFC. Je retourne dans l'installeur et je coche la case :

Installation des MFC pour Visual C++
Installation des MFC pour Visual C++
Et maintenant j'instancie un nouveau projet avec MFC (Microsoft Foundation Class) :

Application de bureau Windows avec MFC en C++
Application de bureau Windows avec MFC en C++
En cliquant sur OK je tombe sur un véritable Wizard de configuration de mon Application MFC :


Application de bureau avec MFC - Type d'application
SPA - MDI ?
SPA - MDI ?
Puis les choix s'enchainent ...

Choix pour le style du projet
Choix pour le style du projet

Et encore des choix :
Documents composés
Documents composés
Puis en cliquant sur le bouton suivant, on progresse dans le Wizard :


Propriétés du modèle de documents
Propriétés du modèle de documents
On atteint maintenant les choix concernant l'interface utilisateur :

Fonctionnalités de l'interface utilisateur
Ces choix sont importants, il est primordial de définir ces choix au départ car il sera ensuite bien difficile d'implémenter des barres de défilement si vous n'avez pas fait ce choix au départ.

On progresse ...


Fonctionnalités avancées
On progresse ...
Classes générées
On progresse

Classes de base
C'est incroyable tous les choix qu'il faut faire pour utiliser les MFS avec Visual C++.
On instancie le projet ...

Structure du projet Visual C++ MFC

C'est un peu plus compliqué ...

Visual Studio C++ Projet MFC
Visual Studio C++ Projet MFC
A l'exécution on obtient une application d'une complexité ... superbe !

Template d'application Visual C++ MFC
Template d'application Visual C++ MFC
Dont l'icône est :

Ajouter une légende

Pour la suite, je vous laisse avec un peu d'anglais

MFC - Quick Guide
Voici un Guide Tuto très complet sur le développement d'application de type MFC avec Visual C++

L'essentiel :
Votre application dérive de CWinApp : Class pour les Applications Windows

Developpez.com - Démarrer avec les MFC sous Visual C++
Egalement très bien pour démarrer, le problème c'est que c'est un PDF et pour le consulter il faut le télécharger. Le style est un peu ancien 2005 !

Accès aux ressources de l'application

Dans "Explorateur de solution" en cliquant sur le fichier .rc, la fenêtre d'affichage des ressources s'ouvre :
Ressrouces de l'applciation MFC C++
Affichage des ressources de l'application

Le code C++ au démarrage de l'application MFC

Dans l'Explorateur de solutions dans Fichiers sources : MainFrm.cpp (Main Frame) on atteint le code exécuté au démarrage de l'application :

Main Frame de l'application MFC C++
Main Frame de l'application MFC C++
En mettant un point d'arrêt dans la fonction OnCreate de CMainFrame :


Exécution du code de démarrage de l'application
Exécution du code de démarrage de l'application
Dans la pile d'appels on est appelé par wincore.cpp :

Appel de OnCreate par WindowProc de wincore.cpp
On accède au code de création de l'application MFC pour modifier ajouter ou supprimer des éléments graphiques de l'application.

Les MFC Microsoft Foundation Class

Les Microsoft Foundation Class ont donné des cauchemard à des générations entières de développeurs tellement abscons ! Il me faut prendre ici quelques notes en provenance du document :

ftp://ftp-developpez.com/farscape/tutoriels/demarrer-mfc-vc6.pdf

La notation hongroise, cela m'avait échappé en effet ...

C++ MFC notation hongroise

Ce PDF est véritablement le moyen de démarrer avec les MFC. C'est dommage que depuis le temps Microsoft n'ait pas proposé une alternative simple aux MFC. On ne peut pas parler de RAD (Rapid Application Development) avec les MFC c'est fastidieux long et pénible de développer avec ça.

Voilà c'est tout pour l'instant, c'était pour fixer rapidement les idées autour des applications Visual C++ avec MFC pouvoir modifier une ressource changer un peu le code au départ.

Conseil sur les MFC

Vous souhaitez développer une application Desktop pour Windows utilisez plutôt les WinForm C# c'est tellement plus agréable et efficace.

Have fun!

mercredi 21 juin 2017

On me parle de Embarcadero XE5 en Langage C++ C'est quoi cet environnement ?

J'ai pratiqué le développement RAD (Rapid Application Development) à l'époque avec le produit de Borland qui s'appelait Borland C++ Builder alors Embarcadero XE5 c'est quoi ?

D'ailleurs le net est devenu tellement mauvais, il y traîne de vieux messages poubelles que personne ne supprime et qui polluent. Ainsi en tapant "borland c++ builder 6" vous tomberez sur l'un d'entre eux ... datant de 2014 ! Il me semble bien que Borland C++ Builder n'existe plus ... dans mes souvenirs il était devenu Inprise.

Alors pour "Embarcadero xe5 c++" on me propose la chaîne de développement "en solde" ICI. C'est le premier résultat qui sort, comme c'est payant pour eux je clique ça leur apprendra !

En plus on ne trouve rien sur ce site !

Le deuxième lien semble plus prometteur :


Embarcadero C++ Builder

Compilateur C++ basé sur Clang ? pour windows 32 & 64 bits iOS et Android.

Puis on me propose d'en savoir plus sur la prise en charge du C++ moderne dans C++ Builder

J'y vais ... là on est dans le vif du sujet.

On y retrouve une description de la prise en charge de la norme C++11.

Concernant les contrôles utilisateurs :

MFC vous donne des cauchemars ? Vous trouvez wxWidgets trop basique ? VCL propose une trame incomparable qui encapsule les contrôles natifs Windows et surpasse tous les autres frameworks.

J'aime bien la phrase "MFC vous donne des cauchemars" car c'est le cas. MFC a donné des cauchemars à tous ceux qui ont eu à faire à elle. C'est le librairie des contrôles utilisateur de Microsoft, Microsoft Foundation Class.

VCL c'est pour Visual Component Library, tous les contrôles utilisateurs de la VCL dérivent de TObject. VCL vient du Delphi.

Notes diverses sur embarcadero :

La VCL est incompatible avec FireMonkey (FMX) une autre librairie de composants graphiques.

Concernant les Styles, il est possible de convertir un style pour VLC en style pour FMX.

VLC extends the RTL (Run Time Library) implementation of actions

Donc c'est quoi embarcadero ?

C'est un IDE donc la palette d'objets graphiques est soit du VLC (issu de Delphi) soit du FireMonkey ou les deux combinés.

Pour finir, vous pouvez démarrer  en vous enregistrant pour débuter votre période d'évaluation gratuite :

CX C++ Builder

Maintenant, on sait ce qu'est Embarcadero ! Concernant XE5 c'est une ancienne version de cet environnement.

Et pour la suite le Tuto c'est Ici.

Have fun !