Aktuelle Zeit: 11.07.2020 01:29

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BindEvent - alle Ereignisse bequem binden
BeitragVerfasst: 11.04.2020 17:22 
Offline
Benutzeravatar

Registriert: 15.03.2007 21:47
Moin,

ich habe seit langer Zeit nichts mehr mit PureBasic gemacht und schaue mir gerade die BindEvent-Funktionalität an. Ich möchte nun erreichen, dass ich über einen simplen Aufruf alle Ereignisse eines Fensters an einen Callback binden kann. Damit möchte ich quasi #PB_Event_SizeWindow, #PB_Event_MoveWindow etc. im Callback abfragen.

Ist dies ohne mehrmaligen Aufruf von BindEvent möglich?

_________________
Kostenfreier Setup Creator | RCon Tool für DayZ

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: BindEvent - alle Ereignisse bequem binden
BeitragVerfasst: 11.04.2020 17:51 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Hatte ich auch schon gesucht. Geht leider nicht...

Schon mal grob vorbereitet
Code:
;-TOP

Enumeration Windows
  #Main
EndEnumeration

Enumeration Gadgets
 
EndEnumeration

Enumeration Status
  #MainStatusBar
EndEnumeration

Procedure BindWindowEvents(Callback, Window)
  BindEvent(#PB_Event_CloseWindow, Callback, Window)
  BindEvent(#PB_Event_MoveWindow, Callback, Window)
  BindEvent(#PB_Event_SizeWindow, Callback, Window)
  BindEvent(#PB_Event_ActivateWindow, Callback, Window)
  BindEvent(#PB_Event_DeactivateWindow, Callback, Window)
  BindEvent(#PB_Event_MaximizeWindow, Callback, Window)
  BindEvent(#PB_Event_MinimizeWindow, Callback, Window)
EndProcedure

Procedure UnbindWindowEvents(Callback, Window)
  UnbindEvent(#PB_Event_CloseWindow, Callback, Window)
  UnbindEvent(#PB_Event_MoveWindow, Callback, Window)
  UnbindEvent(#PB_Event_SizeWindow, Callback, Window)
  UnbindEvent(#PB_Event_ActivateWindow, Callback, Window)
  UnbindEvent(#PB_Event_DeactivateWindow, Callback, Window)
  UnbindEvent(#PB_Event_MaximizeWindow, Callback, Window)
  UnbindEvent(#PB_Event_MinimizeWindow, Callback, Window)
EndProcedure

Procedure DoEventWindow()
  Select Event()
    Case #PB_Event_CloseWindow
      Debug "Close Window"
    Case #PB_Event_SizeWindow
      Debug "Size Window"
     
  EndSelect
EndProcedure

Procedure Main()
 
  #MainStyle = #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
 
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "Window" , #MainStyle)
   
    BindWindowEvents(@DoEventWindow(), #Main)
   
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    ForEver
   
  EndIf
 
EndProcedure : Main()

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Zuletzt geändert von mk-soft am 11.04.2020 18:17, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: BindEvent - alle Ereignisse bequem binden
BeitragVerfasst: 11.04.2020 18:06 
Offline
Benutzeravatar

Registriert: 15.03.2007 21:47
Vielen Dank, mk-soft.

Ist etwas unschön, dass PureBasic dies von Haus aus nicht untersützt.

_________________
Kostenfreier Setup Creator | RCon Tool für DayZ

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: BindEvent - alle Ereignisse bequem binden
BeitragVerfasst: 12.04.2020 21:48 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Na ja, der große Vorteil von BindEvent ist ja, dass Du versch. Prozeduren für versch. Ereignisse anlegen kannst.
z.B. "OnButton_Click()", oder "OnComboBox_Change()".
Das was Du da möchtest, lässt sich doch viel einfacher erledigen, z.B. so:
Code:
Procedure MyEventHandling(Event)
   
   Select Event
      Case #PB_Event_MoveWindow
      
      Case #PB_Event_SizeWindow
         
      Case #PB_Event_ActivateWindow
         
      Case #PB_Event_Gadget
         Select EventGadget()
               
               
         EndSelect
      ...
   EndSelect

EndProcedure


Repeat
   Event = WaitWindowEvent()
   Select EventWindow()
      Case #DasWindowInteressiertMich
         MyEventHandling(Event)

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: BindEvent - alle Ereignisse bequem binden
BeitragVerfasst: 12.04.2020 22:31 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:29
Noch eine Möglichkeit: SetWindowCallback

_________________
Windows 10
PB Last Final / (Sometimes testing Beta versions)


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 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:  

 


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