Rafraichir une fenêtre

Résolu
El Rabou Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 17 mai 2005 - 11 mai 2005 à 15:53
El Rabou Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 17 mai 2005 - 13 mai 2005 à 11:20
Bonjour a tous.
Voilà j'ai fait une appli MFC qui comprend une progress bar mise a jour avec StepIt( ) en suivant une boucle qui gère un envoi de données sur un port série.
La progress bar tourne bien mais si mon appli passe en arrière plan pendant le transfert elle est figée quand elle revient au premier, la fenêtre est marquée comme occupé (sablier windows) et ne répond plus, alors que la boucle tourne toujours correctement (l'envoi de mes données me le confirme).

je voudrais trouver un moyen de remettre ma progress bar a jour lorsque ma fenêtre est active. j'ai voulu le faire avec l'event WM_ACTIVATE en faisant un UpdateWindow( ) sur les messages WA_ACTIVE et WA_CLICKACTIVE mais ca ne change rien ma fenêtre est toujours gelée.

Si quelqu'un a une bonne idée je suis preneur je n'ai rien trouvé qui s'apparente à cela sur le forum.
Merci

C'est le manque de foi qui rend fous les hommes...

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 mai 2005 à 16:12
Ton pb vient surement d'une boucle de traitement très longue lors du traitement d'une commande. Pendant que tu fait ton traitement, tu ne traites pas les messages que le système t'envoi (demande de rafraîchissement). Pour y remédier :
- créer un thread pour effectuer le traitement
ou
- appeler régulièrement PeekMessage suivi de TranslateMessage et DispatchMessage.

La première solution est la mieux mais plus compliquée car nécessitre de gérer 2 threads et les confllits commencent. Dans ma source de splitter de fichier tu trouvera un exemple de traitement long fait dans un thread avec un progressbar et la possibilité de l'arrêtrer.
3
El Rabou Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 17 mai 2005
13 mai 2005 à 11:20
J'ai opté pour la solution avec PeekMessage( ) qui catch un WM_PAINT ca marche pas mal. En revanche je n'ai pas testé la méthode avec les threads.

Merci du coup de main

[font=Century Gothic]C'est le manque de foi qui rend fous les hommes...Gothic
0
Rejoignez-nous