Page 1 sur 1
[résolu] detecter clic droit sur barre de titre d'1 fenetre
Publié : mer. 14/mai/2008 17:53
par Patrick88
salut
je ne parviens pas a detecter le clic droit sur la barre de titre d'une fenetre, si ça marchait, j'ouvrirait un popup menu personnalisé, hors il ne m'ouvre que le popup menu system...
Code : Tout sélectionner
OpenWindow(0,0,0,200,200,"essai popup menu",#PB_Window_SystemMenu)
CreatePopupMenu(0)
MenuItem(0,"Option")
Repeat
event=WaitWindowEvent()
If event = #WM_RBUTTONDOWN And WindowMouseY(0) < 0
DisplayPopupMenu(0,WindowID(0))
EndIf
Until event = #PB_Event_CloseWindow
End
une idée ?
pat
Publié : jeu. 15/mai/2008 9:29
par Ar-S
Salut,
C'est normal, seules les dimensions de ta fenetre sont prisent en compte. La barre de titre non. A mon avis il faudrait que tu récupères la dimension X et Y de ton ecran, que tu places ta fenetre en fonction de...
Ex : si Xecran=1024 et Yecran=768 alors Xtafenetre =800 et Ytafenetre=500
ensuite tu pourrais faire un
Code : Tout sélectionner
If event = #PB_MouseButton_Right And WindowMouseY(0) < Ytafenetre
Je n'ai pas le temps d'essayer un code complet mais c'est une idée je pense.
Après y'a surement des API pour ça mais là ça me dépasse

Publié : jeu. 15/mai/2008 9:53
par gnozal
If faut utiliser #WM_
NCRBUTTONDOWN au lieu de #WM_RBUTTONDOWN, car la barre de titre n'est pas dans la zone client [
NC = non client (area)] de la fenêtre.
Code : Tout sélectionner
;
; Custom context menu on title bar
;
Enumeration
#Window_0
EndEnumeration
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 448, 159, 315, 315, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
CreatePopupMenu(0)
MenuItem(0, "Option")
EndIf
EndProcedure
Procedure MyWindowCallback(WindowID, message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
;
Select message
Case #WM_NCLBUTTONDOWN
If wParam = #HTCAPTION
Debug "Click in title bar"
Result = 0
EndIf
Case #WM_NCRBUTTONDOWN
If wParam = #HTCAPTION Or wParam = #HTSYSMENU
Debug "RightClick in title bar or system menu button"
DisplayPopupMenu(0, WindowID)
Result = 0
EndIf
EndSelect
;
ProcedureReturn Result
EndProcedure
OpenWindow_Window_0()
SetWindowCallback(@MyWindowCallback())
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
Publié : jeu. 15/mai/2008 11:54
par Patrick88
nickel, merci, gnozal
pat
Publié : jeu. 15/mai/2008 15:08
par Ar-S
Ou ba me coucherai une fois de plus moins con ce soir

Publié : jeu. 15/mai/2008 16:43
par Neosis
Ar-S a écrit :Ou ba me coucherai une fois de plus moins con ce soir

Moi aussi je croie