probleme de rafraichissement

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

probleme de rafraichissement

Message par bison56 »

bonjour,

j ai une fenetre principale qui est rafraichit par l'appel d'une procedure dans un callback.
lorsque que j'ouvre une autre fenetre a partir du menu, le rafraichissement s'effectue sur la 2eme fenetre et non pas sur la fenetre principale.
Comment rafraichir seulement ma fenetre principale meme si c'est la 2eme fenetre qui a le focus ?

merci
bison56
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Tu utilise bine ça?

Message par meganet »

Tu utilise bien le bonne hidentifiant de fenêtre?
Tu à pas attribuer par example WindowID=WindowID(0) et WindowID=WindowID(1) se qui fait que quand tu rafréchie WindowID ça réactualise la 2eme fenêtre et pas la première?
Si tu posterai un example de code, ça cerai mieu!
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Bienvenue, je n'ai pas compris de quelle manière tu t'y prends pour le rafraichissement... Sinon comment t'as entendu parler du pure ? ^^

Dri
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

voila un morceau du code...

OpenWindow(#Window_0, 350, 100, 406, 580, "fenetre principale")

...blablabla....

Procedure Affiche_Scores()
EnableWindow_(WindowID(#Window_0), 0)
OpenWindow(#Window_1, 533, 373, 282, 195, "fenetre secondaire")
..blablabla...
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EnableWindow_(WindowID(#Window_0), 1)
CloseWindow(#Window_1)
EndProcedure

Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
Select msg
Case #WM_PAINT : Rafraichir_Affichage_Window0()
EndSelect
ProcedureReturn Resultat
EndProcedure

Procedure Rafraichir_Affichage_Window0()
;reaffiche les gadget images
endprocedure
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Pour moi c'est bon je pence.

Message par meganet »

A première vue, ton code est bon. Mintenant, il faut voir peut-être la dernière procedure qui bug. Tu le compile avec quel version de PB 4.0 ou 3.94? Si c'est avec la 4.0, tu à essayer avec al 3.94? C'est peut-être un bug.
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

J'avais oublié.

Message par meganet »

J'avais oublié, tu à bien déclarer tes procedures, vue qu'elle ne son pas dans l'ordre?
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

le truc c'est que la procedure affiche_score() affiche egalement des gadget images sur la fenetre secondaire ce qui a pour consequence de lancer le rafraichissement dans la procedure callback qui affiche donc sur la fenetre secondaire ce qui devrait etre affiche sur la fenetre principale.

:?
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

oui oui, les procedures sont bien declarees
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Tu utilise quoi?

Message par meganet »

Tu utilise quel version pour le compiler?
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

j utilise la version 3.94
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je n'ai pas bien compris le problème mais peut être une réponse avec se programme !

Code : Tout sélectionner


Enumeration
  #Window_0
  #Window_1
  #Listview_0
  #Button_0
  #CheckBox_0
EndEnumeration
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 423, 159, 400, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      ListViewGadget(#Listview_0, 40, 20, 170, 270)
      ButtonGadget(#Button_0, 250, 10, 90, 30, "Ajout de ligne")
      CheckBoxGadget(#CheckBox_0, 250, 60, 110, 20, "Avec Régénération")
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat 
  Event = WaitWindowEvent() 
  WindowID = EventWindowID() 
  GadgetID = EventGadgetID() 
  EventType = EventType()
  If Event = #PB_EventGadget
    ClearGadgetItemList(#Listview_0)
    UpdateWindow_(WindowID(#Window_0))
    If GadgetID = #Button_0
     OpenWindow(#Window_1, 650, 300, 100, 100,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window (1)")
      For n = 1 To 20

        ;La ligne qui tue !!!! lol
        AddGadgetItem(#Listview_0,-1,"Ligne "+Str(n)) ; pour voir l'effacement de la liste plusieur appuis sur le bouton

        If GetGadgetState(#CheckBox_0) 
        
          ; Encore la ligne qui tue !!!! lol 
          res = UpdateWindow_(WindowID(#Window_0))

          EndIf
        Delay(30)
      Next
      CloseWindow(#Window_1) 
  EndIf
  EndIf
Until Event = #PB_Event_CloseWindow 
End
Denis

Bonne Jounée à tous
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

Je pense qu'il me suffirait de connaitre la fonction qui me ramene l'id de la fenetre active, et comme ca, je ne lance le rafraichissement que si ma fenetre active est #Window_0

kelk1 connais la fonction ?

merci d'avance !
bison56
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

As tu essayé mon petit bout de code ?
Denis

Bonne Jounée à tous
bison56
Messages : 12
Inscription : mer. 08/mars/2006 8:27

Message par bison56 »

oui je l ai essaye, mais ca ne rafraichit pas. il reste la trace de la fenetre secondaire sur la fenetre principale lorsque je quitte la fenetre secondaire

sniff
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Tu ne pourrais pas nous donner ton code en totalité parce que je ne comprend vraiment pas le problème. Un code simplifié si celuici est trop gros !! mais qui ne bug pas au lancement !!
et pour ce qui est de ID de la fenetre le code c'est :

WindowID(#Window_0) dans ton cas !
Denis

Bonne Jounée à tous
Répondre