Page 1 sur 1

Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 17:31
par falsam
J'ai installé la distribution Ubuntu sur mon pc et je commence à tester quelques codes. En suivant le tutoriel de Dobro j'ai pu, je l'espère, installer Pure Basic sous cet environnement.

Je rencontre un soucis sur les menu contextuels de mes exemples car il ne s'affiche pas.
Comme le montre le code, la touche droite de la souris est bien détectée mais le menu popup n’apparaît pas.

Code : Tout sélectionner

Procedure EventMouse()
  Protected wnd.i
  If GetActiveWindow()<>-1
    Wnd=WindowID(GetActiveWindow())
      Protected gdkWnd.l, x.l, y.l, mask.l,  *Window.GTKWindow =Wnd
      gdkWnd = *Window\bin\child\window
      gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
      
      If (mask & #GDK_BUTTON1_MASK)
        ProcedureReturn 1   
      ElseIf (mask & #GDK_BUTTON3_MASK)
       ProcedureReturn 2
      ElseIf (mask & #GDK_BUTTON2_MASK)
        ProcedureReturn 3
      EndIf 
    EndIf
EndProcedure

If OpenWindow(0, 200, 200, 220, 120, "Exemple de menu contextuel")
    If CreatePopupMenu(0)        
      MenuItem(1, "Couper")  
      MenuItem(2, "Copier")
      MenuItem(3, "Coller")
    EndIf
    
    Repeat
      EventMouse=EventMouse()
      
      Debug EventMouse()
      If EventMouse=2
        DisplayPopupMenu(0,WindowID(0)) 
      EndIf
           
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow
          End
      EndSelect
    ForEver
  EndIf

Re: Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 18:37
par Guimauve
Bonjour,

Je viens de tester ton code et chez moi (Ubuntu 10.10 x64) j'ai bien un PopUp Menu avec "Couper Copier Coller" qui s'affiche.

A+
Guimauve

Re: Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 18:47
par falsam
Ha M*** Mince :p

Soucis dans ma config Ubuntu peut être ! (Ubuntu 10.10 x86)
En tout cas merci d'avoir effectuer ce test.

Re: Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 18:50
par Guimauve
Re-Bonjour,

Je ne sais pas trop, l'exemple tiré de l'aide de PB ne fonctionne pas correctement. Alors je ne sais pas trop quoi dire !

J'ai pas vraiment le temps aujourd'hui de pousser l'investigation, il est possible que les commandes PopupMenu soient boguées.

A+
Guimauve

Re: Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 19:00
par Guimauve
Bon j'ai pas pu résister...

Dis moi si le code suivant affiche le PopupMenu lorsque tu clique sur le x pour fermer la fenêtre.

Code : Tout sélectionner

  If OpenWindow(0, 200, 200, 220, 120, "Exemple de menu contextuel")
    If CreatePopupMenu(0)        ; La création du menu contextuel commence...
     ; Vous pouvez utiliser toutes les commandes relatives au menu,
        MenuItem(1, "Ouvrir")    ; comme si c'était un menu normal...
        MenuItem(2, "Enregistrer")
        MenuItem(3, "Enregistrer sous")
        MenuItem(4, "Quitter")
        MenuBar()
        OpenSubMenu("Fic&hiers récents")
          MenuItem(5, "PureBasic.exe")
          MenuItem(6, "Test.txt")
        CloseSubMenu()
    EndIf
    Repeat
      Select WaitWindowEvent()            ; Examine quel type d'évènement est survenu sur la fenêtre
        Case 2           ; Le bouton droit de la souris a été clické =>
          DisplayPopupMenu(0,WindowID(0))  ; On affiche le menu contextuel.
          
        Case #PB_Event_Menu      ; Un élément du menu a été sélectionné
          Select EventMenu()     ; On recupère le numéro de cet élement...
            Case 1 : Debug "Menu : Ouvrir"
            Case 2 : Debug "Menu : Enregistrer"
            Case 3 : Debug "Menu : Enregistrer sous"
            Case 4 : Quitter = 1
            Case 5 : Debug "Menu : PureBasic.exe"
            Case 6 : Debug "Menu : Text.txt"
          EndSelect
        Case #PB_Event_CloseWindow
          Quitter = 1
      EndSelect
    Until Quitter = 1
  EndIf
A+
Guimauve

Re: Menu PopUp pas si popup que ça.

Publié : lun. 28/févr./2011 21:59
par falsam
Malheureusement je n'ai pas de menu contextuel.

Re: Menu PopUp pas si popup que ça.

Publié : mer. 27/nov./2013 15:44
par Crashdisk
Bonjour,
même si le topic n'est pas tout jeune, il se trouve que le sujet m'intéresse en ce moment. Ainsi, je me permet d'intervenir ici pour confirmer que le code de Guimauve ne fonctionne pas chez moi non plus. Du moins jusqu'à ce que je remplace ce petit point:

Code : Tout sélectionner

Case 2           ; Le bouton droit de la souris a été clické =>
par

Code : Tout sélectionner

Case #PB_Event_RightClick           ; Le bouton droit de la souris a été clické =>
Edit:
Une fois intégré à mon programme, j'ai du mal à afficher la popup. J'obtiens de meilleurs résultat avec #WM_RBUTTONDOWN sur Windows
La raison m'est encore obscure mais bon ...

En tout cas merci pour vos exemples