neues Fenster in Vordergrund öffnen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

neues Fenster in Vordergrund öffnen?

Beitrag von udg »

Hallo,
simpel oder nicht? ich hab mal wieder keine Ahnung.
Hab ja nun schon hunderte Fenster erstellt und geöffnet.

Mein Problem diesmal:
Ich habe mein Hauptfenster offen und möchte nun über einen Button ein 2tes Fenster anzeigen. Dieses soll natürlich über dem bereits geöffneten Fenster(davor) angezeigt werden, jedoch ohne den Befehl:

Code: Alles auswählen

#HWND_TOPMOST
Grüße
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: neues Fenster in Vordergrund öffnen?

Beitrag von Kiffi »

SetActiveWindow()?

Grüße ... Peter
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: neues Fenster in Vordergrund öffnen?

Beitrag von ts-soft »

Da gibt es viele Möglichkeiten, so wie Kiffi schrieb, oder z.B. so:

Code: Alles auswählen

OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "MainWindow")
ButtonGadget(0, 10, 200, 100, 30, "NewWindow")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      If EventWindow() = 0
        End
      Else
        CloseWindow(EventWindow())
        DisableGadget(0, #False)
      EndIf
      
    Case #PB_Event_Gadget
      If EventGadget() = 0
        DisableGadget(0, #True)
        OpenWindow(1, WindowX(0) + GadgetX(0), WindowY(0) + GadgetY(0) - GadgetWidth(0), 100, 100, "NewWindow", #PB_Window_SystemMenu, WindowID(0))
      EndIf
  EndSelect
ForEver
Kommt also drauf an, was Du vorhast, damit man Dir sagen kann, was zu empfehlen wäre!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: neues Fenster in Vordergrund öffnen?

Beitrag von RSBasic »

Wenn du ein neues Fenster erstellst, ist dieses standardmäßig automatisch im Vordergrund bzw. hat den Fokus.
Falls das zweite Fenster dauerhaft vor dem Hauptfenster angezeigt werden soll, also auch bei Klick auf das Hauptfenster, dann benutze den optionalen Parameter "ParentID".
Beispielcode:

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If OpenWindow(1, 0, 0, 300, 200, "", #PB_Window_WindowCentered, WindowID(0))
  EndIf
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: neues Fenster in Vordergrund öffnen?

Beitrag von udg »

Kiffi hat geschrieben:SetActiveWindow()?

Grüße ... Peter
:freak: natürlich hatte ich SetActiveWindow() im code aber ausversehen doppelt. Der 2te SetActiveWindow() Befehl war falsch und darum gabs die Probleme, denn er befand sich zur gleichen Zeit aktiv für das Fenster welches eigentlich in den Hintergrund sollte. Dann kanns natürlich nit gehen.

Jetzt geht es :allright:

Danke für die schnelle Hilfe
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten