Verfasst: 19.08.2006 16:48
@konne,
mich würde mal einfach so interessieren, was du machen willst, bzw wozu du das benötigst.
mich würde mal einfach so interessieren, was du machen willst, bzw wozu du das benötigst.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Enumeration
#Menu_Sub1
#Menu_Sub2
#Menu_Sub3
#Menu_Exit
EndEnumeration
If OpenLibrary(0, "Sub1Dll.dll") = 0
End
EndIf
;- Main
If OpenWindow(0, 0, 0, 640, 480, "Main")
CreateMenu(0, WindowID(0))
MenuTitle("&Datei")
MenuItem(#Menu_Sub1, "Sub 1")
MenuItem(#Menu_Sub2, "Sub 2")
MenuItem(#Menu_Sub3, "Sub 3")
MenuBar()
MenuItem(#Menu_Exit, "Be&enden")
Exit = 0
;- Hauptschleife
Repeat
event = WaitWindowEvent()
window = EventWindow()
menu = EventMenu()
type = EventType()
Select event
Case #PB_Event_Menu ; ein Menü wurde ausgewählt
Select menu
Case #Menu_sub1
Debug CallFunction(0, "OpenSubWindow", WindowID(0))
Case #Menu_sub2
Case #Menu_sub3
Case #Menu_Exit
Exit = 1
EndSelect
Case #PB_Event_Gadget ; ein Gadget wurde gedrückt
Case #PB_Event_CloseWindow ; das Schließgadget vom Fenster wurde gedrückt
Exit = 1
Case #PB_Event_Repaint ; der Fensterinhalt wurde zerstört und muss neu gezeichnet werden (nützlich für 2D Grafik-Operationen)
Case #PB_Event_SizeWindow ; das Fenster wurde in der Größe verändert
Case #PB_Event_MoveWindow ; das Fenster wurde verschoben
Case #PB_Event_ActivateWindow ; das Fenster wurde aktiviert (hat den Fokus erhalten)
Case #PB_Event_SysTray ; das SysTray wurde aktiviert
EndSelect
r1 = CallFunction(0, "WindowSubEvent", event, window, menu, type)
Until Exit
EndIf
Code: Alles auswählen
Global WinID
ProcedureDLL OpenSubWindow(Parend)
If WinID = 0
WinID = OpenWindow(#PB_Any, 40,40, 400,280, "Sub 1", #PB_Window_SystemMenu)
SetParent_(WinID, Parend)
CreateStatusBar(0, WindowID(WinID))
AddStatusBarField(100)
AddStatusBarField(100)
AddStatusBarField(100)
AddStatusBarField(100)
EndIf
;SetWindowLong_(WinID, #DWL_DLGPROC, GetWindowLong_(Parend, #DWL_DLGPROC))
ProcedureReturn WinID
EndProcedure
ProcedureDLL WindowSubEvent(Event, Window, Menu, Type)
If WinID = 0
ProcedureReturn -1
EndIf
StatusBarText(0, 0, Str(Event))
StatusBarText(0, 1, Str(Window))
StatusBarText(0, 2, Str(Menu))
StatusBarText(0, 3, Str(Type))
Select event
Case #PB_Event_Menu ; ein Menü wurde ausgewählt
Case #PB_Event_Gadget ; ein Gadget wurde gedrückt
Case #PB_Event_CloseWindow ; das Schließgadget vom Fenster wurde gedrückt
CloseWindow(WinID)
WinID = 0
Case #PB_Event_Repaint ; der Fensterinhalt wurde zerstört und muss neu gezeichnet werden (nützlich für 2D Grafik-Operationen)
Case #PB_Event_SizeWindow ; das Fenster wurde in der Größe verändert
Case #PB_Event_MoveWindow ; das Fenster wurde verschoben
Case #PB_Event_ActivateWindow ; das Fenster wurde aktiviert (hat den Fokus erhalten)
EndSelect
ProcedureReturn 0
EndProcedure
versuch mal das PlugIn-Beispiel von Danilo:Konne hat geschrieben:es ist nur PB's Eventhandling, dass durch seine IDs das ganze kaputt macht.