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 :

utiliser une méthode en callback


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 87
    Points : 37
    Points
    37
    Par défaut utiliser une méthode en callback
    Salut,

    j'aimerais déclarer une méthode dans ma classe qui permettrais son appel par un thread. Je m'explique :

    MSDN indique que le paramétre 3 de CreateThread doit être de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DWORD WINAPI ThreadProc(
      LPVOID lpParameter
    );
    ma classe possède une méthode déclaré comme suit :

    DWORD WINAPI NRE3D_DxStreamObj::NotificationProc( LPVOID lpParameter )
    { ... }

    mais à la compilation, j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DxStreamObj.cpp(127): error C2664: 'CreateThread' : cannot convert parameter 3 from 'DWORD (LPVOID)' to 'LPTHREAD_START_ROUTINE'
    Pourtant ce même code issue du SDK directX (mais en version C donc pas encapsuler dans des classes/Méthodes fonctionne). J'ai l'impression que ça vient des convention d'appel (WINAPI -> #define WINAPI __stdcall). Mais je ne trouve pas où sa foire.

    une idée ?

  2. #2
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 887
    Points : 1 531
    Points
    1 531
    Par défaut
    Une méthode d'une classe ne peut pas être appelée comme une fonction CALLBACK, parce qu'elle possède des arguments cachés (le this) qui la rendent incompatible avec le prototype du CALLBACK.

    S'il existe une solution, c'est peut-être de la déclarer en static (j'ai pas essayé).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 87
    Points : 37
    Points
    37
    Par défaut
    bah pas vraiment ça me renvoit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NRE3D_DxStreamObj.cpp(146): error C2724: 'NRE3D_DxStreamObj::NotificationProc' : 'static' should not be used on member functions defined at file scope
    NRE3D_DxStreamObj.cpp(155): error C2597: illegal reference to non-static member 'NRE3D_DxStreamObj::g_hNotificationEvent'
    à moins que j'ai oublié qq chose ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    à moins que j'ai oublié qq chose
    je sais pas si ca nous aidera pas si tu nous fournissais le prototype de ta class
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2015, 12h59
  2. Utiliser une méthode d'une instance, dans une callback
    Par qdaemon_fr dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2014, 18h09
  3. [POO] utiliser une méthode présente dans une autre classe
    Par arnaudperfect dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2007, 14h23
  4. Réponses: 1
    Dernier message: 11/06/2007, 17h44
  5. Réponses: 1
    Dernier message: 11/04/2006, 20h43

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