PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Fenetre d'attente
Fenetre d'attente
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 :D

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é :D

Encore merci !!

--
Lionel

mailto:lionel.breil*NOSPAM*@gmail.com
(retirer *NOSPAM* pour m'écrire)