Threads 2, le retour!

cs_goondy Messages postés 95 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 7 janvier 2005 - 11 déc. 2004 à 22:10
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 12 déc. 2004 à 10:30
Bon, grace a vecchio56, j'ai pu claquer mon thread comme il fallait (cf http://cppfrance.com/forum.v2.aspx?ID=349494&nb=9).

J'explique le truc : j'ai une classe qui hérite d'un CDialog. Dans cette classe, un thread qui s'occupe de faire des choses pour que l'affichage se rafraichisse comme il faut.

THE problème : je veux que la fenetre de Dialog se ferme quand le thread se termine...

-> si je veux fermer la fenêtre à partir du thread, ca plante... et c'est normal car c'est le thread père qui a s'occupe de la fenêtre.

-> si j'attends la fin du thread fils pour provoquer la fermeture dans le thread père (WaitForSimpleObject), bah l'attente est bloquante et empeche le rafraichissement du CDialog... et en plus il attend sans fin ce c*n o_O'

Question : je fais comment moi? Je peux envoyer un signal à partir du thread fils vers le pater pour lui ordonner de femer la fenêtre... Si oui, comment (un poil de détails serait chouette ;))

Merci d'avance

--------------------------------
cd /usa/whitehouse
rm -rf *

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2004 à 22:46
Je sais pas si c'est très académique, mais moi j'envoie un message à la fenêtre concernée, juste avant le return du thread
SendMessage(hWnd, WM_THREADFINISHED, codeRet, 0);


Tu définis le message WM_THREADFINISHED par (WM_USER + 1) par exemple, pour être sur qu'il n'y a pas de confusion avec un autre message
0
cs_goondy Messages postés 95 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 7 janvier 2005
12 déc. 2004 à 07:04
Arf, ma classe hérite de CDialog, en MFC ... et du coup j'ai pas de fonction de callback pour capter les messages...

Ca m'énerve, je cherche sur le net pour éviter de faire le boulet, mais c tout du win32, niet en MFC.

Tu pourrais me dire :

1 - comment choper le hWnd de mon Cdialog pour envoyer le message
2 - comment définir une fonction de callback, ou si elle existe en mfc, elle ressemble à quoi.
3 - comment je capte le message
4 - WN_USER .. je chope ça ou?

Merci!

----------------------------------------
cd /usa/whitehouse
rm -rf *
0
cs_goondy Messages postés 95 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 7 janvier 2005
12 déc. 2004 à 08:41
C'est bon, tout est détaillé là : http://shrek.wccnet.edu/~chasselb/win293/ClassNotes/Threads.html

Très bon lien pour faire ça : en 5 minutes c'était fait.

@vecchio56 : j'ai lu qu'il fallait utiliser "AfxBeginThread" avec les MFC, et qu'il vallait mieux utiliser "PostMessage" pour ce cas. Merci pour tout mec! ;)

----------------------------------------------
cd /usa/whitehouse
rm -rf *
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 déc. 2004 à 10:30
Toujours PostMessage en pareil cas.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous