Page 1 sur 1

Sysanimate32 n'affiche rien ?

Publié : jeu. 30/déc./2004 0:51
par tme007
Bonjour, j'ai une fenêtre principale (#Windows_0) dans laquelle 'tourne' (si l'on peut dire) mon application, sous certaines conditions un processus de réplication démarre et pour celui-ci, je souhaite afficher dans une nouvelle fenêtre (#Window_1), l'animation d'un 'copier/coller' ainsi qu'une progressbar ... malheureusement, le texte et la progressbar s'affichent correctement, sauf l'animation ...

Code : Tout sélectionner

Librairie = OpenLibrary(0,"shell32.dll")
If OpenWindow(#Window_1,100,150,335,170,#PB_Window_WindowCentered,"Info ...")  
        If CreateGadgetList(WindowID()) 
          TextGadget(#Text_0,5,WindowHeight() - 50,129,24,"Réplication en cours ...") 
          ProgressBarGadget(#ProgressBar_0, 0, WindowHeight() - 27, WindowWidth(),27,0,CountGadgetItems(#ListIcon_0),#PB_ProgressBar_Smooth) 
          AniWin = CreateWindowEx_(0, "SysAnimate32", "", #ACS_AUTOPLAY | #ACS_CENTER | #ACS_TRANSPARENT | #WS_CHILD | #WS_VISIBLE | #WS_CLIPCHILDREN | #WS_CLIPSIBLINGS, 10, 0, 300, 90, WindowID(), 0, GetModuleHandle_(0), 0)  
          SendMessage_(AniWin, #ACM_OPEN, Librairie, 161)
          RedrawWindow_(AniWin, 0, 0, #RDW_INVALIDATE | #RDW_ERASE)
        EndIf
      EndIf  
CloseLibrary(0)
Je précise que durant le processus de réplication, la progressbar se met bien à jour au fur et à mesure de l'avancement ...
Pour l'animation, j'ai pensé à un problème de coordonnées et donc pour essayer j'ai pris les infos de la démonstration du Soldat Inconnu provenant de PureCode 1.1 ... et cela ne fonctionne toujours pas dans mon cas. Quelqu'un aurait-il une idée ?

Publié : jeu. 30/déc./2004 1:41
par nico
Tel que tu nous le montre, ton code ne présente pas de défaut si ce n'est celui de pouvoir l'essayer.

:evil:

Il y a un moment où il faut faire play pour que ça fonctionne.

Sysanimate32 n'affiche rien ?

Publié : jeu. 30/déc./2004 11:39
par tme007
Bizarrement, si je prends ce bout de code seul dans mon JapBe, que je définis les constantes #Window_1 à 0, #Text_0 à 1, #ProgressBar_0 à 2 et que je fixe manuellement la limite supérieure du progressbar ... Je compile et hop, l'animation est bien affichée !

C'est comme si le fait d'ouvrir une nouvelle fenêtre #Window_1 au dessus de ma #Window_0 ne supporte pas la création d'une 3ème fenêtre (AniWin, dans la #Window_1) pour l'affichage de l'animation ...

Bizarre, non ? Est-ce que quelqu'un aurait un exemple fonctionnel de ce genre que je pourrais consulter ?

Sysanimate32 n'affiche rien ?

Publié : jeu. 30/déc./2004 11:58
par tme007
J'ai trouvé !!!

J'ai déplacé mon instruction OpenLibrary(0,"shell32.dll") à l'intérieur du code de la Procedure/EndProcedure de réplication et là, magie, l'animation s'affiche nickel !

Publié : jeu. 30/déc./2004 12:56
par nico
Tes explications nous servent à rien!

Sysanimate32 n'affiche rien ?

Publié : ven. 31/déc./2004 10:30
par tme007
C'est une façon de voir les choses ... mon problème était dû au scope des variables, je n'avais pas déclaré ma variable 'Librairie' en tant que Global, et donc elle n'était pas accessible à l'intérieur de la procédure. Il faut avouer que Pure est le 1er langage que je connaisse qui ne prend pas d'office comme globale, une variable créée en dehors de tout code de procédure ... Mais bon, comme l'ont dit chez moi: 'Il faut être pris pour être appris !'