Frage zu Openwindow() und ParentWindowID

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Frage zu Openwindow() und ParentWindowID

Beitrag 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?
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag 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!
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Antworten