Seite 1 von 1
Frage zu Openwindow() und ParentWindowID
Verfasst: 02.11.2004 14:42
von PBZecke
Ich hab da mal eine Frage zu ParentWindowID bei Openwindow(). Hat dieser Parameter noch irgend eine andere Funktion, außer damit das Fenster mit #PB_Window_WindowCentered positionieren zu können? Oder gibt es noch andere Dinge wofür das sich als nützlich erweisen könnte?
Verfasst: 02.11.2004 15:06
von Danilo
Die Parent-Windows sind gut für Tool-Fenster usw., da sie
nicht hinter das Parent kommen können.
Klick mal das HauptFenster an, wenn das Child es halb
überdeckt - das Child bleibt immer vor dem Parent.
Für Dialoge, OptionsWindows, ToolWindows, ... kann man
eig. überall gebrauchen.
Verfasst: 02.11.2004 16:30
von nco2k
jep, ist eine feine sache.
hier hast du noch ein beispiel, damit du das prinzip besser verstehst:
Code: Alles auswählen
;- Window Constants
Enumeration
#Window_Main
#Window_Child
EndEnumeration
;- Shortcut Constants
Enumeration
#Shortcut_Escape
#Shortcut_Return
EndEnumeration
;- Gadget Constants
Enumeration
#Button_Click
#Button_Quit
#Button_Ok
EndEnumeration
;- Close Child Window
Procedure Close_Window_Child()
If WindowID(#Window_Child)
CloseWindow(#Window_Child)
EndIf
EnableWindow_(WindowID(#Window_Main), #True)
UseWindow(#Window_Main)
ActivateWindow()
EndProcedure
;- Close Main Window
Procedure Close_Window_Main()
If WindowID(#Window_Main)
End
EndIf
EndProcedure
;- Open Child Window
Procedure Open_Window_Child()
EnableWindow_(WindowID(#Window_Main), #False)
If OpenWindow(#Window_Child, 0, 0, 300, 200, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "Child", WindowID(#Window_Main))
If CreateGadgetList(WindowID(#Window_Child))
ButtonGadget(#Button_Ok, 20, 20, 100, 25, "Ok", #PB_Button_Default)
EndIf
AddKeyboardShortcut(#Window_Child, #PB_Shortcut_Escape, #Shortcut_Escape)
AddKeyboardShortcut(#Window_Child, #PB_Shortcut_Return, #Shortcut_Return)
Else
MessageRequester("", "Error", #MB_ICONERROR)
End
EndIf
UseWindow(#Window_Child)
ActivateWindow()
EndProcedure
;- Open Main Window
Procedure Open_Window_Main()
If OpenWindow(#Window_Main, 0, 0, 400, 300, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Main")
If CreateGadgetList(WindowID(#Window_Main))
ButtonGadget(#Button_Click, 20, 20, 100, 25, "Click Me!")
ButtonGadget(#Button_Quit, 20, 70, 100, 25, "Quit")
EndIf
AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #Shortcut_Escape)
Else
MessageRequester("", "Error", #MB_ICONERROR)
End
EndIf
UseWindow(#Window_Main)
ActivateWindow()
EndProcedure
;- Start
Open_Window_Main()
;- Event Child Window
Procedure Event_Window_Child(EventID)
Select EventID
Case #PB_Event_Menu
Select EventMenuID()
Case #Shortcut_Escape
Close_Window_Child()
Case #Shortcut_Return
Close_Window_Child()
EndSelect
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Button_Ok
Close_Window_Child()
EndSelect
Case #PB_Event_CloseWindow
Close_Window_Child()
EndSelect
EndProcedure
;- Event Main Window
Procedure Event_Window_Main(EventID)
Select EventID
Case #PB_Event_Menu
Select EventMenuID()
Case #Shortcut_Escape
Close_Window_Main()
Case #Shortcut_Return
Close_Window_Main()
EndSelect
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Button_Click
Open_Window_Child()
Case #Button_Quit
Close_Window_Main()
EndSelect
Case #PB_Event_CloseWindow
Close_Window_Main()
EndSelect
EndProcedure
;- Event Loop
Repeat
EventID.l = WaitWindowEvent()
If EventID
Select EventWindowID()
Case #Window_Main
Event_Window_Main(EventID)
Case #Window_Child
Event_Window_Child(EventID)
EndSelect
EndIf
ForEver
End
c ya,
nco2k
Verfasst: 03.11.2004 02:48
von PBZecke
Danilo hat geschrieben:Die Parent-Windows sind gut für Tool-Fenster usw., da sie
nicht hinter das Parent kommen können.
Das gefällt mir, ich dachte schon, dass ich mich selbst darum kümmern müsste. Hatte das auch mal mit zwei Fenstern und Parent probiert, aber das ist mir irgendwie entgangen.
Danke, auch für den Beispielcode!