![]() |
Invalidate in ListView
Im Explorer (ListView) zumindest unter Win7 wird beim drüberfahren der Items mit der Maus ein Rahmen um diese Items gezeichnet.
Das mache ich bei mir in meiner Ownerdraw ListView genauso. Das Problem dabei ist nur das ich dann nach jedem move auf ein anderes Item das ListView Invalidieren muss damit das zuletzt gezeichnete gelöscht wird. Wie könnte ich das umgehen so wie im Explorer das ich nicht jedes Mal ein Invalidate aufrufen muss? Geht schwer auf die CPU und setzt meine Frames dementsprechend runter. (Im Explorer merkt man nichts davon) Die meisten ListViews Ownerdrawn zeichnen keinen Rahmen um die Items ich glaube genau wegen diesen Problem nur für das ausgewählte selektierte Item. Irgend jemand eine Lösung dafür? Wenn nicht werde ich wohl oder übel das zeichnen des Rahmen entfernen müssen. gruss |
AW: Invalidate in ListView
InvalidateRect vielleicht?
|
AW: Invalidate in ListView
Zitat:
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.
Delphi-Quellcode:
SkinEngine.FInvalidateRect(WinHandle, False);
Delphi-Quellcode:
Die Kommentierten zeilen sind zum Testen und werden eingeschaltet damit ich sehen kann ob der Rect Korrekt gesetzt ist.
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; Logischer weise natürlich anstelle von InvalidateRect. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz