Thema: Delphi Invalidate in ListView

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Invalidate in ListView

  Alt 27. Feb 2017, 17:52
InvalidateRect vielleicht?
Wenn ich wüsste wann die Maus den Rect des aktuellen Items verlässt.
Dann haben die Items keine eigenen Handles so das ich mit InvalidateRect diese Invalidaten könnte.
Es wird immer das Handle des ListView verwendet.

Es gibt ja die Message CDDS_ITEMPREPAINT die dann CDRF_NOTIFYSUBITEMDRAW zurück gibt

Ich glaube aber das ich diese nur in der Anwendung selbst auswerten kann.
Deshalb nutzt das auch nicht viel weil ich in der DLL selbst den Rahmen zeichnen will.

Zudem verwende ich die schon aber für die gesamte ListView.
SkinEngine.FInvalidateRect(WinHandle, False);
Delphi-Quellcode:
procedure TSkinEngine.FInvalidateRect(WinHandle: HWND; Flag: Boolean);
var
  rc: TRect;
  //hbr: HBRUSH;

begin
  GetClientRect(WinHandle, rc);

  //hbr := CreateSolidBrush(clred);
  //FillRect(GetDC(WinHandle),rc , hbr);

  InvalidateRect(WinHandle, @rc, Flag);
  UpdateWindow(WinHandle);

end;
Die Kommentierten zeilen sind zum Testen und werden eingeschaltet damit ich sehen kann ob der Rect Korrekt gesetzt ist.
Logischer weise natürlich anstelle von InvalidateRect.

gruss

Geändert von EWeiss (27. Feb 2017 um 17:59 Uhr)
  Mit Zitat antworten Zitat