Aktuelle Zeit: 19.11.2019 15:49

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Prüfen ob ein Popupmenu angezeigt wird
BeitragVerfasst: 18.07.2019 13:03 
Offline

Registriert: 07.08.2012 15:58
Irgendwie finde ich hier keine Lösung. Ich erstelle dynamisch ein PopupMenu von einer XML und lege die Zeiger zu den XML-Einträgen in einer Liste ab um diese bei Klick nachher auszuwerten. Dafür habe ich einen Tastatur-Shortcut drangebunden um das Popup zu generieren und anzuzeigen.

Wenn jetzt das Popupmenü bereits angezeigt wird und man trotzdem nochmal den Tastenbefehl zum öffnen des Popups drückt stürzt meine Software halt ab, da das momentan angezeigte Popup noch nicht freigegeben wurde. Soweit so klar.

Zwar kann ich beim Anzeigen des Menüs eine "Bin-Da!"-Variable auf 1 setzen und nach Anklicken eines Eintrages diese auch wieder auf 0 setzen - aber was mach ich, wenn das Popup ohne Auswahl geschlossen wird durch einfaches danebenklicken. In dem Fall gibt es meines Wissens nach weder ein Event dafür noch eine Abfragefunktion, die prüft ob ein PopupMenü momentan angezeigt wird oder nicht.

Scheiße - irgendwas überseh ich da oder? Ich kann mir schon denken, dass es irgendwie mit API und Windowfunktionen gehen kann. Sprich das Top-Window handle abfragen oder so. Aber irgendwie gefällt mir das nicht.

IsMenu() hilft ja auch nicht, da es ja nach wie vor existiert und nur nicht angezeigt wird. Man, so eine IsPopupDisplayed(PopupID) Funktion würde PB gerade echt gut stehen :)

_________________
Purebasic & MIDI - Das taugt!!
Wem meine Musik gefällt - ich freu mich über jeden Download / Kommentar
https://soundcloud.com/schallweller


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prüfen ob ein Popupmenu angezeigt wird
BeitragVerfasst: 18.07.2019 13:05 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Code:
EnableExplicit

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_INITMENUPOPUP
      Debug "PopupMenu wurde geöffnet."
    Case #WM_UNINITMENUPOPUP
      Debug "PopupMenu wurde geschlossen."
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreatePopupMenu(1)
    MenuItem(1, "Hallo")
    MenuItem(2, "Welt")
  EndIf
 
  SetWindowCallback(@WinCallback())
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_RightClick
        DisplayPopupMenu(1, WindowID(0))
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prüfen ob ein Popupmenu angezeigt wird
BeitragVerfasst: 18.07.2019 14:27 
Offline

Registriert: 07.08.2012 15:58
Ha! Der Hammer! Na klar! Den Windowcallback hatte ich garnicht mehr aufm Schirm. Klassischer Fall von Betriebsblindheit. Dank Dir recht herzlich dafür! Vorallem das Du mir gleich nen Code servierst...klasse!

:bounce:

NACHTRAG: Und das 2 Minuten später!! Lichtgeschwindigkeit ist lahm dagegen :)

_________________
Purebasic & MIDI - Das taugt!!
Wem meine Musik gefällt - ich freu mich über jeden Download / Kommentar
https://soundcloud.com/schallweller


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye