nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Container Control und WinEnableWindowUpdate

Von: Marcel Müller (news.5.maazl@spamgourmet.org) [Profil]
Datum: 15.06.2008 09:53
Message-ID: <4854ca6a$0$6556$9b4e6d93@newsspool3.arcor-online.net>
Newsgroup: de.comp.os.os2.programmer
Hallo,

wie bekommt man denn bei einem Container-Control in der Baumansicht die
Redraws ausgesetzt?

Wenn ich es wie in dem Beispiel für die Listbox mit
WinEnableWindowUpdate(hwnd, FALSE) mache, gibt es bei jedem zweiten
Versuch Hackfleisch bei den Container-Items.
http://home.arcor.de/maazl/temp/Container.png
Es werden einfach alle Container-Items auf die Position 0,0 gesetzt.
Witzigerweise passiert das nur jedes zweite mal. Und es ist auch nur die
Baumansicht betroffen. Bei Details geht es immer.

Während der gesperrten Updates wird faktisch fast der gesamte
Containerinhalt ersetzt. Also Neue Items vorne erzeugen
(CM_INSERTRECORD), einige noch benötigte aus dem hinteren, alten Items
nach vorne verschieben (CM_MOVETREE) und dann den Rest, die nicht mehr
benötigten Items löschen (CM_REMOVERECORD). Wenn ich das
WinEnableWindowUpdate weglasse, funktioniert alles, allerdings flimmert
der Fensterinhalt dann erwartungsgemäß wie verrückt. Bei ein paar mehr
Fenstern erwächst daraus auch ein handfestes Ressourcenproblem.

Irgendwelche Ideen?
Oder ist das ein Bug im PM? Die PMShell zeichnet nämlich große Container
bei der Erstbefüllung auch (unnötigerweise) in Echtzeit.


Marcel

[ Auf dieses Posting antworten ]

Antworten