|
Started by lionel.breil*NOSPAM*, Apr., 11 2006 4:25 PM - 5 replies |
| |
| | | |
|
| |
Posted on April, 11 2006 - 4:25 PM |
Bonjour a tous,
J'aimerai dans mon programme afficher une fenetre d'attente pendant un traitement qui peut etre un peu long : - ouvrir la fenetre d'attente - executer le traitement - fermer la fenetre d'attente
J'aimerai de plus pouvoir réutiliser cette fenetre, et donc ne mettre que le code minimal a l'intérieur. J'ai essayé de passer par les threads (un pour la fenetre, et le principal pour le traitement) mais la fenetre ne se ferme pas a la fin.
Voila le code utilisé :
// Thread principal eve est entier = Evénement("ouvre_fenetre", "*.*", "Patiente") // récupération des évenements ouvre et ferme, appelés depuis le thread fils eve2 est entier = Evénement("ferme_fenetre", "*.*", "Fermer") ThreadExécute("Attente", threadNormal, attente) // lancement du thread fils (fonction "attente") Multitâche(-1)
// traitement
ThreadEnvoieSignal("Attente") // envoi du signal de fermeture de la fenetre FinEvénement(eve) // libération des fonctions de gestion des évènements FinEvénement(eve2)
*****************************************
// Thread fils (fonction "attente") PostMessage(Handle(FenAppelante), "Patiente", 0, 0) // provoque l'ouverture de la fenetre (code en dessous) Multitâche(-10) ThreadAttendSignal(Infini) PostMessage(Handle(FenAppelante), "Fermer", 0, 0) // provoque la fermeture de la fenetre (code en dessous)
*****************************************
// Fonction ouvre_fenetre (Message, wParam, lParam) Ouvre(Patienter_transfert)
*****************************************
// Fonction ferme_fenetre(Message, wParam, lParam) Ferme(Patienter_transfert)
-------------------------------------------------
Si quelqu'un a une idée sur la question, je suis preneur Merci -- Lionel
mailto:lionel.breil*NOSPAM*@gmail.com (retirer *NOSPAM* pour m'écrire) |
| |
| |
| | | |
|
| | |
| |
Posted on April, 11 2006 - 5:14 PM |
Petit oubli : le probleme
Donc en fait par moments la fenetre ne s'ouvre meme pas (mais le traitement se passe correctement et l'application suit son cours) ou alors la fenetre s'ouvre, mais ne se ferme pas (le traitement a lieu, mais le programme est bloqué sur ma fenetre)
Merci a tous -- Lionel
mailto:lionel.breil*NOSPAM*@gmail.com (retirer *NOSPAM* pour m'écrire) |
| |
| |
| | | |
|
| | |
| |
Posted on April, 11 2006 - 5:36 PM |
Bonjour,
l'utilisation de multitache dans un thread est interdite (Voir limite des threads dans l'aide), retire le, ca devrait mieux fonctionner.
Cordialement,
Davy |
| |
| |
| | | |
|
| | |
| |
Posted on April, 11 2006 - 6:58 PM |
Salut J'ai le fenetre de menu dans lakel je lance des traitements dès l'ouverture alors dans le code de declaration global de cette fenetre avant toutes traitements OuvreFille(FEN_Attente)
et dan sle code d'initialisation aprés fin de toutes les traitements je mets Ferme(FEN_Attente)
FEN_Attente est une fenetre fille
bon dev
"Lionel" <lionel.breil*NOSPAM*@gmail.com> a écrit dans le message de news: MPG.1ea5c36b37773f889896b0@news.pcsoft.fr...
Bonjour a tous,
J'aimerai dans mon programme afficher une fenetre d'attente pendant un traitement qui peut etre un peu long : - ouvrir la fenetre d'attente - executer le traitement - fermer la fenetre d'attente
J'aimerai de plus pouvoir réutiliser cette fenetre, et donc ne mettre que le code minimal a l'intérieur. J'ai essayé de passer par les threads (un pour la fenetre, et le principal pour le traitement) mais la fenetre ne se ferme pas a la fin.
Voila le code utilisé :
// Thread principal eve est entier = Evénement("ouvre_fenetre", "*.*", "Patiente") // récupération des évenements ouvre et ferme, appelés depuis le thread fils eve2 est entier = Evénement("ferme_fenetre", "*.*", "Fermer") ThreadExécute("Attente", threadNormal, attente) // lancement du thread fils (fonction "attente") Multitâche(-1)
// traitement
ThreadEnvoieSignal("Attente") // envoi du signal de fermeture de la fenetre FinEvénement(eve) // libération des fonctions de gestion des évènements FinEvénement(eve2)
*****************************************
// Thread fils (fonction "attente") PostMessage(Handle(FenAppelante), "Patiente", 0, 0) // provoque l'ouverture de la fenetre (code en dessous) Multitâche(-10) ThreadAttendSignal(Infini) PostMessage(Handle(FenAppelante), "Fermer", 0, 0) // provoque la fermeture de la fenetre (code en dessous)
*****************************************
// Fonction ouvre_fenetre (Message, wParam, lParam) Ouvre(Patienter_transfert)
*****************************************
// Fonction ferme_fenetre(Message, wParam, lParam) Ferme(Patienter_transfert)
-------------------------------------------------
Si quelqu'un a une idée sur la question, je suis preneur Merci -- Lionel
mailto:lionel.breil*NOSPAM*@gmail.com (retirer *NOSPAM* pour m'écrire)
|
| |
| |
| | | |
|
| | |
| |
Posted on April, 12 2006 - 4:36 PM |
Dans son message, davy rapp racontait :
Bonjour,
l'utilisation de multitache dans un thread est interdite (Voir limite des threads dans l'aide), retire le, ca devrait mieux fonctionner.
Cordialement,
Davy
Meme sans "multitache" ca ne fonctionne pas (toujours les memes symptomes) -- Lionel
mailto:lionel.breil*NOSPAM*@gmail.com (retirer *NOSPAM* pour m'écrire) |
| |
| |
| | | |
|
| | |
| |
Posted on April, 12 2006 - 5:40 PM |
Dans son message, Nizar racontait :
Salut J'ai le fenetre de menu dans lakel je lance des traitements dès l'ouverture alors dans le code de declaration global de cette fenetre avant toutes traitements OuvreFille(FEN_Attente)
et dan sle code d'initialisation aprés fin de toutes les traitements je mets Ferme(FEN_Attente)
FEN_Attente est une fenetre fille
bon dev
Nickel ca marche comme ca !! Moi qui avais toujours cru que ouvreFille était uniquement pour les fenetres MDI, ben jm'étais trompé
Encore merci !!
-- Lionel
mailto:lionel.breil*NOSPAM*@gmail.com (retirer *NOSPAM* pour m'écrire) |
| |
| |
| | | |
|
| | | | |
| | |
|