Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 Le Multi Threading et builder C++ Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
St3pH
Newbiiiie
Newbiiiie



Sexe: Sexe:Masculin
Messages: 2

MessagePosté le: Dim 12 Juin 2005 - 11:36 Répondre en citantRevenir en haut

Bonjour,
j'essaye actuellement de faire un peu de multitâche sous builder c++ mais un petit problème se pose à moi lorsque je veux faire appelle aux fonctions du thread suplémentaire.

Après avoir ajouter un thread (Fichier->nouveau->autre->Objet Thread builder créé un nouveau .h contenant la nouvelle classe :

Code:

class raqG : public TThread
{
  typedef struct tagTHREADNAME_INFO
  {
    DWORD dwType;     // doit être 0x1000
    LPCSTR szName;    // pointeur sur le nom (dans l'espace d'adresse de l'utilisateur)
    DWORD dwThreadID; // ID de thread (-1=thread de l'appelant)
    DWORD dwFlags;    // réservé pour une future utilisation, doit être zéro
  } THREADNAME_INFO;
private:
  void SetName();
protected:
        void __fastcall Execute();
public:
        __fastcall raqG(bool CreateSuspended);
};


+ un .cpp contenant :

Code:

void raqG::SetName()
{
        THREADNAME_INFO info;
        info.dwType = 0x1000;
        info.szName = "raqG";
        info.dwThreadID = -1;
        info.dwFlags = 0;

        __try
        {
                 RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&info );
        }
        __except (EXCEPTION_CONTINUE_EXECUTION)
        {
        }
}
//---------------------------------------------------------------------------
void __fastcall raqG::Execute()
{
          // Placez le code de votre thread ici
}


Mon problème vient de l'appelle de la méthode "Execute()" créée par builder, la seule façon que j'ai trouvée est : MonObjetThread->resume();

J'utilise ce multitâche pour un jeux de type "pong", je compte avoir un thread pour chaque raquette et un pour la balle.
J'utilise la méthode de la forme "OnKeyDown" pour faire bouger mes raquettes, mais lorsque je fais appelle à MonObjetThread->resume(); le code du Thread est executer qu'une fois, alors que si je met le même code directement dans ma fonction "OnKeyDown' cela marche comme ça devrait (tant qu'on appuye sur la touche ça execute). Le contenu est du code bateau : MaForm->MonObjet->top += 10;

Bref tout ça pour savoir comment appeler et executer un thread supplémentaire =)

Merci.
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
mastervanou
Accro à Web-IG
Accro à Web-IG


Post-BTS
Sexe: Sexe:Féminin
Messages: 162
Localisation: 95100

MessagePosté le: Dim 12 Juin 2005 - 11:55 Répondre en citantRevenir en haut

http://chgi.developpez.com/thread/

si ca peut t'aider...

_________________
Already Platinum---------->Step off bitch!
Image
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN Messenger
St3pH
Newbiiiie
Newbiiiie



Sexe: Sexe:Masculin
Messages: 2

MessagePosté le: Lun 13 Juin 2005 - 10:56 Répondre en citantRevenir en haut

J'avais déjà essayé ce tuto mais il ne répond pas à mes questions :
- Il n'explique pas comment faire un appel direct à ses propres fonctions depuis la forme (afin de pouvoir leur passer des paramètres sans avoir recourt à "Synchronize(MaFonction);"

- Si par exemple dans "FormKeyDown" on met un code du style :
"Fpong->Img1->Top += 1;"

cela n'equivaut pas à mettre dans "raqG::Execute()" (ou dans une autre fonction du thread) le même code car celui-ci sera executer qu'une fois et non pas tant que j'ai une touche enfoncée.

J'ai essayé quelque chose du genre dans mes fonctions du thread :

Code:
       
while(Form1->OnKeyPress) {
         Form1->Img1->Top += 1;
}


là le code s'execute et ne s'arrete plus =)

Voila, dsl pas facile d'être clair pour expliquer ce genre de chose .... et je passe mon oral Mercredi 15/06 o_O
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum