Gif animés et DoEvents

Résolu
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006 - 8 août 2005 à 18:05
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006 - 11 août 2005 à 16:29
Bonjour,

J'ai recherché de l'aide sur le forum sans trouver exactement ce que je cherchais...
Voilà les grandes lignes du problème: j'ai créé un formulaire d'attente dans une application VB6, qui contient un gif animé. Ce formulaire ne sert qu'à montrer à l'utilisateur que son PC n'a pas planté et que le programme n'a pas encore fini ses calculs. Le formulaire disparait lorsque le programme a fini de calculer et que l'attente est terminée.

J'ai utlisé un controle Internet Explorer (Scriplet) dans lequel j'ai inseré mon GIF (grace à une source que j'ai trouvé sur ce forum, d'ailleurs!). Seulement voilà: le GIF ne bouge pas! La seule solution qui a marché jusqu'à présent est d'inserer des "DoEvents" un peu partout dans le code...alors seulement le GIF s'anime. J'ai alors essayé avec un Timer dans le formulaire qui déclenche l'evenement DoEvents, mais ca ne marche pas...

Quelqu'un de plus expérimenté que moi aurait-il des idées??

Merci d'avance!!!

5 réponses

cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006
11 août 2005 à 16:29
merci Dark Sidious, je commence à comprendre...Je pensais que le timer était déclenché à intervalle régulier, et ce même si le programme était en train de faire autre chose.

Je croyais que le programme se déroulait comme ca:
(mes boucles de calcul)(Timer)(continue les boucles)(Timer)(continue les boucles)(....

En fait, tu me dis que le programme se déroule de la facon suivante:
(mes boucles de calcul...mes boucles de calcul...)(Evenement Timer)

C'est bien ca?? Pour faire simple, je pensais que les evenements Timer étaient déclenchés de facon asynchrone alors qu'ils sont synchrones. Il y a moyen de déclencher des événements de facon asynchrone?

Merci beaucoup de ton aide!
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
8 août 2005 à 18:18
Salut

Essaye





Autre solution ( gratos en plus ) qui marche à merveille et sans OCX.

Il existe une DLL qui s'appelle gif89.dll

1) la rechercher sur le net en utilisant http://www.filez.com' target='_blank'>http://www.filez.com

2) l'inclure dans ton projet ( ajouter composant )

3) et voilà !



(source google groups)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
8 août 2005 à 19:02
C'est tout simplement parce que ta boucle occupe tout le temps
processeur, et qu'il faut mettre des doevents à chaque tour de boucle
(ou moins si tu veux) pour que le prog puisse raffraîchir les contrôles.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006
9 août 2005 à 10:07
Merci nhervgault, mais j'aimerais si possible limiter l'utilisation des dll...Tu connaitrais une autre méthode?

Dark Sidious, qu'est-ce que tu entends par "ma boucle occupe tout le temps processeur"? Mon timer a un intervalle de 500 (en ms, ou du moins j'espere...), je pensais donc qu'un rafraichissement de 2 fois par seconde était suffisant pour faire les boucles de calcul et mettre à jour le gif du formulaire...Apparemment non, mais je ne comprends pas. L'evenement Timer1_Timer est bien appelé 1 fois par intervalle? ou bien je n'ai rien compris aux timers (ce qui est très possible...)
Est-ce que je dois donc abandonner le timer et remettre les DoEvents dans le code-même des calculs?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 août 2005 à 14:08
Et bien si tu ne mets pas de DoEvents dans ta boucle, les événements de
raffraîchisement ainsi que les autres événements ne sont pas déclenchés
pendant la boucle, mais après, du coup, ton timer n'est déclenché qu'à
la fin de la boucle, et ne sert plus à rien !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
Rejoignez-nous