MessageRequester ParentWindow

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von RSBasic »

@ts-soft
Ja, ich weiß. Ich wollte nur rasch zeigen, was passiert, wenn das Fenster X (ob 1. oder 2. Fenster) im Vordergrund ist. Hab einfach bei mir irgendeine Vorlage genutzt.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von DarkDragon »

ts-soft hat geschrieben:
DarkDragon hat geschrieben:Ich weiß nicht, wie ihr das verteitigen könnt, das ist ein zusätzlicher Parameter, der dem PB Team sogar die Arbeit wegnehmen würde das aktive Fenster zu suchen.
Mit anderen Worten, als Default sollte 0 sein? Das bringt ja die Einsteiger zu fehlern und gesucht werden muss da auch nicht.
Ja, standardmäßig sollte erstmal nichts modal sein. Erst wenn man ein Fenster angibt sollte es modal sein. Eventuell könnte man ja zusätzlich zum Fensterargument ein Flag angeben: #PB_ModalParent_AutoChoose, #PB_ModalParent_None, #PB_ModalParent_SeeParameter, damit man auch rückwärtskompatibel bleibt. Der Standardwert könnte dann auch #PB_ModalParent_AutoChoose sein damit es sich so wie jetzt verhält.

Auch die anderen Dialoge sollten dann demnach angepasst werden und auch erstellte Fenster sollten Modal zu anderen sein können.
ts-soft hat geschrieben:PS: Ich weiß ja nicht, was RSBasic mit seinem Beispiel beweisen möchte, aber blockierende Dialoge dürfen nur in dem Thread
erstellt werden, in dem das zugehörige Fenster erstellt wurde. So ist das Beispiel die genau falsche Anwendung eines
modalen Dialoges :wink:
Ja, das dachte ich auch, aber es demonstriert wie PB funktioniert und das ist schon behämmert so wie es ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
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: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von ts-soft »

DarkDragon hat geschrieben:und auch erstellte Fenster sollten Modal zu anderen sein können.
Können Sie doch /:->
ParentID und EnableWindows, alles benötigte ist doch dabei.
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
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von NicTheQuick »

Um mal kurz auf das Beispiel in RSBasics Post zurück zu kommen. Unter Linux werden die beiden Fenster erstellt und dann kommt "Das mit dem Debugger getestete Executable endete unerwartet.". Mache ich den Thread weg, gibt es keine Probleme. Ist das nun ein Bug?` /:->
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von RSBasic »

@ NicTheQuick
Vergiss bitte, was für Beispiele ich dort oben gepostet habe.

Versuch es damit:

Code: Alles auswählen

EnableExplicit

Define EventID

Procedure Window1()
  If OpenWindow(1,0,0,300,200,"ChildWindow",#PB_Window_SystemMenu|#PB_Window_WindowCentered)
    SetWindowState(1,#PB_Window_Minimize)
  EndIf
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  Window1()
  MessageRequester("", "Hallo Du.", 0)
 
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Einmal mit SetWindowState(1,#PB_Window_Minimize) und ohne testen.
Sollte aber nur zeigen, was passiert, wenn 1. oder 2. Fenster im Vordergrund ist, bevor die MsgBox erscheint. Du musst dann auf das entsprechende Fenster anklicken, um zu sehen, ob die MsgBox aufblinkt. Hat aber direkt nichts mit dem besprochenden Bug zu tun.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von NicTheQuick »

@RSBasic: Es fehlt immer noch das Flag "#PB_Window_MinimizeGadget", sonst wird bei mir gar nichts minimiert. Und ich hab auch immer noch nicht den Unterschied verstanden mit und ohne das "SetWindowState(...)". Beide male kommt ein MessageRequester und zeigt mir was und ich kann die beiden Fenster nicht schließen bevor ich auf "OK" drücke, was ja Sinn macht, weil ich bis dahin noch gar nicht im Event-Loop bin. Das minimierte Fenster kann ich zwar wiederherstellen, aber auch solange nicht erneut minimieren, bis ich auf "OK" gedrückt habe. Verschieben der Fenster ist kein Problem.
Ich glaub ich hab nicht ganz kapiert, was hier zu testen ist. ^^
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von RSBasic »

@NicTheQuick
Ups ja stimmt, funktioniert bei mir aber auch ohne Minimize-Flag. :D

Bezüglich deiner Verständnisfrage: Das extra Thema ging ab hier los: http://www.purebasic.fr/german/viewtopi ... 02#p304102
Die Frage lautete, warum die MsgBox standardmäßig modal zum aktiven Fenster wird, welches sich im Vordergrund befindet. D.h. du musst die MsgBox erst wegklicken und erst dann kannst du das Fenster, welches noch aktiv war, weiterverwenden.
DargDragon hat sich dann gefragt, woher PB das ParentWindow nimmt, weil normalerweise so ist, dass die modal-Einstellung optional ist. (Z.B. bei WinAPI)
Daraufhin wollte ich mit Hilfe meiner Beispielcodes den Unterschied zeigen, dass er das derzeit aktive Fenster, welches sich im Vordergrund befindet, als ParentWindow nimmt. (MsgBox-Titelleiste blinkt dann dreimal, wenn man auf das ParentWindow klickt.)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von NicTheQuick »

RSBasic hat geschrieben:@NicTheQuick
Ups ja stimmt, funktioniert bei mir aber auch ohne Minimize-Flag. :D
Blöd, dass das von OS zu OS so unterschiedlich ist. Ich finde es bei mir dann aber logischer.
(MsgBox-Titelleiste blinkt dann dreimal, wenn man auf das ParentWindow klickt.)
Blinken tut hier gar nichts. Wieder ein Unterschied.
Benutzeravatar
sharkpeter
Beiträge: 474
Registriert: 29.08.2004 16:18
Wohnort: Dresden
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von sharkpeter »

@RSBasic,

nee, das Thema ging ganz oben los, da war von Requestern ÜBERHAUPT keine
Rede. Sondern, "Warum flackert das ganze Fenster, wenn ich mit der Shift (Strg, Alt ...)-Taste
in einem Stringgadget eine Eingabe mache". Man sollte die Themen nicht immer
zu Multi-Themen werden lassen.

@3BO,

richtig, bei 4.51 passiert nüscht, bei 4.60 auch noch nicht, erst ab 4.61

Gruß Jens
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64

Nichts wissen macht nichts, sich dumm stellen aber schon.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Repaint (Flackern) bei Shift, ist das normal?

Beitrag von RSBasic »

@sharkpeter
Sag es nicht mir, ich habe damit nicht angefangen. ;)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten