Gif animés et DoEvents [Résolu]

cs_Obi_1 21 Messages postés samedi 28 mai 2005Date d'inscription 13 juin 2006 Dernière intervention - 8 août 2005 à 18:05 - Dernière réponse : cs_Obi_1 21 Messages postés samedi 28 mai 2005Date d'inscription 13 juin 2006 Dernière intervention
- 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!!!
Afficher la suite 

5 réponses

Meilleure réponse
cs_Obi_1 21 Messages postés samedi 28 mai 2005Date d'inscription 13 juin 2006 Dernière intervention - 11 août 2005 à 16:29
3
Merci
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!

Merci cs_Obi_1 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 8 août 2005 à 18:18
0
Merci
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)
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 8 août 2005 à 19:02
0
Merci
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/
cs_Obi_1 21 Messages postés samedi 28 mai 2005Date d'inscription 13 juin 2006 Dernière intervention - 9 août 2005 à 10:07
0
Merci
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?
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 9 août 2005 à 14:08
0
Merci
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/

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.