none
Créer une interface graphique RRS feed

  • Question

  • Bonjour,
    C'est vraie il y a plusieurs outils de faire une interface graphique. Mais, je voulais utiliser le même outil (visual studio 2008) pour compléter mon programme c avec une interface graphique.
    De plus, dans cette interface je fais utiliser des fichiers textes qui sont sont générés par le programme  C.
    C'est donc de préférence de faire les deux en même projet.
    Je ne sais pas c'est on fait le programme C et l'interface dans le même projet ou bien les deux séparés ? et pourquoi ?

    Moi j'ai mon programme C seulement. l'interface graphique pas encore.

    le programme C est développé sous windows avec Visual studio 2008.

    J'ai trouvé beaucoup des types de projets sous visual studio, par exemple:
    ATL, CLR, Général, MFC, Smart Device, Win32

    il y a deux types d'application avec win 32:
    - application console Win32, projet win32

    Je ne comprends pas c'est quoi la différence entre une application console Win32 et projet win32 ?

    Pour créer mon projet C, voici les étapes de création de mon programme:
    - Nouveau projet ==> Win32
    - le choix le nom de projet
    - cliquer "suivant"
    - cocher option "projet vide"
    - cliquer "terminer"
    - cliquer bouton droite sur "fichier sources "
    - ajouter un nouvel élément
    - il y a plusieurs modèles alors j'ai choisi un "fichier c++"
    - puisque je fais de C alors je le nomme "main.c"
    j'ai ajouter des modules "*.h" etc....
    Le programme se compile bien et s'exécute correctement.

    Maintenant, c'est possible d'enrichir ce type de projet par une interface graphique ou bien il faut choisir un autre type de projet ou bien il faut faire autrement ?

    Merci.
    samedi 12 septembre 2009 05:50

Toutes les réponses

  • Votre question comme d'habitude est beaucoup trop vague, enfin les questions.

    Pour faire une interface graphique sous Windows, il faut déjà faire une analyse du besoin pour pouvoir choisir le ou les Framework susceptibles de pouvoir faire les choses nécessaire. Puis on choisit un outil qui permet d'utiliser ce Framework.

    Si vous ne savez pas si vous devez avoir un ou deux projet pour votre programme, c'est que vous avez commencez à coder sans vous posez les questions de base de l'analyse du problème à régler.

    Ce qui est important, c'est les données dans vos fichiers ou l'affichage de ces données (sous entendu, les données peuvent être régénérés) ?
    En fonction de réponses à ce type de question, vous savez s'il vous faut un programme qui fait tout, ou avoir un programme qui ne sert qu'à afficher les données.

    Win32 est l'API avec l'OS portable entre les différentes versions de Windows, de Win95/WinNT3.5 jusqu'à Windows7.
    Un projet Win32 est un projet pour construire un module compatible avec Win32, module voulant dire exécutable (avec un console ou avec une fenêtre) ou librairie statique ou encore librairie dynamique.
    Un projet console Win32 n'est qu'une spécialisation d'un projet Win32 pour la génération d'une application console.
    Si vous sélectionnez projetWin32 comme type de projet (et non projet console Win32), vous aurez dans le Wizard le choix, entre autre une application console ou une application "windows". Une application console est une application qui dès le démarrage contient un console ; une console sous Windows, c'est en générale une fenêtre avec un font noir, des caractères qui si affiche et la possibilité de taper des caractères sur une ligne que l'on appel prompt.
    Par défaut, une application Windows n'a pas besoin d'une console mais crée ses propres fenêtres bien plus évoluées.

    Donc on revient à votre problème d'analyse, avez-vous besoin d'une console ou d'une interface graphique plus complexe.
    Si vous avez besoin d'une interface graphique plus évolué qu'une console, il est possible de faire une interface graphique à partir d'une application console, mais c'est complexe et je pense que pour vous, vue vos méconnaissances, il serait largement plus simple de refaire un projet Win32 et de récupérer le code non dépendant de la présence de la console.

     


    Paul Bacelar, Ex - MVP VC++
    samedi 12 septembre 2009 16:08
    Modérateur
  • Bonjour,

    Je vous explique mon travail:
    J'ai mon programme C (application console) qui tourne bien. Au lieu d'afficher les résultats en console je vais utiliser une interface graphique.


    Je vais prendre mon programme .exe et je vais le mettre dans mon
    projet VB.

    En réalité il y a une relation entre mon programme C et le programme
    VB :
    lorsque je vais exécuter mon programme VB alors il va générer un
    fichier texte. ce fichier texte présente est utilisé par le programme
    C.
    maintenant je lance mon programme C .exe alors j'obtiens des résultats
    sauvegarder dans des fichiers textes.
    Donc je retourne au interface graphique je clique sur le bouton et je
    vois le contenu de fichier dans un liste.

    l'importance c'est dans le programme C mais au lieu de visualiser les
    résultats en console j'ai le recours au interface graphique.

    De plus je teste mon programme C sur des exemples (bases des données).
    ces exemples sont chargés à travers l'interface graphique. 

    Les étapes:

    - Je vais charger les noms des tables et les attributs de quelques tables à partir d'une interface graphique

    - lancer mon programme C .exe qui va être besoin d"un fichier enregistré et qui est généré à partir de cette interface.

    ce programme C .exe va générer automatiquement des fichiers textes enregistrés

    - retourner au interface graphique vous visualiser le contenu des fichiers textes en utilisant par exemple listebox en cliquant sur un bouton .....

     

    Que pensez vous ? et Que proposez vous ?

    Merci.

    dimanche 13 septembre 2009 09:06
  • Bonjour,

    Pour le projet win32.
    j'ai choisi un projet de type projet Win32.
    puis quels sont les paramètres d'application à choisir ?
    J'ai trouvé par défaut :
    - pour "type d'application" : il y a "Application Windows" est coché par défaut
    - pour "options supplémentaires" : il y a seulement "projet vide" n'est pas coché par défaut
    - pour "ajouter des fichiers d'entêtes courants pour" : il y a seulement " n'est pas coché par défaut

    Est ce que je laisse ces paramètre comme çà ou bien à modifier ?

    puis où je vais copier mon code C déjà fait (contenant déjà des modules) dans ce nouveau projet ?

    où je vais placer les contrôles dans ce  nouveau projet ?

    Comment se fait la compilation et l'exécution de ce nouveau projet ?

    Est je compile et j'exécute le programme C ou bien l'interface ?

    Merci.
    dimanche 13 septembre 2009 09:56
  • Ce qui est l'important pour moi c'est le programme C qui tourne bien.

    J'ai besoin de l'interface graphique pour préparer les données au programme C puis pour visualiser le résultat.

    Concernant l'interface VB, j'ai un ami qui a fait cette interface en VB 6.0 pour le même travail que moi. Or lorsque je l'ouvre cette interface avec visual studio 2008 alors il me demande de cliquer sur convertir. je clique sur convertir puis il me demande d'enregistrer dans un emplacement.
    ceci se passe bien.
    J'ouvre le nouveau projet converti alors je trouve ce que j'ai besoin les interfaces, le code bien fait.
    Mais lorsque je lance la compilation
    J'ai le même erreur qui ce répète dans tous les "forms" c'est à dire les fenêtres de travail.
    Cet erreur est:

    C:\20-04-08\20-04-08\ProjetData.NET\choix_attribut_select.vb(59) :
    error BC32022: 'Public Event Load(sender As Object, e As
    System.EventArgs)' est un événement. Il ne peut donc pas être appelé
    directement. Utilisez une instruction 'RaiseEvent' pour déclencher un événement.



    Comment on fait une propre conversion de projet VB 6 en vb.net ?

    comment utiliser RaiseEvent ?



    Le projet vb6 contient beaucoup types des fichiers par exemple:
    Visual Basic Form File, Fichier DCA, Visual Basic Designer Module,
    Visual Basic Module, Application, État Microsoft Visual FoxPro,
    Microsoft SourceSafe Status

    Comment on vas faire l'équivalent de ces types des fichiers dans le
    nouveau projet vb.net ?

    Il y a une configuration à faire lorsque on définit un nouveau projet vb.net


    J'ai remarqué que tous les erreurs sont liés à la même insctruction
    Code :
    load (
    nom de la form)
    
    c'est à dire lorsque on charge une autre Form à partir d'une Form actuelle .

    Que proposez vous ?
    Merci.
    dimanche 13 septembre 2009 16:14
  • Si vous avez déjà un projet VB6 dans votre solution, pourquoi ne pas vous en servir comme interface ?

    Vous restez en technologies VB6, et votre programme C, vous le convertissez en dll qui sera facilement utilisable dans le code VB6.

    Vous n'avez qu'à créer un projet de librairie dynamique Win32 (dll) et de transférer votre code dedans. Vous remplacerez votre "main" par un nom de fonction plus explicite qui sera exporté de la dll et utilisé par le code VB.
    Paul Bacelar, Ex - MVP VC++
    dimanche 13 septembre 2009 20:53
    Modérateur
  • Bonsoir,

    Je n'ai pas le VB6. J'ai installé déjà le visual studio 2008.
    Je ne sais pas pourquoi un projet vb6 ne pourra pas ouvert correctement dans un projet VB.net ?

    J'ai besoin de cette interface qui déjà réalisée en VB6 (les fenêtres , le code,...).
    Alors j'ai converti cette ce projet vb6 en projet.net
    La conversion est faite par un assistant sans aucun problème.

    Mais lors de la compilation j'ai eu le même message d'erreur dans tous les forms.

    Et j'ai remarqué que tous les erreurs sont liés à la même instruction.

    Load (nom de la form)


    Je suis bloqué et j'ai besoin de votre aide.

    Merci

    dimanche 13 septembre 2009 21:31
  • Je ne connais pas le coût d'une licence VB6, mais je pense qu'il est assez facile de trouver une machine avec.
    VB.NET net pas le successeur de VB6, c'est un nouveau langage .NET avec une syntaxe tiré de VB.
    Il y a quelques semaines, j'ai évalué, pour un projet de migration VB5 vers ASP.NET se chiffrant en millions d'euro, les outils de migrations.
    Je peux vous dire que pour sans servir, il vous faut un code initiale vraiment impeccable et toutes utilisations de composants nécessite une très bonne connaissance des composants de la plateforme initiale et ceux de la plateforme destination.
    Vu le nombre de composants qui semblent avoir été utilisé dans le projet VB6, il vous faudra bien plus de temps pour les maîtriser que pour dégoter un VB6.

    Si vos problème de migrations sont peu nombreux, il vous faudra tout de même apprivoisez .NET, et pour ces questions, ce n'est pas le bon forum cf. VB.NET.

    Même avec une interface en VB.NET, il serait bien plus logique de faire une librairie dynamique et non un exécutable de votre code C.
    Mais si vous avez assez progressé en .NET pour avoir une interface graphique en VB, il serait peut-être plus logique de tout faire en VB.NET.


    Paul Bacelar, Ex - MVP VC++
    dimanche 13 septembre 2009 22:30
    Modérateur
  • Vous dites:
    il serait largement plus simple de refaire un projet Win32 et de récupérer le code non dépendant de la présence de la console.


    Pour le projet win32.
    j'ai choisi un projet de type projet Win32.
    puis quels sont les paramètres d'application à choisir ?
    J'ai trouvé par défaut :
    - pour "type d'application" : il y a "Application Windows" est coché par défaut
    - pour "options supplémentaires" : il y a seulement "projet vide" n'est pas coché par défaut
    - pour "ajouter des fichiers d'entêtes courants pour" : il y a seulement " n'est pas coché par défaut

    Est ce que je laisse ces paramètre comme çà ou bien à modifier ?

    puis où je vais copier mon code C déjà fait (contenant déjà des modules) dans ce nouveau projet ?

    où je vais placer les contrôles dans ce  nouveau projet ?

    Comment se fait la compilation et l'exécution de ce nouveau projet ?

    Est je compile et j'exécute le programme C ou bien l'interface ?

    Merci.

     

    dimanche 13 septembre 2009 22:54
  • Faire une dll:
    "projet win32"
    "type d'application" -> "DLL"
    "options supplémentaires" -> "Export Symbols"
    "ajouter des fichiers d'entêtes courants pour" -> rien

    Avec ces setting, vous avez un squelette de projet pour créer une DLL.

    Vous avez un point d'entrée appelé lors du chargement et du déchargement de le dll : DllMain.
    Ne mettez pas de code dans DllMain sans avoir de très bonnes raisons.

    Il devrait avoir un exemple de fonction exporté dans le squelette du projet qui a été généré.

    Vous vous en servez comme exemple pour faire vos fonctions exportées.

    Le principe d'utilisation d'une dll dans VB6, c'est pas ma spécialité mais il y a des forum pour vous aidez.

    L'architecture est de faire le maximum dans VB6, puis, d'appeler depuis VB6 les fonctions exportées de la dll.

    "modules", c'est quoi dans le périmètre du langage C ? Si c'est des .h et des .c, il suffit de les ajouter au projet.

    Les contrôles (graphiques ?) resteront dans le projet VB6.

    Vous compilez une dll comme un exécutable.

    Après compilation de votre projet, vous disposez d'une dll. Dans le projet VB6, vous appelez les fonctions de cette dll.

    Pour exécuter votre code C, il faut lancer l'exécutable créé par le projet VB6.


    Paul Bacelar, Ex - MVP VC++
    lundi 14 septembre 2009 08:21
    Modérateur
  • Bonjour,

    Je vais essayer de faire une dll et suivre les étapes décrites au dessus.
    pas de problème si j'installe le VB6 sachant que j'ai le visual studio 2008 installé dans mon PC ?

    Une autre fois je vous présente mon besoin peut être vous avez une solution car j'ai une interface  prête qui  me répond à mon besoin:

    J'ai besoin de l'interface graphique:
    - pour préparer les données au programme C
     - puis pour visualiser le résultat (fichiers textes) venant du programme C.

    Concernant l'interface VB, j'ai un ami qui a fait cette interface en VB 6.0 pour le même travail que moi. Or lorsque je l'ouvre cette interface avec visual studio 2008 alors il me demande de cliquer sur convertir. je clique sur convertir puis il me demande d'enregistrer dans un emplacement.
    ceci se passe bien.
    J'ouvre le nouveau projet converti alors je trouve ce que j'ai besoin les interfaces, le code bien fait.
    Mais lorsque je lance la compilation
    J'ai le même erreur qui ce répète dans tous les "forms" c'est à dire les fenêtres de travail.
    Cet erreur est:

    C:\20-04-08\20-04-08\ProjetData.NET\choix_attribut_select.vb(59) :
    error BC32022: 'Public Event Load(sender As Object, e As
    System.EventArgs)' est un événement. Il ne peut donc pas être appelé
    directement. Utilisez une instruction 'RaiseEvent' pour déclencher un événement.

    Comment on fait une propre conversion de projet VB 6 en vb.net ?

    comment utiliser RaiseEvent ?

    S'il vous plait, Comment cet erreur va être corriger ?


    J'ai vu cette solution:
    Apparemment , il faut rajouter 'Event' : LoadEvent au lieu de Load
    comme décrit dans ce lien :

    http://msmvps.com/blogs/kenlin/archive/2007/01/31/convert-if-someevent-null-into-vb.aspx

    J'ai remplacé Load(nom de la Form) par LoadEvent(nom de la Form).
    Je compile et j'ai ce message d'erreur:

    error BC30451: Le nom 'LoadEvent' n'est pas déclaré.

    J'ai besoin de vos aides.


    Merci.

    lundi 14 septembre 2009 10:50
  • Installer VB6 sur une machine avec VS2008 ne pose aucun problème. Ma machine actuelle a VS2005, VS2008 et VB6.

    Il suffit, dans le code VB6, d'ajouter l'appel à la fonction de le dll écrite en C++ sur l'évènement du click bouton.

    Si le code C a besoin de données en entrer, faite les passer en paramètre de la fonction. Si le code VB a besoin de données en retour, ces données peuvent être contenues dans la valeur de retour de la fonction C.

    Il ne faut pas migrer votre projet VB6 vers VB.NET à moins de très bien connaître VB6 ET VB.NET.
    L'outil de migration de code de VS n'est pas terrible, et les autres ne sont pas vraiment meilleurs.

    Restez en VB6.


    Paul Bacelar, Ex - MVP VC++
    lundi 14 septembre 2009 11:27
    Modérateur
  • Je suis en VS2008. Je n'ai pas le VB6.

    Je voulais convertir le projet en VB6 en VB.NET.
    Il y a dans le menu fichier une option "convertir". Est ce que les développeurs de VS2008 n'ont pas tenu compte de ce problème de conversion comme mon mien ?

    Donc à quo sert cet option ?

    Pouvez vous me donner la meilleure solution de conversion ?

    Merci.
    lundi 14 septembre 2009 12:21
  •  en VB 6 pour Charger/Ouvrir un formulaire il faut faire l'instruction

    Load (nom du formulaire)


    Quel est l'équivalent en VB.net ?
    lundi 14 septembre 2009 14:23
  • Ne migrez pas votre projet VB6 vers VB.NET.
    Je vous ai dit que pour que la migration soit correcte il fallait un code impeccable, faire un "Load (nom du formulaire)", c'est tous l'inverse.
    Si vous voulez avoir rapidement une interface graphique venant de VB6, restez en VB6.
    Paul Bacelar, Ex - MVP VC++
    lundi 14 septembre 2009 14:34
    Modérateur