Window-Refresh bzw. fehlender Fensteraufbau

Für allgemeine Fragen zur Programmierung mit PureBasic.
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Vorerst mal thx.

Werds mal ausprobiern.
Ist für mich privat, chef hat grade die Mücke gemacht und ich werds jetzt mal coden.

Hab aber noch ein prob.
Hast du schonmal ein listgadget erstellt, dann hunderte einträge reingeschrieben (z.b. eine art Dir-Befehl oder was auch immer)?
Die Einträge sind erst zu sehen, wenn er fertig ist, selbst wenn ich ein delay(5) oder so reinlege, nix. ich hätte gerne das man die einträge währenddessen sieht nicht erst wenn die schleife mit dem eintragen fertig ist.
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

@max.
Ich könnt mich totlachen und ohrfeigen.
An alle Coder hier: Sendet mir sofort ein "format c: /q", ich habs nicht anders verdient. DAS GEHT! Verdammte automatische Nummerierung.
Ich hab die zwei enum.. zusammengefasst zu einer und... siehe da, das funzt.
Manchmal sieht man vor lauter Wald die Bäume nicht, nochmal thx (auch an all die anderen die gepostet haben)

Vielleicht haste auch nen "Baum" für das List-problem...
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Max.
Beiträge: 58
Registriert: 29.08.2004 13:19

Beitrag von Max. »

Da gibt es wohl einige Lösungen; alle mit Vor- und Nachteilen. Z.B.

- In der Schleife, die die Elemente hinzufügt mit

Delay(xyz)
WindowEvent()

- Die Prozedur, die die Elemente hinzufügt mit

CreateThread(@...)

aufrufen.

- Einen Thread starten (s.o.), der alle paar Sekunden einen Refresh durchführt
AMD XP 2400+ · 1 GB RAM · Radeon 9800 Pro · Win XP SP1 · IE 6.0
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Elemente hinzufügen mit:

Code: Alles auswählen

For i = 1 To 10
  AddGadgetItem(#ListIcon, -1, Element(i))
  While WindowEvent(): Wend
Next i
So funktioniert das.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Hallo.

Jo, habs schon erwähnt. DAS war die Lösung.

Ich wusste nicht, das winevent() auch als ne art... vsync benutzt werden kann, wo gewartet wird, das der Bildschirm neu aufgebaut wurde (bzw. das Fenster). Ich dachte das geht nur um die Events abzufragen. Steht auch in der Hilfe nicht.

Ich hab einfach nach dem setgadgettext() nen winevent() eingebaut geht. aber über while ist auch gut.

Macht es eigentlich Sinn waitwinevent() zu nehmen?
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Agent hat geschrieben:Macht es eigentlich Sinn waitwinevent() zu nehmen?
Klar macht es das, Programme welche im Ruhezustand sämtliche CPU-Power ziehen bleiben bei mir nicht lange auf der Platte liegen - dazu ist mir selbst mein leiser Notebook-Lüfter doch noch etwas zu laut ;-)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Stimmt. Weil waitwinevent() ja das Prog anhält...sofern man das möchte.

Vielleicht sollte ich als Signatur mal den klassischen Azubi-Namensschild-Untertitel wählen:

ICH LERNE NOCH!


*LOOL
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
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

Beitrag von NicTheQuick »

Theoretisch macht [c]WaitWindowEvent()[/c] nicht besonders viel anders wie die folgende Procedure:

Code: Alles auswählen

Procedure.l WaitWindowEvent2()
  Protected Event.l
  Repeat
    Event = WindowEvent()
    Delay(10)
  Until Event
  ProcedureReturn Event
EndProcedure
In dieser [c]Repeat[/c]-[c]Until[/c]-Schleife kann man jetzt auch noch Funktionen einfügen, die bspw. ständig das Clipboard überwachen oder sonstiges.
Antworten