Seite 1 von 1

Window permanent machen

Verfasst: 05.03.2006 03:27
von KeyKon
Sorry mir is einfach kein besserere Titel eingefallen :freak: Naja es is spät... :coderselixir:

Wie kann ich es anstellen das ich nurnoch ein Window in meinem Programm benutzen kann (So wie z.B. der MessageRequester)?

KeyKon

Verfasst: 05.03.2006 09:01
von Macros
Mit GetForegroundWindow_()
die Id des Vordergrungfensters ermitteln, und mit den ID der offenen
Fenster vergleichen. wenn die Id gleich der eines Fensters aus deinem Programm (und ungleich der des einen), führe einmalig
SetWindowPos_(WindowID(1),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
wobei du für 1 die nummer deines Fensters einsetzt aus.

Verfasst: 05.03.2006 17:11
von KeyKon
thx :allright:
So hab ich mir das vorgestellt!

KeyKon

Verfasst: 05.03.2006 19:01
von nco2k
ich glaub du suchst eher sowas: :?

Code: Alles auswählen

#WindowA = 0
#WindowB = 1
#ButtonA = 0
#ButtonB = 1

Procedure Open_WindowB()
  If OpenWindow(#WindowB, 0, 0, 480, 360, #PB_Window_SystemMenu | #PB_Window_WindowCentered, "Window B", WindowID(#WindowA)) And CreateGadgetList(WindowID(#WindowB))
    ButtonGadget(#ButtonB, 10, 10, 100, 25, "Close Window B")
    DisableWindow(#WindowA, #True)
    SetActiveWindow(#WindowB)
    ProcedureReturn #True
  EndIf
  MessageRequester("Error", "Could not open Window B", #MB_ICONERROR)
  ProcedureReturn #False
EndProcedure
Procedure Close_WindowB()
  CloseWindow(#WindowB)
  DisableWindow(#WindowA, #False)
  SetActiveWindow(#WindowA)
EndProcedure
Procedure Event_WindowB(Event.l)
  Select Event
    Case #PB_Event_Gadget
      If EventGadget() = #ButtonB
        Close_WindowB()
      EndIf
    Case #PB_Event_CloseWindow
      Close_WindowB()
  EndSelect
EndProcedure

Procedure Open_WindowA()
  If OpenWindow(#WindowA, 0, 0, 640, 480, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Window A") And CreateGadgetList(WindowID(#WindowA))
    ButtonGadget(#ButtonA, 10, 10, 100, 25, "Open Window B")
    ProcedureReturn #True
  EndIf
  MessageRequester("Error", "Could not open Window A", #MB_ICONERROR)
  ProcedureReturn #False
EndProcedure
Procedure Close_WindowA()
  End
EndProcedure
Procedure Event_WindowA(Event.l)
  Select Event
    Case #PB_Event_Gadget
      If EventGadget() = #ButtonA
        Open_WindowB()
      EndIf
    Case #PB_Event_CloseWindow
      Close_WindowA()
  EndSelect
EndProcedure

If Open_WindowA()
  Repeat
    Event.l = WaitWindowEvent()
    If Event
      Select EventWindow()
        Case #WindowA
          Event_WindowA(Event)
        Case #WindowB
          Event_WindowB(Event)
      EndSelect
    EndIf
  ForEver
EndIf

End
c ya,
nco2k

Verfasst: 05.03.2006 21:17
von KeyKon
Nö, mir reicht das von Makros vollkommen, trotzdem danke!

KeYKon

Verfasst: 05.03.2006 21:43
von Macros
Freut mich, dass ich helfen konnte
MfG Macros