Page 2 sur 2
Publié : mer. 08/mars/2006 16:12
par bison56
Code : Tout sélectionner
Enumeration
#Window_0
#MenuBar_0
#MENU_1
#Window_1
EndEnumeration
LoadImage(0,"c:\image.bmp")
Declare Affiche_Image()
Declare Affiche_FenetreSecondaire()
Declare CallBack(Hnd,msg,wParam,lParam)
OpenWindow(#Window_0, 350, 100, 406, 580, #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Fenetre principale")
CreateGadgetList(WindowID(#Window_0))
CreateMenu(#MenuBar_0, WindowID())
MenuTitle("Menu")
MenuItem(#MENU_1, "Fenetre secondaire")
SetWindowCallback(@CallBack())
Affiche_Image()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventMenu
Select EventMenuID()
Case #MENU_1
Affiche_FenetreSecondaire()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
Procedure Affiche_Image()
ImageGadget(0, 0, 30, 440, 440, UseImage(0))
EndProcedure
Procedure Affiche_FenetreSecondaire()
EnableWindow_(WindowID(#Window_0), 0)
OpenWindow(#Window_1, 533, 373, 282, 195, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Meilleurs temps")
CreateGadgetList(WindowID(#Window_1))
TextGadget(#PB_Any, 10, 10, 50, 20, "TEST")
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
Affiche_Image()
EndSelect
ProcedureReturn Resultat
EndProcedure
il faut d'abord que tu cree un fichier image.bmp sur c:\.
ce bout de code rafraichit bien la fenetre principale lorsque l'image est alteree, mais je ne veux pas qu'il detecte d'alteration d'image lorsque j'ouvre ma fenetre secondaire.
merci pour ta patience
Publié : mer. 08/mars/2006 16:15
par brossden
Pour l'id de la fenetre active
Publié : mer. 08/mars/2006 16:27
par brossden
Ton code revu :
Code : Tout sélectionner
Enumeration
#Window_0
#MenuBar_0
#MENU_1
#Window_1
EndEnumeration
LoadImage(0,"c:\image.bmp")
Declare Affiche_Image()
Declare Affiche_FenetreSecondaire()
Declare CallBack(Hnd,msg,wParam,lParam)
OpenWindow(#Window_0, 350, 100, 406, 580, #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Fenetre principale")
CreateGadgetList(WindowID(#Window_0))
CreateMenu(#MenuBar_0, WindowID())
MenuTitle("Menu")
MenuItem(#MENU_1, "Fenetre secondaire")
SetWindowCallback(@CallBack())
;Procedure Affiche_Image0)
; ImageGadget(0, 0, 30, 440, 440, UseImage(0))
;EndProcedure
;Affiche_Image(#Window_0)
ImageGadget(0, 0, 30, 440, 440, UseImage(0))
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventMenu
Select EventMenuID()
Case #MENU_1
Affiche_FenetreSecondaire()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
Procedure Affiche_FenetreSecondaire()
EnableWindow_(WindowID(#Window_0), 0)
OpenWindow(#Window_1, 533, 373, 282, 195, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Meilleurs temps")
CreateGadgetList(WindowID(#Window_1))
TextGadget(#PB_Any, 10, 10, 50, 20, "TEST")
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
ImageGadget(1, 0, 30, 440, 440, UseImage(0))
EndSelect
ProcedureReturn Resultat
EndProcedure
Est ce ton attente ?
Publié : mer. 08/mars/2006 16:56
par bison56
il faut utiliser l'appel de la procedure affiche_image() dans la callback car elle contient d'autres commandes et elle est utilisee dans d'autres endroit du programme. pour ce qui est de ton code, l'image de la fenetre principale reste bien affichee mais elle s'affiche egalement sur la fenetre secondaire....
bison56
Publié : jeu. 09/mars/2006 7:37
par bison56
personne n'a de solution a mon probleme ??
merci d avance
Publié : jeu. 09/mars/2006 12:05
par bison56
une ame charitable pour m aider ?
Publié : jeu. 09/mars/2006 23:20
par bison56
voila,
quand je sors de la fenetre secondaire et que je veux reafficher mes imagegadget, leurs identifiants = 0.... j ai donc mis un CreateGadgetList(windowid(#window_0)) au debut de la procedure affiche_image et ca fonctionne.
bon je ne vois pas pourkoi je suis oblige de faire ca...
merci a tous ceux qui m ont repondu !!
@+
bison56
Publié : ven. 10/mars/2006 14:17
par brossden
Je ne comprends pas grand chose à ton code, certaines syntaxe ne sont pas utilisées comme il se doit.
Tu utilises mal les "ImageGadget" qui doivent être créées chacune dans leur fenetre respective, ce n'est pas une régenération d'mage mais une création !
Si tu veux deux images distincts
Crée : c:\image0.bmp et c:\image1.bmp
Déclare chaque image dans chaque fenêtre
Régénère si tu veux mais windows fonctionne trés bien sans !
Code : Tout sélectionner
Enumeration
#Window_0
#MenuBar_0
#MENU_1
#Window_1
#Image_0
#Image_1
EndEnumeration
;si tu veux deux images différente il te faut en charger deux
LoadImage(#Image_0,"c:\image0.bmp")
LoadImage(#Image_1,"c:\image1.bmp")
Declare Affiche_Image()
Declare Affiche_FenetreSecondaire()
Declare CallBack(Hnd,msg,wParam,lParam)
OpenWindow(#Window_0, 350, 100, 406, 580, #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Fenetre principale")
CreateGadgetList(WindowID(#Window_0))
CreateMenu(#MenuBar_0, WindowID())
ImageGadget(#Image_0, 0, 30, 406, 580, UseImage(#Image_0))
MenuTitle("Menu")
MenuItem(#MENU_1, "Fenetre secondaire")
SetWindowCallback(@CallBack())
Procedure Affiche_Image()
;je ne vois pas pourquoi tu as besoin de rafraichir les fenetres sans cette procedure cela fonctionne trés bien
If IsWindow(#Window_1)
UpdateWindow_(WindowID(#Window_1))
Else
UpdateWindow_(WindowID(#Window_0))
EndIf
EndProcedure
Procedure Affiche_FenetreSecondaire()
EnableWindow_(WindowID(#Window_0), 0)
OpenWindow(#Window_1, 533, 373, 282, 195, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Meilleurs temps")
CreateGadgetList(WindowID(#Window_1))
ImageGadget(#Image_1, 0, 30, 282, 195, UseImage(#Image_1))
TextGadget(#PB_Any, 10, 10, 50, 20, "TEST")
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
Debug IsWindow(#Window_1)
Select msg
Case #WM_PAINT
Affiche_Image()
EndSelect
ProcedureReturn Resultat
EndProcedure
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventMenu
Affiche_Image()
Select EventMenuID()
Case #MENU_1
Affiche_FenetreSecondaire()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
Publié : ven. 10/mars/2006 14:21
par brossden
Bizon je t'ai envoyer un message personnel, consulte tes messages