
Envoyé par
ram-0000
Un thread de travail (tes threads 1 et 2) sont probablement des thread de travail ou encore Working Thread ne doit pas modifier l'interface graphique.
Il doit :
- Envoyer un message spécifique à l'interface graphique WM_USER + x (à définir, c'est ton message utilisateur) avec des paramètres wParam et lParam qui permettent à l'interface graphique de savoir ce que veut le working thread. Pour cela, il faut que le working thread connaisse le handle HWND (et pas le CWnd *) de l'interface graphique. En général, c'est passé en paramètre lors de la création du thread.
- Ce message doit être envoyé par SendMessage ou PostMessage (SendMessage est bloquant et attend que le message soit traité par la l'interface graphique, PostMessage ne fait que poster et retourne immédiatement)
- L'interface graphique doit intercepter le message WM_USER + x dans le MESSAGE_MAP et faire le traitement en fonction des différents paramètres reçus (dans wParam et lParam)
Bonjour,
Je ne vois pas trop quoi faire du handle HWND. Je reprends mon code seulement aujourd'hui, ai cherché pas mal d'informations sur internet, mais n'ai rien trouvé de concret. La plupart des tutoriels se contentent de montrer comment définir son propre message, comment envoyer un message avec SendMessage() ou GetMessage(). Les exemples choisis ne nécessitent pas de passer des paramètres à la fonction de traitement du message, je n'ai donc pas récolté beaucoup d'informations.
J'ai mon propre message, la fonction associée, d'en-tête :
LRESULT NomFonction(WPARAM wParam, LPARAM lParam)
Maintenant, j'imagine que dans mon thread de travail je vais devoir envoyé des messages via :
SendMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
,
de façon à ce que ce handle me serve à quelque chose. Cependant, je ne vois pas du tout comment procéder, notamment par un message utilisateur, et encore moins ce qui doit être mis dans WPARAM et LPARAM. Je veux dire par là, quel(s) type(s) ? Je comptais n'envoyer que des entiers ou des chaînes de caractères (CString). Ensuite, comment identifier la "commande" dans la fonction de traitement du message. Par exemple, comment distinguer une demande de SetStep() d'une demande de StepIt() pour ma barre de progression. Enfin, comment créer et modifier ma barre de progression en utilisant le handle de ma fenêtre d'application ?
Désolé, mais j'ai vraiment pris du temps à chercher ça, sans trouver.
Merci par avance !
Partager