Page 1 sur 1

Mettre un menu m'importe sur la fenêtre et pas en haut

Publié : mar. 10/août/2004 11:39
par Le Soldat Inconnu
voila un code qui permet de placer un menu n'importe ou sur le fenêtre

dans cet exemple, je l'ai mis en bas

Code : Tout sélectionner

#Window = 0


Procedure CreateMenuEx(ID.l, WindowID.l, Position.l)
  ; ID = Numéro du menu
  ; WindowID = fenêtre associé au menu
  ; Position = Position du menu sur la fenêtre
  ; si -1 : menu en bas de la fenêtre
  ; si x > 0 : menu décalé de x pixel du haut de la fenêtre

  x = WindowWidth()
  If Position = -1
    Position = WindowHeight() - MenuHeight()
  EndIf
  
  NewWindow = OpenWindow(#PB_Any, 0, Position, x, MenuHeight(), #PB_Window_BorderLess, "Menu")
  Resultat = CreateMenu(ID, WindowID(NewWindow))
  
  SetWindowLong_(WindowID(NewWindow), #GWL_STYLE, GetWindowLong_(WindowID(NewWindow), #GWL_STYLE) | #WS_CHILD | #WS_CLIPCHILDREN)
  SetParent_(WindowID(NewWindow), WindowID(WindowID))
  
  ProcedureReturn Resultat
EndProcedure

Procedure CloseMenuEx(WindowID)
  UseWindow(WindowID)
  UseGadgetList(WindowID(WindowID))
EndProcedure


OpenWindow(#Window, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #WS_CLIPCHILDREN, "Test")
; ne pas oublier de mettre la constante #WS_CLIPCHILDREN dans les paramètre de la fenêtre

If CreateMenuEx(0, #Window, -1)
  MenuTitle("Fichier")
  MenuItem(0, "Quitter")
  CloseMenuEx(#Window) ; On ferme le menu
EndIf

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventMenu
    Select EventMenuID() ; menu et barre d'outils
      Case 0
        Event = #PB_Event_CloseWindow
    EndSelect
  EndIf
  
Until Event = #PB_Event_CloseWindow

Publié : mar. 10/août/2004 19:46
par Flype
ca alors, j'avais jamais vu çà ... 8O

comment t'es venu l'idée ?
je suis pas sûr d'avoir à m'en servir mais why not

Publié : mar. 10/août/2004 20:10
par Le Soldat Inconnu
comment t'es venu l'idée ?
bof, comme ça, j'ai pensé que ça pourrait servir d'avoir un menu en bas d'une fenêtre
mais bien franchement, je n'en ai même pas l'utilité, c'est vraiment histoire de dire c'est possible au cas ou j'en aurai besoin :lol: