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
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
- Lars Erdmann (15.06.2008 12:11)
- Marcel Müller (15.06.2008 18:55)
- Lars Erdmann (16.06.2008 00:30)
- Marcel Müller (16.06.2008 10:03)
