IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Programme C++ et interface graphique


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut Programme C++ et interface graphique
    Bonjour,

    Tout d'abord, je tiens à présenter à tous mes meilleurs vœux.

    Passons aux choses sérieuses

    J'ai développé un programme en C++ avec VS2010. Étant débutant, vous vous doutez bien que tout ne se passe pas comme prévu.

    En effet, mon programme est quasiment terminé et je m'aperçois que je dois ajouter une interface graphique pour l'utilisateur...!

    Du coup, j'ai cherché comment faire avec visual studio. Je suis tombé sur les Windows Form, c'est génial ce truc mais le hic, c'est qu'il faut créer un projet bien particulier pour ça (Application Windows Forms, il me semble).

    Mon projet "maître" doit être "Application console Win32". Ce n'est pas moi qui l'ai crée donc je ne garanti rien. D'ailleur si quelqu'un sait comment être sûr de l'info, je suis preneur.

    Bref, je n'arrive pas à "fusionner" mon projet "maître" et l'IHM développé avec les winforms. Je ne sais même pas si c'est possible d'ailleurs...

    Ensuite, j'ai lu que Qt pouvait faire l'affaire mais je n'ai visiblement pas les bibliothèques nécessaires sur ma machine.

    Pour finir, j'ai lu brièvement quelque chose sur les MFC mais j'en suis au stade "découverte" encore.

    Donc, l'idée est de conserver mon projet "maître" sans avoir à le modifier profondément et d'y intégrer une interface graphique avec le moyen le plus approprié.

    Je vous avoue que je suis complétement perdu dans tout ça. Si quelqu'un pouvait éclairer ma lanterne, ça serait top.

    D'avance, merci.

    Ioro

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Salut!

    Un porojet Winforms, c'est du C#, il n'est donc pas possible de l'interfacer directement avec un projet C++.
    Pour faire l'interfaçage tu as plusieurs possiblités:
    • (Solution moche #1) Changer ton projet ligne de commande en projet DLL. Exporter les fonctions voulues "à la C". Utiliser les fonctions d'import de DLL C intégrées à C#.
    • (Solution moche #2) Changer ton projet ligne de commande en projet DLL. Exporter les fonctions voulues "à la C++". Utiliser les fonctions d'import de DLL C intégrées à C#.
    • (Solution moins moche mais bien dure) Changer ton projet ligne de commande en projet DLL COM. Enregistrer ta DLL sur ton système (via regsvr32). Intégrer ton composant COM à ton projet Winform
    • (Solution "facile", que je choisirais dans ton cas) Virer le projet Winforms. Créer un projet MFC (Application Windows), et faire ton IHM en MFC, avec l'éditeur d'IHM de VisualStudio.


    Une autre solution consiste à créer un assembly à partir de code C++ managé (CLI, si je ne me trompe), et de l'intégrer en tant que dépendance à ton projet Winform.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse!

    Je vais opté pour la dernière solution, celle que tu préconises ^^

    Si j'ai bien compris, je dois quand même créer un nouveau projet?

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Je serais toi, je sauvegarderais mon code, puis je recréerais un nouveau projet MFC, (plus simple que de modifier un projet existant, pour un débutant), puis j'y intégrerais le code que j'ai déjà écrit.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Ok super!

    Je te tiens informer de l'avancement du job.

    Merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Un porojet Winforms, c'est du C#, il n'est donc pas possible de l'interfacer directement avec un projet C++.
    Non, un projet Winform peut utiliser n’importe quel langage .NET, y compris C++/CLI.
    Un projet C++/CLI, c'est un projet C++.

    Franchement, les MFC, c'est très old-school et encore plus casse-gueule que du Winform en C++/CLI.

    Vous ne pouvez pas intégrer une IHM dans un projet Console.
    Vous pouvez ajouter une console à des projets avec une IHM.

    Pourquoi le code maitre ne peut-il pas être transférer dans le projet WinForm ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Le projet "maître" est bien trop complexe à "migrer" pour utiliser des winforms.

    L'interface à réaliser est très basique, même si les MFC sont old-school, je pense que ça fera le job!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Petite question du jour :

    J'utilise dans mon IHM, un slider control qui va de 0 à 100.

    Mon problème est que quand je déplace le curseur, je ne vois pas la valeur sélectionnée...

    Savez-vous comment afficher la valeur ?

    D'avance, merci.

  9. #9
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Sinon, tu intègre une bibliothèque dédiée, comme la grosse Qt, wxwidget ou autre.

    Voire, selon le type d'interface à réaliser sfml+cegui ou sfml+sfgui
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Le projet "maître" est bien trop complexe à "migrer" pour utiliser des winforms.
    Le coût de migration est le même pour du C++/CLI + Winform et pour du C++/MFC ainsi que pour du C++/Qt etc....

    Mon problème est que quand je déplace le curseur, je ne vois pas la valeur sélectionnée...
    Illustration parfaite du "old-school" des MFC.

    http://forums.codeguru.com/showthrea...ent-in-runtime

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Old-school peut être mais ça fonctionne

    Merci pour le lien.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    L'interface est ok!

    Par contre, quand je met mon projet "maître" dans le projet MFC, ça ne fonctionne pas du tout.

    Déjà je suis embêté avec le stdafx mais peut-être qu'il faut virer les entêtes pré-compilés?

    J'ai pleins de messages d'erreur de ce style :

    "error C2664: 'DeleteFileW'*: impossible de convertir le paramètre 1 de 'const char *' en 'LPCWSTR'
    Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction"

    N'est-il pas possible d'inclure les 3/4 fichiers de mon interface dans mon projet plutôt?

    D'avance, merci.

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    DeleteFileW utilise des wchar_t plutot que des char.

    Essaie d'utiliser des L"chaines wchar" en guise d'argument.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Je n'avais pas ce type de problème initialement...

    Est-ce que ça vient du fait que j'ajoute du code issu d'un projet console?

    Et comment je fais pour utilise des "chaines wchar"?

  15. #15
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Avec le préfixe L devant la chaine littérale. Cela dit, je ne sais pas si c'est ton problème
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Dans la plupart des cas, ce n'est pas des chaînes littéral mais des choses du genre "Chemin.c_str()" ou des noms de variables...

  17. #17
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Passe ton projet MFC de Unicode à Multibyte.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Effectivement, ça fonctionne mieux. Mais quel est l'intérêt d'avoir un projet Unicode ou Multi-Byte?

    Autre question :
    J'ai des messages d'erreurs de ce type : error C2065: 'sMessage'*: identificateur non déclaré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #if defined(FR)
            string sTitre = "Erreur";
    	string sMessage = "Options incompatibles";
    #elif defined(UK)
    	string sTitre = "Error";
    	string sMessage = "Incompatible options";
    #endif
     
    fprintf(stderr,   "%s\n",sMessage.c_str());
    MessageBox(NULL,sMessage.c_str(),sTitre.c_str(),MB_ICONERROR);
    Je ne comprend pas pourquoi le compilateur ne reconnaît pas "sMessage". Idem pour "sTitre"...

  19. #19
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Si tu as moyen d'éviter de faire ton internationalisation de cette manière, ce serait mieux.
    Grosoft propose les StringTables, j'utilise une autre méthode: gettext.
    A toi de voir, mais la méthode que tu es en train de mettre en place est une des pires...


    Pour ton problème, ni FR ni UK ne doivent être définis. Prévois un langage par défaut, mais renseigne toi sur les string tables et sur gettext.

    Pour ta question, Unicode VS Multibyte: En Unicode, Windows va utiliser des wchar_t pour représenter des caractères, ce qui permet de stocker plus de caractères différents sur un wchar_t.
    Cependant ce n'est absolument pas portable, sachant que, par exemple, un wchar_t fait 2 octets sous Windows, et 8 (la dernière fois que j'ai testé) sous Linux.
    Pour mes projets, j'utilise des std::string, encodés en UTF-8 => du multibyte.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Relier le Programme Avec L'interface GRAPHIQUE
    Par horse dans le forum Débuter
    Réponses: 0
    Dernier message: 11/04/2010, 21h14
  2. Réponses: 39
    Dernier message: 22/04/2008, 08h30
  3. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  4. [VB6] Programme sans interface graphique
    Par yuan dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2006, 19h29
  5. [Kylix] Programme sans interface graphique
    Par pewpew2001 dans le forum EDI
    Réponses: 1
    Dernier message: 06/10/2005, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo