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!