Page 1 sur 1

Mouse over menu

Publié : dim. 15/févr./2004 3:21
par nico
Des postes existent à ce sujet, mais soit ils sont incomplets ou alors ils utilisent une méthode complexe.

En résumé, c'est la simple utilisation d'un message:WM_MENUSELECT

Exemple avec menu et popup:

Code : Tout sélectionner

Global HdleMenu.l,hdlePopupMenu.l

Procedure ProcCallbackMain(WindowID, Message, wParam, lParam) 
  Resultat = #PB_ProcessPureBasicEvents 
  Select Message
    Case #WM_MENUSELECT
      lo = (wParam & $FFFF)
      handleMenu=GetSubMenu_(HdleMenu,0)
       Select lParam
        Case handleMenu
          Select lo 
            Case 1
              StatusBarText(0, 0, "Ouvrir")
            Case 2
              StatusBarText(0, 0, "Enregistrer")
            Case 3
              StatusBarText(0, 0, "Enregistrer sous ...")  
          EndSelect
          
        Case hdlePopupMenu         
          Select lo 
            Case 1
              StatusBarText(0, 0, "Couper")
            Case 2
              StatusBarText(0, 0, "Copier")
            Case 3
              StatusBarText(0, 0, "Coller") 
          EndSelect
          
        Default
              StatusBarText(0, 0, "")   
  EndSelect      

      
  EndSelect      
  
  ProcedureReturn Resultat 
EndProcedure 

If OpenWindow(0, 100, 200, 300, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
  WindowMain=WindowID()
  HdleMenu.l=CreateMenu(0, WindowID())
  ;Debug HdleMenu
  If HdleMenu
    MenuTitle("Fichier")
    MenuItem( 1, "Ouvrir")
    MenuItem( 2, "Enregistrer")
    MenuItem( 3, "Enregistrer sous ...")
  EndIf
  
  hdlePopupMenu=CreatePopupMenu(1)
  If hdlePopupMenu
    MenuItem( 1, "Couper")
    MenuItem( 2, "Copier")
    MenuItem( 3, "Coller")
  EndIf
  
  If CreateStatusBar(0, WindowID())
    AddStatusBarField(300)
  EndIf
  
EndIf  
 
SetWindowCallback(@ProcCallbackMain()) 
  
Repeat
  EventID.l = WaitWindowEvent()
  Select EventID
    Case #WM_RBUTTONUP
      DisplayPopupMenu(1, WindowID(0) )
      
  EndSelect   
Until EventID=#PB_Event_CloseWindow
End

Publié : dim. 15/févr./2004 10:14
par Oliv
8O je savais pas, merci :D

Publié : dim. 15/févr./2004 18:37
par Le Soldat Inconnu
Super intéressant 8)