Page 1 sur 2
probleme de rafraichissement
Publié : mer. 08/mars/2006 11:09
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
Tu utilise bine ça?
Publié : mer. 08/mars/2006 11:18
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!
Publié : mer. 08/mars/2006 11:19
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
Publié : mer. 08/mars/2006 11:28
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
Pour moi c'est bon je pence.
Publié : mer. 08/mars/2006 12:00
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.
J'avais oublié.
Publié : mer. 08/mars/2006 12:02
par meganet
J'avais oublié, tu à bien déclarer tes procedures, vue qu'elle ne son pas dans l'ordre?
Publié : mer. 08/mars/2006 12:06
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.

Publié : mer. 08/mars/2006 12:07
par bison56
oui oui, les procedures sont bien declarees
Tu utilise quoi?
Publié : mer. 08/mars/2006 12:34
par meganet
Tu utilise quel version pour le compiler?
Publié : mer. 08/mars/2006 12:37
par bison56
j utilise la version 3.94
Publié : mer. 08/mars/2006 14:55
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
Publié : mer. 08/mars/2006 15:29
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
Publié : mer. 08/mars/2006 15:40
par brossden
As tu essayé mon petit bout de code ?
Publié : mer. 08/mars/2006 15:45
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
Publié : mer. 08/mars/2006 15:52
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 !