Solidus Posté(e) le 29 mars 2005 Partager Posté(e) le 29 mars 2005 Salut, je programme en c++ et je voudrai créer 2 threads pour exécuter 2 choses séparement et je souhaiterai que un thread s'exécute au moment d'un évènement comme par exemple si je clique sur un bouton en utilisant MFC. Mais je ne sais pas comment mis prendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 30 mars 2005 Partager Posté(e) le 30 mars 2005 Si tu te sers des MFC, tu peux appeler la fonction AfxBeginThread(), avec : - en premier parametre l'adresse de ta fonction que tu veux executer en thread - en deuxieme parametre l'adresse du parametre eventuel que tu passes a cette fonction les autres parametres de AfxBeginThread sont optionnels. UINT MyThreadProc( LPVOID pParam ) { //Tu dois caster ton objet pour l'utiliser correctement CMyObject* pObject = (CMyObject*)pParam; if (pObject == NULL || !pObject->IsKindOf(RUNTIME_CLASS(CMyObject))) return 1; // l'objet n'est pas valide //Ensuite tu utilises tes parametres comme tu veux pour faire ton traitement ... return 0; } dans ton programme principal (ou dans une autre fonction telle que le callback sur un clic de bouton) : pNewObject = new CMyObject; //Tu crees ton thread : AfxBeginThread(MyThreadProc, pNewObject); Recherche sur Google avec "AfxBeginThread" pour des exemples et plus de details sur les fonctions de thread avec les MFC. Lien vers le commentaire Partager sur d’autres sites More sharing options...
easyzik Posté(e) le 31 mars 2005 Partager Posté(e) le 31 mars 2005 Tu peux aussi te renseigner sur le fork() Lien vers le commentaire Partager sur d’autres sites More sharing options...
Solidus Posté(e) le 3 avril 2005 Auteur Partager Posté(e) le 3 avril 2005 Merci Irgoff pour le AfxBeginThread() et l'ami google à fait le reste Et j'ai même trouver le moyen de passer au thread directment des paramètres extérieur au thread //Déclaration dans le .h du thread et de la structure UINT ThreadFunc (LPVOID pParam); //Structure dans laquelle tu met ce que tu veut que ton thread utilise typedef struct tagTHREADPARMS { int nb; HWND hWnd;//id de l'écran } THREADPARMS; Puis dans la fonction de clic de la souris sur un bouton par exemple: THREADPARMS* ptp = new THREADPARMS; ptp->nb=nombr; ptp->hWnd = m_hWnd;//id de l'écran AfxBeginThread (ThreadFunc, ptp); Et enfin ton code du thread UINT ThreadFunc (LPVOID pParam) { THREADPARMS* ptp = (THREADPARMS*) pParam; HWND hWnd = ptp->hWnd; int nombr=ptp->nb; delete ptp; //traitement du thread .............. return 0; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 3 avril 2005 Partager Posté(e) le 3 avril 2005 et le Lien vers le commentaire Partager sur d’autres sites More sharing options...
Solidus Posté(e) le 4 avril 2005 Auteur Partager Posté(e) le 4 avril 2005 Désolé C'est réparé Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.