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

VB 6 et antérieur Discussion :

Passage d'objets en Byref d'une appli VB6 à une dll C++


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Par défaut Passage d'objets en Byref d'une appli VB6 à une dll C++
    Bonjour,

    J'aurais besoin de quelques éclaircissements dans le cadre d'un projet. Je travaille actuellement sur un programme entièrement codé en VB6 qui gère des mises en forme de graphes. Seulement, la génération est très lente et le résultat pas toujours à la hauteur. Mon patron souhaiterait donc "extraire" les algorithmes de calcul du client VB6 pour en faire une *.dll codée en C++.

    Contraintes de base :
    - Le projet VB6 contient environ 500 classes qui chacune contiennent en moyenne 30-40 attributs et autant de méthodes (disons que le projet n'a pas été conçu par des pros de la POO) => Impossible d'envisager de recoder toute la partie "données" pour ne garder que la couche graphique dans VB6.
    - La DLL codée en C++ doit traiter des objets créés par le client VB6.

    Je pensais donc transmettre à la DLL un tableau d'objets VB6 (les objets à réorganiser) en ByRef afin que la DLL puisse agir dessus et modifier leurs attributs (x et y). Seulement il y a quelques questions qui me bloquent complètement et pour lesquelles je trouve des infos totalement contradictoires sur le net.

    1- Est-ce que je dois redéclarer dans ma DLL tous les objets VB utilisés? Par exemple, si j'appelle depuis ma DLL la méthode objettoto.methodetata() d'un objet instancié à partir de la classe classetoto en VB6, est-ce que ma DLL va exécuter la méthode VB6 ou est-ce que ma DLL va chercher une déclaration classetoto dans son propre code contenant une méthode methodetata()?

    2- Dans le cas où je dois redéclarer en C++ toutes mes classes VB6, est-ce que je dois déclarer l'intégralité des attributs et des méthodes de chaque classe utilisée ou est-ce que je peux me contenter des attributs et méthodes utilisés dans mon code C++.

    3- Dans le cas où je n'ai pas à refaire mes déclarations de classe dans ma DLL, est-ce que je dois faire quelque chose de particulier pour permettre l'utilisation des méthodes de mes classes VB6 dans mon code C++?

    D'avance merci pour la lecture et les éventuelles réponses et désolé pour le fait que mes questions sont peut-être peu claires.

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Illmess...

    VB6 est un coursier COM si tu l'as oublies .....et Com est un sacre pont entre vc++ et vb6....
    Refactorise tes class vb6 en class activex COM( projet dll activex) dans une lib.....
    Tes class seront accessibles en vb6 et en vc++ moyennant un tout peu plus de code ..oui qu'en vb6 mais pas beaucoup.....

    Idem pour ta future lib vc++ à creer comme activex COM (ATL COM pas les MFC car ils ne sont pas supportes) si tu veux les acceder en VB6....

    Apres à l'utilisation à toi de definir client et serveur mais cela n'as pas d'importance car la magie de COM est la suivante :

    -Scenario 1:une appli ILMESSS en VB6 reference un activex A non visuel(fameux tlb) cree en c++ .L'activex A lui meme reference un activex B cree en VB6......
    --Scenario 2: avec roles permutes cela fonctionne encore....

    Les class exposeront les membres public qu'ils voudront.......

    Les appels n'ont pas besoin des "declare toi" car les class et leurs methodes sub ,props et functions declares publics seront visibles des 2 cotes .....
    Les erreurs detectables à la compilation....oui...

    sur ce lien une introduction à la creation COM en c++:Introduction to COM - What It Is and How to Use It
    http://www.google.fr/url?sa=t&rct=j&...LtcliuhacwNpdQ

    ici un autre tuto : Beginner's Tutorial: Calling Visual Basic ActiveX DLLs from c++

    http://www.google.fr/url?sa=t&rct=j&q=beginner's%20tutorial%3A%20calling%20visual%20basic%20activex%20dlls%20from%20&source=web&cd=1&ved=0CFIQFjAA&url=http%3A%2F%2Fwww.codeproject.com%2FArticles%2F21%2FBeginner-s-Tutorial-Calling-Visual-Basic-ActiveX-D&ei=1TYCUIXlDdP24QT3p5CUCA&usg=AFQjCNEO83O1ObjwcgJdVF23zFIggZaMVw

    Pour appeler en sens inverse un composant Com cree en vc++ depuis vb6 les debutants savent le faire :
    -non visuel : componants ->add reference...
    -visuel :add componant tab....
    bon code...............

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. [Spring] D'une appli desktop à une appli web
    Par gifffftane dans le forum REST
    Réponses: 4
    Dernier message: 07/07/2009, 12h06
  3. D'une appli desktop à une appli web
    Par gifffftane dans le forum Spring Web
    Réponses: 0
    Dernier message: 05/06/2009, 09h13
  4. [SAP]ouvrir une transaction avec une appli VB6
    Par crouba dans le forum SAP
    Réponses: 9
    Dernier message: 22/08/2008, 13h40
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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