PopupMenu über WindowCallback abfragen?

Fragen und Bugreports zur PureBasic 4.0-Beta.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

PopupMenu über WindowCallback abfragen?

Beitrag von real »

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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

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.
Benutzeravatar
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 »

Und wenn Du das Kontextmenü nur einem Control und nicht dem ganzen Fenster zuordnen möchtest, mit #WM_CONTEXTMENÜ
Passendes Snippet findeste im CodeArchiv
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Gesperrt