CListCtrl - custom draw
-
Hallo zusammen,
ich habe ein kleines Problem. Vielleicht hat einer von euch einen Tipp.
Ich habe eine Subklasse von CListCtrl implementiert, die u.a. beim resizing des headers (bzw. einer Spalte) dies Spalte nicht sofort resized sondern eine Linie (so eine Art Tracker Line) im Kompletten list control zeichnet. Die Linie Zeichnet sich entsprechend der x-Position meines Cursors. Beim release des linken mouse buttons verschwindet die Linie wieder und die Spalte wird auf die entsprechende Größe geändert.
Das Problem liegt jetzt im Zeichnen. Ich mache das in der "DrawItem" Methode und im handler von NM_CUSTOMDRAW.
Das Problem ist das Gitter. Dieses wird erst danach gezeichnet und überdeckt damit meine Linie (also an den Schnittpunkten).
Ich will aber nicht WM_PAINT verarbeiten, da ich dann alles selbst machen darf.
Hat da vielleicht jemand eine Idee?Danke
VG
-
Habe selbst eine Lösung gefunden.
http://msdn.microsoft.com/en-us/library/bb775487(v=vs.85).aspx
Man kann sich NM_CUSTOMDRAW tatsächlilch öfter schicken lassen. Das erste mal wird es vor dem painting cycle des parents geschickt. Durch Rückgabe des Wertes CDRF_NOTIFYPOSTPAINT kann man es auch noch einmal danach bekommen (und zu anderen Zeitpunkten.)
-
Eine gute Klasse und ein guter Artikel:
http://www.codeguru.com/cpp/controls/listview/customdrawing/article.php/c4195/Custom-Draw-ListView-Controls-Part-I.htm
http://www.codeguru.com/cpp/controls/listview/customdrawing/article.php/c4199/Custom-Draw-ListView-Controls-Part-II.htm