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

Code : Tout sélectionner


ActWinId = GetActiveWindow_()

 

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