Fenster schieben ist verzögert bei sehr vielen Gadgets

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
lgb-this
Beiträge: 6
Registriert: 24.07.2014 22:51
Wohnort: Winterberg - Schweiz
Kontaktdaten:

Fenster schieben ist verzögert bei sehr vielen Gadgets

Beitrag von lgb-this »

Hallo,

ich habe ein Windows-Programm mit PureBasic 5.73 erstellt, in welchem es sehr viele Gadgets hat. Beim Verschieben des Fensters mit der Maus tritt eine Art Verzögerung auf - das Fenster bewegt sich weiter als es sollte, auch wenn die Maus schon losgelassen wurde. Eine Reduktion der Anzahl Gadgets würde praktisch eine Neuprogrammierung erzwingen.

Mit diesem kleinen Beispielcode ist dieser Effekt einigermassen sichtbar:

Code: Alles auswählen

OpenWindow(0, 50, 50, 1000, 800, "Test")

For i = 0 To 10000
  j = i / 4
  x = StringGadget(#PB_Any,20+j,20+j,100,20,Str(i))
Next i

Repeat
  EventID = WaitWindowEvent(1) 
Until EventID = #PB_Event_CloseWindow

CloseWindow(0)
Das Beispielprogramm soll nur diesen Effekt beim Verschieben des Fensters zeigen.

Wie kann ich dieses Verschieben optimieren ? Ich stelle mir vor, dass nur das Fenster mit Rahmen ohne Inhalt verschoben/dargestellt wird und erst wenn der User die Maustaste loslässt das Fenster neu aufgebaut wird.

Danke für Eure Hilfe.

Gruss

Matthias
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fenster schieben ist verzögert bei sehr vielen Gadgets

Beitrag von STARGÅTE »

Zehntausend Gadgets? Bei mir wird nicht mal das Fenster richtig geladen. Ich bekomme einfach nur "keine Rückmeldung" und ich kann gar nichts machen.
Falls du sowas wie eine Tabelle mit Zellen schreiben willst, ist das der falsche Weg.
Dafür solltest du z.B. ein großes Canvas Gadget nutzen, die Zellen darin "per Hand" schreiben und im Falle einer Änderung dort lokal ein String-Gadget erstellen.

Wofür sind 10000 gleichzeitig aktive Gadget nötig?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
lgb-this
Beiträge: 6
Registriert: 24.07.2014 22:51
Wohnort: Winterberg - Schweiz
Kontaktdaten:

Re: Fenster schieben ist verzögert bei sehr vielen Gadgets

Beitrag von lgb-this »

Wie ich geschrieben habe, ist das Beispiel nur da, um die Verzögerung zu zeigen. Die eigentliche Applikation ist mit sehr vielen Registern und vielen verschiedenen Gadgettypen aufgebaut.

Das Beispielprogramm braucht einen Moment, um die Gadgets aufzubauen. Anschliessend kann man das Fenster schieben und schliessen.
Gartenbahn Digital http://www.beathis.ch
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fenster schieben ist verzögert bei sehr vielen Gadgets

Beitrag von mk-soft »

Das ist kein PureBasic problem sondern eine Einschränkung von Windows.
Eher ein Konstruktionsfehler von dein Programm.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
kpeters58
Beiträge: 25
Registriert: 16.12.2014 18:51

Re: Fenster schieben ist verzögert bei sehr vielen Gadgets

Beitrag von kpeters58 »

Ich muß den anderen vor mir beipflichten: Dein Ansatz ist mit ziemlicher Sicherheit 'sub-optimal' - da Du uns keinen Screenshot zeigst, aus dem hervorgeht, was Du eigentlich machen willst, kann man dazu eigentlich nicht mehr viel sagen.

Wenn Du das Forum nach 'Deflicker' durchsuchst, findest Du eine Routine, die hervorragende Dienste beim Resizen von PB Windows leistet. Keine Ahnung, ob die in Deinem Fall hilfreich sein könnte...
Antworten