WM_ERASEBKGND | Wo ist die Nachricht?
-
Hallo,
ich versuche gerade bei einer CListCtrl das Flackern zu beheben und gehe deshalb gerade den Artikel: http://www.codeproject.com/vcpp/gdiplus/what_is_a_basename_.asp
durch.Das ist die Rede von WM_ERASEBKGND, ich finde sie aber nicht im Klassenassistenten (Strg+W) ... Wo ist das Ding?
(Ich arbeite mit VC6, leider noch)
-
wenns nicht da ist, dann mußt du es per hand einfügen oder über Klassen->deine klasse auswählen rechte maustaste -> Behandlungsnachrichten für windows nachrichten auswählen -> und als filter nach verfügbaren nachrichten für die klasse -> Fenster einstellen -> dann kannst du WM_ERASEBKGND auswählen.
Gruß Matthias
-
So ging's! Vielen DANK!
-
Okay, es ging doch nicht. Ich hab zwar die Nachricht reingekriegt aber das ganze Programm stürzt jetzt immer ab. Ich würde das gerne mal mit euch zusammen durchgehen.
Also: Wie kriegt man eine CListCtrl aktualisiert ohne zu flackern?
Ich habe ausführt LockWindowUpdate und SetRedraw getestet und beides war nicht zufriedenstellend. Also möchte ich die Lösung mit CMemDC mit euch testen.
Mein Programm bzw. die Hauptklasse nennt sicht CSherlockDlg
Im Artikel wird CListCtrl::OnPaint() geädert. Wenn ich über den Klassenassistenten OnPaint hinzufüge sieht das aber so aus: CSherlockDlg::OnPaint
Das kann doch schon nicht stimmen.
-
hast du auch eine Klasse von CListCtrl abgeleitet und diese deinem ListCtrl im Dialog zugeordnet?
Gruß Matthias
-
Also ich habe gerade gesehen wie man eine Klasse von CListCtrl ableiten kann aber wie kann ich meine bereits bestehende CListCtrl dieser Klasse zuordnen?
-
indem du, falls du das nocht nicht gemacht hast, deinen Kontrolls eine Membervariable gönnst und diese dann deiner neuen Klasse zuordnest. Hoffe das ich das richtig erklärt habe. hast du schon Membervariablen von CListCtrl auf den Konrolls, so ändere das in deinem Harderfile der Dialogklasse. Also aus:
CListCtrl m_listctrl;
wird dann:
CMyListCtrl m_listctrl;
und header der neuen CListCtrl klasse includen nicht vergessen.
Gruß Matthias
-
Okay, ich habe jetzt alles gemacht wie im Artikel beschrieben aber es flackert immernoch.
Welche Alternativen gibt es noch?
-
Hast du das alles in deiner neu erstellten ListCtrl-Klasse gemacht?
Ansonsten schau dir doch mal den Artikel an, vielleicht bringt dich das weiter
http://www.codeproject.com/Purgatory/flplst.asp
Gruß Matthias
-
Irgendwie ist wirklich der Wurm drin. Habe alles gemacht wie im Artikel und kriege gar nichts angezeigt.
Das kann doch nicht so schwer sein.
-
Eigentlich ist doch noch ein Thread von Dir offen. "Debug Assertion failed | afxcmn.inl line 132" (24.01.07). Da hast Du Dich mit Multithreading beschäftigt (was von der Materie etwas heftiger als ein Redraw eines List Controls ist).
Wie weit bist Du da denn gekommen?
Gruss, Gio
-
Ich konnte den Code noch deutlich schlanker machen und konnte das gesamte Programm deshalb auf 2 Threads runterschrauben.
Tut mir leid, dass ich das nicht deutlich gemacht habe.