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

Langages de programmation Discussion :

Caster une structure puis "décaster"


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut Caster une structure puis "décaster"
    Salut

    Voici le problème sur lequel je suis depuis une semaine environ :

    J'ai une structure que j'ai crée moi-même "STRUCTX" que je voudrais passer à un thread en la castant en LPVOID

    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
    18
    19
    20
    21
    22
    23
    24
    25
    struct STRUCTX
    {
        INT Var0,Var1;
        HWND hWnd;
        CHAR Msg[64+1];
        // Autres variables etc...
    }
    
    INT main()
    {
        STRUCTX Struct1={};
        Struct1.Var0=2;
        Struct1.Var1=5;
        // ...
        CreateThread(0,0,Thread,(LPVOID)Struct1,0,0);
        // ...
        // ...
    }
    
    DWORD WINAPI Thread(LPVOID Param)
    {
        STRUCTX Struct1=(STRUCTX)Param;
        // ...
    }
    D'avance merci

  2. #2
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Bonjour,

    Ce message serait plus à sa place dans la rubrique C, programmation windows, mais bon...

    Tu ne peux pas caster un void * (LPVOID) en STRUCTX. Tu ne peux que le caster en STRUCTX * et vis versa...

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    struct STRUCTX
    {
        INT Var0,Var1;
        HWND hWnd;
        CHAR Msg[64+1];
        // Autres variables etc...
    }
    
    INT main()
    {
        STRUCTX Struct1={};
        Struct1.Var0=2;
        Struct1.Var1=5;
        // tu passes l'adresse de Struct1 (du type STRUCTX*) en (void * ie LPVOID) 
        CreateThread(0,0,Thread,(void *)&Struct1,0,0);
        // ...
        // ...
    }
    
    DWORD WINAPI Thread(void* Param)
    {    
        //Struct1 est un pointeur sur un STRUCTX dont tu as passé l'adresse
        STRUCTX* Struct1=(void*)Param;
        // ...
    }
    Problème du même ordre lorsque l'on veut lancer un Thread sur une fonction membre d'une classe C++ (l'homologue de ta structure étant la classe)
    http://cpp.developpez.com/faq/cpp/?p...onction_membre


    PS : Les LPVOID, INT, CHAR, LPSTR, LPCSTR, etc... ont à mon sens un intérêt fort limité : Rendre les choses moins claires pour gagner quelques caractères et injecter des dépendances artificielles à certains compilateurs...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    Oui j'ai remarqué ça qu'après avoir posté :/

    Merci j'ai finalement réussi ce que je voulais faire. Mon projet peut enfin continuer

    Encore merci. Bye

Discussions similaires

  1. Caster une structure 32 bits en (void*)
    Par -Jchamp- dans le forum Réseau
    Réponses: 14
    Dernier message: 04/11/2007, 12h56

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