probleme de rafraichissement
probleme de rafraichissement
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
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?
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!
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!
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
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.
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é.
J'avais oublié, tu à bien déclarer tes procedures, vue qu'elle ne son pas dans l'ordre?
Tu utilise quoi?
Tu utilise quel version pour le compiler?
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
Bonne Jounée à tous
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 !
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
Bonne Jounée à tous