Mouse over menu

Partagez votre expérience de PureBasic avec les autres utilisateurs.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Mouse over menu

Message 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
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

8O je savais pas, merci :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Super intéressant 8)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre