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 :

appel depuis un callback


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut appel depuis un callback
    Bonjour,

    en c++ VS2005

    j'ai un projet ActiveX, dans ce projet il y a une classe et une fonction de callback

    voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void WINAPI CallBackFromDriver(DWORD dwReason, LPARAM lParam, INT32 nStatus)
    (
       probe();
    )
     
    LONG CCR190Ctrl::probe(void)
    (
    ...
    )
    je voudrais appeler la fonction probe depuis la fonction CallBackFromDriver, le pb c'est que les 2 choses n'ont rien en commun et j'ai une erreur de compil, je ne sais pas comment le faire

    merci si quelqu'un peut m'aider

    Cordialement

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Peut-être faudrait-il mettre le message d'erreur.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    voici :


    Erreur 3 error C3861: 'probe'*: identificateur introuvable c:\ActiveX\CR190.test\CR190Ctrl.cpp 278

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Tu n'aurais pas oublié un #include ou un espace de nommage ?
    Quand tu double-cliques sur Probe() et que tu fais F12, que se passe-t-il ?

  5. #5
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    merci pour ton aide mais tu n'a pas compris mon pb, ou je me suis mal exprimé

    c'est dans le même projet (en fait dans le même fichier) j'ai une classe pour un ActiveX et une fonction, je veux appeler l'activex depuis ma fonction

    sachant que l'activex a été instancié par un programme client (style vb6)

    j'ai essayé ça mais j'ai l'erreur
    CCR190Ctrl::probe'*: appel non conforme d'une fonction membre non static

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void WINAPI CallBackFromDriver(DWORD dwReason, LPARAM lParam, INT32 nStatus)
    (
    		&CCR190Ctrl::probe();
    )

  6. #6
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,
    Ne faut-il pas déclarer probe avant CallBackFromDriver?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LONG CCR190Ctrl::probe(void);
    void WINAPI CallBackFromDriver(DWORD dwReason, LPARAM lParam, INT32 nStatus)
    (
       CCR190Ctrl::probe();
    )
     
    LONG CCR190Ctrl::probe(void)
    (
    ...
    )

  7. #7
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Citation Envoyé par bertry Voir le message
    Salut,
    Ne faut-il pas déclarer probe avant CallBackFromDriver?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LONG CCR190Ctrl::probe(void);
    void WINAPI CallBackFromDriver(DWORD dwReason, LPARAM lParam, INT32 nStatus)
    (
       CCR190Ctrl::probe();
    )
     
    LONG CCR190Ctrl::probe(void)
    (
    ...
    )
    j'ai essayé mais ça ne marche pas non plus

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    D'après un de tes messages d'erreur, probe est une fonction membre non statique, donc tu as besoin d'un objet pour l'appeler.

    On peut passer quelques arguments libres dans un callback (le lParam), et généralement on passera donc un pointeur sur l'objet en question à cet endroit (avec un cast pour récupérer le bon type au bon moment).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    D'après un de tes messages d'erreur, probe est une fonction membre non statique, donc tu as besoin d'un objet pour l'appeler.

    On peut passer quelques arguments libres dans un callback (le lParam), et généralement on passera donc un pointeur sur l'objet en question à cet endroit (avec un cast pour récupérer le bon type au bon moment).
    merci je vais regarder ce que je récupère dans le lparam, mais je ne maitrise pas l'appel du callback, il est déclenché par l'api du matériel

    sinon quand je passe probe en static j'arrive à compiler, c'est peut-être la solution à mon pb

    merci pour votre aide

  10. #10
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Pour compléter la réponse de Loïc, je te conseille la lecture de cette entrée de la F.A.Q. : Pourquoi ne peut-on pas passer une fonction membre là où on attend un pointeur de fonction ?

  11. #11
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    donc j'ai regardé ce que je pouvais faire

    - le lParam dans le callback n'est malheureusement pas une réf. à l'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void WINAPI CallBackFromDriver(DWORD dwReason, LPARAM lParam, INT32 nStatus)
    - si je fais appel à une fonction statique depuis le callback ça compile mais c'est assez limité, je ne peux utiliser que du static

    est-ce qu'il y a un moyen d'envoyer une réf. de l'objet dans une variable qui pourrait être récupérer par le callback, une variable 'globale' par exemple

    ou est-ce que je peux dans le constructeur stocker la réf. de l'objet dans une variable ?

  12. #12
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Et ce lparam est-il positionné à quelquechose, quoi que ce soit, qui permette de retrouver l'objet ?

    Parce que mettre une variable "globale" (qu'elle soit une vraie globale, un singleton, une variable statique, ou toute autre variante autour de la globale), c'est sale et source d'erreurs (si jamais tu as deux matériels installés, comment faire pour ne pas se mélanger les pinceaux ?).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  13. #13
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    non le lParam est un indicateur de l'état du matériel (état des poches)

    par contre il n'y aura qu'une seule machine connectée à la fois, c''est un lecteur de chèques

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel d'un objet depuis un callback
    Par vhoward99 dans le forum MFC
    Réponses: 2
    Dernier message: 06/09/2011, 21h11
  2. Réponses: 1
    Dernier message: 27/08/2009, 16h32
  3. Appel d'une callback depuis un autre module
    Par Bayard dans le forum Général Python
    Réponses: 6
    Dernier message: 08/06/2008, 17h47
  4. [Sqlplus ] Appel depuis script KSH
    Par kasiop dans le forum Oracle
    Réponses: 2
    Dernier message: 27/01/2006, 10h25
  5. [APPLET] beans dans applet appelé depuis une page HTML
    Par Néo-Tony dans le forum Applets
    Réponses: 1
    Dernier message: 04/01/2006, 14h54

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