Fragen und Bugreports zur PureBasic 4.0-Beta.
real
Beiträge: 468 Registriert: 05.10.2004 14:43
Beitrag
von real » 09.04.2006 20:03
Hi,
wie kann ich in folgendem Code das PopupMenu abfragen? Ich möchte das aus verschiedenen Gründen gern per WindowCallback realisieren.
Code: Alles auswählen
Procedure HIWORD(Value)
ProcedureReturn (Value >> 16) & $FFFF
EndProcedure
Procedure LOWORD(Value)
ProcedureReturn Value & $FFFF
EndProcedure
Procedure HandleWindowEvent(windowid, msg, wparam, lparam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_RBUTTONDOWN
DisplayPopupMenu(0,WindowID(0))
EndSelect
ProcedureReturn result
EndProcedure
OpenWindow(0,0,0,100,100,"test",#PB_Window_ScreenCentered)
CreatePopupMenu(0)
MenuItem(0,"Über")
MenuBar()
MenuItem(1,"Ende")
SetWindowCallback(@HandleWindowEvent(),0)
Repeat
WindowEvent()
Delay(10)
ForEver
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 09.04.2006 20:59
Code: Alles auswählen
Procedure HandleWindowEvent(windowid, msg, wparam, lparam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_COMMAND
Select LOWORD(wparam)
Case 0 : DEBUG "Über"
Case 1 : DEBUG "Ende"
EndSelect
Case #WM_RBUTTONDOWN
DisplayPopupMenu(0,windowid)
EndSelect
ProcedureReturn result
EndProcedure
Wobei 0 oder 1 die ID ist, die du bei MenuItem angegeben hast.
ts-soft
Beiträge: 22292 Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43 CPU: AMD FX-6300 Six-Core Processor GraKa: GeForce GTX 750 Ti, 2 GB Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin
Beitrag
von ts-soft » 09.04.2006 21:04
Und wenn Du das Kontextmenü nur einem Control und nicht dem ganzen Fenster zuordnen möchtest, mit #WM_CONTEXTMENÜ
Passendes Snippet findeste im CodeArchiv