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

MFC Discussion :

Evenement entre une dll et un exe


Sujet :

MFC

  1. #1
    wogkiller
    Invité(e)
    Par défaut Evenement entre une dll et un exe
    Bonjour,

    j'ai un programme qui charge dynamiquement des dll, et qui communiquent avec elles en appelant des méthodes dans le sens exe->dll, et qui normalement doit recevoir des evenements dans le sens dll->exe. Le problème c'est que je ne reçois jamais les evenements sur mon programme principal, un explication?

    pour le code, je fait dans mes dll :
    Code header : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    __eventbool eventRequete(char *expediteur, char *message);
    __eventbool eventReponse(char *destinataire, char *reponse);
    __eventbool eventEnvoyer(char *expediteur, char *message);
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    __raise this->eventEnvoyer(nom.GetBuffer(),message.GetBuffer());
    // ... pareil pour les autres

    et dans mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    __hook(&PlugIn::eventRequete,p,&Gestionnaire::requete);
    __hook(&PlugIn::eventReponse,p,&Gestionnaire::reponse);
    __hook(&PlugIn::eventEnvoyer,p,&Gestionnaire::envoyer);
    avec les méthodes correspondantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool Gestionnaire::requete(char *expediteur, char *message)
    bool Gestionnaire::reponse(char *destinataire, char *reponse)
    bool Gestionnaire::envoyer(char *expediteur, char *message)
    Dernière modification par Spout ; 15/09/2008 à 13h45. Motif: Ajout des balises de code

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    C'est du Compiler COM Support pour les événements COM, ça, non?

    Je ne peux pas trop te dire, je n'ai jamais bossé avec...
    • p, c'est bien le pointeur vers ton objet plug-in ?
    • Les types des chaînes ne devraient-ils pas plutôt être const char * (histoire d'éviter les GetBuffer()), ou mieux, BSTR ?
    • Le __hook, il a bien lieu avant les __raise ? (oui, c'est une question idiote)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Ah, apparemment, je me suis trompé, c'est bien du support par le compilateur, mais pour des événements non-COM. Et c'est déprécié.

    As-tu pensé à mettre les attributs event_source et event_receiver sur tes classes ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    wogkiller
    Invité(e)
    Par défaut
    oui médinoc, les event-source et tout y sont, de m^me pour le raise et hook, ils sont dans le bon ordre, et le pointeur p est bien le pointeur vers l'objet plugin.
    Donc, tu aurais d'autres idées? Que moi je sèche, je trouve pas d'ou peut venir le problème :'(

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    WogKiller tu ne peux pas faire des dll ATL-COM plutot ? Ce serait vraiment plus souple car avec des dll ATL tu peux faire ce que l'on appelle des fires dans la technologie COM.
    Sinon tout bêtement avec SendMessage , PostMessage ?

  6. #6
    wogkiller
    Invité(e)
    Par défaut
    merci pour le conseil, j'ai essayé avec sendmessage et ça fonctionne correctement, même si ça me fait rajouter du code à un endroit que je voulais pas.
    Enfin, ça fonctionne, c'est l'essentiel! Merci Mat.M

Discussions similaires

  1. Creer un evenement dans une Dll
    Par cpofm dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2008, 15h34
  2. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/11/2005, 12h10
  3. Intégrer une dll dans un EXE
    Par Akim13 dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 02h11
  4. Inclusion d'une DLL dans un exe?
    Par luareon22 dans le forum MFC
    Réponses: 10
    Dernier message: 29/08/2005, 12h08
  5. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00

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