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 :

Problème avec _beginthreadex


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par défaut Problème avec _beginthreadex
    J'ai une classe A qui possède les deux méthodes suivantes comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    void A::commencer()
    {
    int n=20;
    _beginthreadex(NULL,0,ThreadFunc,&n,0,NULL);
    }
     
     
    unsigned int __stdcall A::ThreadFunc(void* pParam)
    {
    	LPCSTR n = (LPCSTR) pParam ;
    	Sleep(2000);
    	MessageBox(n);
    	_endthreadex(0);
    return 0;
    }
    Mais en compilant,j'ai l'erreur suivante
    '_beginthreadex' : cannot convert parameter 3 from 'unsigned int (void *)' to 'unsigned int (__stdcall *)(void *)'

    Merci pour votre aide

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Je crois qu'on ne peut pas utiliser __beginthread fonction du runtime C avec une méthode de classe ( à vérifier )
    Soit utiliser CreateThread soit déclarer alors
    void ThreadFunc(void* pParam)

    Le prototype de __beginthread est
    unsigned long _beginthread( void( __cdecl *start_address )( void * ), unsigned stack_size, void *arglist );
    et s'attend à une adresse de type de déclaration C pas une méthode de classe

  3. #3
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Je crois qu'on ne peut pas utiliser __beginthread fonction du runtime C avec une méthode de classe ( à vérifier )
    Il semblerait que si!
    http://c.developpez.com/faq/vc/?page=ProcessThread

    As tu bien défini ta fonction ainsi dans ta classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     static unsigned int __stdcall ThreadFunc(void *pvParam);

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par défaut
    Oui il faut que la méthode soit statique.

  5. #5
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Un lien pour expliquer le pourquoi du "static":
    http://c.developpez.com/faq/cpp/?page=fonctions
    ->Aller à la question: Pourquoi ne peut-on pas passer une fonction membre là où on attend un pointeur de fonction ?

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

Discussions similaires

  1. [QThread] Problème avec atlbase.h '_beginthreadex'
    Par Mistic100 dans le forum Multithreading
    Réponses: 3
    Dernier message: 19/03/2013, 18h50
  2. Problème avec _beginthreadex
    Par likenoother dans le forum C++
    Réponses: 2
    Dernier message: 12/09/2006, 02h39
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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