Il est MIDI 😉

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Il est MIDI 😉

Message par Stan_fr »

Je n'y arrive pas !

Ton code marche parfaitement, j'ai trouvé sur RsBasic un callback pour tester si on sort du menu :

Code : Tout sélectionner

EnableExplicit

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_UNINITMENUPOPUP
      Debug "Menü wurde geschlossen."
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateMenu(1, WindowID(0))
    MenuTitle("File")
    MenuItem(1, "New")
    MenuItem(2, "Open")
    MenuItem(3, "Save")
    MenuItem(4, "Close")
  EndIf
  
  SetWindowCallback(@WinCallback())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Mais je n'arrive pas à créer une fonction unique sans doute parce que vous n'utilisez pas les mêmes paramètres : toi lparam, lui umsg, donc je suis encore perdu.

J'ai essayé de changer de callback : quand tu détectes un clic sur le titre, je bascule sur son callback, mais ça ne marche pas non plus ?

Code : Tout sélectionner

EnableExplicit

Procedure MyCallBack(hwnd, msg, wparam, lparam)
  Protected result = #PB_ProcessPureBasicEvents
  If msg = #WM_INITMENUPOPUP
    Select lparam
      Case 0
        Debug "Click Menu fichier"
      Case 1
        Debug "Click A propos"
    EndSelect
  EndIf
  ProcedureReturn result
EndProcedure

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_UNINITMENUPOPUP
      Debug "Menü wurde geschlossen."
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 800, 600, "Exemple menu")
  SetWindowCallback(@MyCallBack())
  
  UsePNGImageDecoder()
  If CreateImageMenu(0, WindowID(0))
    MenuTitle("Fichier")
    MenuItem(1, "Ouvre"   +Chr(9)+"Ctrl+O", LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png"))
    MenuItem(2, "Enregistrer sous ..."   +Chr(9)+"Ctrl+S", LoadImage(1, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png"))
    MenuBar()
    MenuItem(3, "Quitter"  +Chr(9)+"Ctrl+Q")
    
    MenuTitle("A propos")
    MenuItem(4, "De moi")
    MenuItem(5, "Me soutenir")
  EndIf
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Debug "-Click item " + GetMenuItemText(0, EventMenu())
        SetWindowCallback(0 ,0)           ; change de callback
        SetWindowCallback(@WinCallback())        
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver 
EndIf
...
Répondre