Bon en fait je te poste la version complète sinon tu vas peut-être tourner en bourrique :
Le pb c'est que si tu es dans un menu, les évènements souris sont captés par la popup.
Donc pas moyen de mettre une capture d'évènement sur les boutons même si on sait quel item du menu a été choisi.
Eventuellement on pourrait traiter cela dans la partie Event_Menu du prog principal, mais c'est mieux de le placer dans le callback.
Dans ce cas, il faut seulement identifier l'état de réponse du popup, qui passe à 0, -65536 quand on relache le bouton sur un item !
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.81
;
; Explication du programme :
; Ajouter des éléments dans le SystemMenu
Global MaValeur.l, DrapeauGagne.l
Procedure WinCallback(WindowID, Message, wParam, lParam)
Result.l = #PB_ProcessPureBasicEvents
Select Message
Case #WM_MENUSELECT
Debug "sélection d'un élément " + Str(wParam & $0000FFFF) + " " + Str(wParam & $FFFF0000)
ItemSelectionne = wParam & $0000FFFF
If ItemSelectionne = MaValeur
DrapeauGagne = #TRUE
; Il ne reste plus qu'à attendre que l'utilisateur relache le bouton gauche par exemple #WM_LBUTTONUP
EndIf
If DrapeauGagne And ItemSelectionne = 0 And wParam & $FFFF0000 = -65536
DrapeauGagne = #FALSE
Debug "Gagné, si c'est ça c'est six et sept et un"
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
; Création de la fenêtre et dela GadgetList
MaValeur = 671
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0
End
EndIf
SetWindowCallback(@WinCallback())
Menu = GetSystemMenu_(WindowID(), 0)
Debug AppendMenu_(Menu, #MF_STRING, MaValeur, "Test")
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventMenu
Select EventMenuID() ; menu et barre d'outils
EndSelect
EndIf
Until Event = #PB_EventCloseWindow
End
Enfin tout simple quoi !
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.