Darstellungsproblem Checkboxen ListView-Window



  • Hallo!

    Ich verwende ein WC_LISTVIEW-Window mit ImageList und LVS_EX_CHECKBOXES-Extension. Soweit so gut. Funktioniert auch alles soweit wie ich es moechte. Nun zu dem Darstellungsproblem: Die Groesse fuer die Checkbox verhaelt sich verschieden, wenn ich die "Windows-Appearance" aendere. D.h. unter Verwendung von "Window XP style" (siehe Bild http://s3.bilder-hosting.de/tbnl/2J2U3.gif) hat die Checkbox eine "normale" Groesse. Verwende ich aber nun "Windows Classic Style" werden die Checkboxen so gross wie in Bild http://s3.bilder-hosting.de/tbnl/2J786.gif. Unter Vista verhaelt es sich wie bei dem "Window XP style".

    Ich denke meine Frage ist klar, wie kann ich das aendern? So dass die Checkbox immer "normal" gross ist. Leider habe ich ueber Google/Foren nichts dazu gefunden..

    Danke!



  • Die Checkboxen sind ja nicht anders als Bitmaps oder Icons (welche weiss ich jetzt nicht genau) die von der jeweiligen Version der Common Controls an die entsprechende Stelle beim Zeichnen der Items gesetzt werden. Generell kannst du ja den Listview mit dem Flag LVS_OWNERDRAWFIXED im Ownerdrawmodus komplett selber Zeichnen und selber erstellte Checked und Uncheckt Bitmaps/Icons an den entsprechenden Stellen einfügen. Oder du fängst in deinem Eventhandler die Nachricht NM_CUSTOMDRAW ab, und zeichnest Custumdraw (hier auch wieder eigene Bitmaps/Icons verwenden), was ich persönlich als die einfachere Variante ansehe. Hierbei wird dir auch eine Flag CDIS_CHECKED übergeben die dir anzeigt ob der Item gecheckt ist oder nicht. In wieweit die neuen Icons nun deckungsgleich sein müssen mit der Position der ursprünglichen Icons, wegen des Mousclicks, weiß ich auch nicht so genau, aber da findet sich bestimmt noch jemand mit mehr Ahnung und kann dir einen Tip geben.


Anmelden zum Antworten