Fenêtres

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Fenêtres

Message par Cagou-77 »

Comment attacher une fenêtre à une autre

ex: 1ère fenêtre x=10, y=10

ex: 2ème fenêtre x=10, y=10 le x, y correspond à la position de la
première fenêtre .

Merci pour vos réponses .
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

si jai bien compris tu veut que de fenetre soit coler et que mem si on bouge la premier ou on la redimensionne elle reste a coter
si c sa il sufit cree test deux fentre apre stu met dans la boucle

posx=position x window1,+largeur de la window
posy=position y window1
position window (window2,posx,posy)

ce ne sont pas les bon code mais c le principe
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

Cagou-77,

Ce code montre comment coller une fenêtre annexe à une fenêtre principale en gérant les évènements de changement de taille et de position de la fenêtre principale.

Pour la mise en oeuvre dans un projet réel, il faut prendre soin de gérer les changements de fenêtres dans la boucle d'évènement (UseWindow() et ActivateWindow()) si la fenêtre annexe est destinée à gérer des gadgets par exemple.

Code : Tout sélectionner

Enumeration
  #Window_Main
  #Window_Tool
EndEnumeration

Procedure Refresh_Tool_Window_Position()
  WindowX_Main = WindowX()
  WindowY_Main = WindowY()
  WindowWidth_Main = WindowWidth()
  WindowHeight_Main = WindowHeight()
  WindowWidth_Tool = 200
  WindowHeight_Tool = WindowHeight_Main
  WindowX_Tool = WindowX_Main + WindowWidth_Main + 8
  WindowY_Tool = WindowY_Main
  UseWindow(#Window_Tool)
  ResizeWindow(WindowWidth_Tool, WindowHeight_Tool)
  MoveWindow(WindowX_Tool, WindowY_Tool)
  UseWindow(#Window_Main)
  ActivateWindow()
EndProcedure

  WindowWidth_Main = 640
  WindowHeight_Main = 480
  WindowWidth_Tool = 200
  WindowHeight_Tool = WindowHeight_Main
  If OpenWindow(#Window_Main, 0, 0, WindowWidth_Main, WindowHeight_Main, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "MyWindow")
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
      If CreateGadgetList(WindowID(#Window_Main))
      EndIf
      WindowX_Main = WindowX()
      WindowY_Main = WindowY()
      WindowX_Tool = WindowX_Main + WindowWidth_Main + 8
      If OpenWindow(#Window_Tool, WindowX_Tool, WindowY_Main, WindowWidth_Tool, WindowHeight_Tool, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar, "Tool window")
      EndIf
      UseWindow(#Window_Main)
      ActivateWindow()
      Quit = #False
      Repeat
        Select WaitWindowEvent()
          Case #PB_Event_CloseWindow
            Quit = #True
          Case #PB_Event_Menu
            Select EventMenuID()
              Case #PB_Shortcut_Escape
                Quit = #True
            EndSelect
          Case #PB_Event_SizeWindow
            Refresh_Tool_Window_Position()
          Case #PB_Event_MoveWindow
            Refresh_Tool_Window_Position()
        EndSelect
      Until Quit
  EndIf
End
Slts
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Répondre