Re: Mehrere Callbacks für ein Fenster?
Verfasst: 17.01.2013 19:10
Wenn die Objekte (Menu´s, Gadget´s) oder die Event´s mit Konstanten erstellt sind dann kann man auch über eine virtuelle Tabelle diese abarbeiten. Geht besonders schnell da die Function über die ID direkt aufgerufen wird.
Beispiel aus mein ...Generate... automatisch erzeugen Code
Beispiel aus mein ...Generate... automatisch erzeugen Code
Code: Alles auswählen
;-TOP
; Visual Generate EventMain (Do Not Edit - Allways Overwrite)
; *********************************************************************************************************
; Init Event Pointer
Prototype MyProtoInvoke()
Prototype MyProtoInvoke2(EventType)
Structure udtCallEvent
Invoke.MyProtoInvoke[0]
EndStructure
Structure udtCallEvent2
Invoke.MyProtoInvoke2[0]
EndStructure
Global *CallEventMenu.udtCallEvent = ?CallEventMenu
Global *CallEventGadget.udtCallEvent2 = ?CallEventGadget
Global *CallEventSize.udtCallEvent = ?CallEventSize
Global *CallEventExit.udtCallEvent = ?CallEventExit
#CallEventMenuCount = 3
#CallEventGadgetCount = 6
#CallEventWindowCount = 2
; *********************************************************************************************************
Procedure MyEventMenu(MenuID)
If MenuID >= 0 And MenuID < #CallEventMenuCount
*CallEventMenu\Invoke[MenuID]()
EndIf
EndProcedure
; *********************************************************************************************************
Procedure MyEventGadget(GadgetID, EventType)
If GadgetID >= 0 And GadgetID < #CallEventGadgetCount
*CallEventGadget\Invoke[GadgetID](EventType)
EndIf
EndProcedure
; *********************************************************************************************************
Procedure MyEventSize(WindowID)
If WindowID >= 0 And WindowID < #CallEventWindowCount
*CallEventSize\Invoke[WindowID]()
EndIf
EndProcedure
; *********************************************************************************************************
Procedure MyEventExit(WindowID)
If WindowID >= 0 And WindowID < #CallEventWindowCount
*CallEventExit\Invoke[WindowID]()
EndIf
EndProcedure
; *********************************************************************************************************
Procedure MyEventDispatch(EventType)
EndProcedure
; *********************************************************************************************************
DataSection
CallEventMenu:
Data.i @EventMenu_Main_MenuItem_Dialog()
Data.i @EventMenu_Main_MenuItem_Exit()
Data.i @EventMenu_Dialog2_MenuItem_Exit()
CallEventGadget:
Data.i @EventGadget_Main_Button_Yes()
Data.i @EventGadget_Main_Button_DoCancel()
Data.i @MyEventDispatch()
Data.i @EventGadget_Dialog2_Button_Yes()
Data.i @EventGadget_Dialog2_Button_Cancel()
Data.i @MyEventDispatch()
CallEventSize:
Data.i @EventSize_Main()
Data.i @EventSize_Dialog2()
CallEventExit:
Data.i @EventExit_Main()
Data.i @EventExit_Dialog2()
EndDataSection
; *********************************************************************************************************