CFont

CodeFatal

Erfahrenes Mitglied
Hallo,

ich spiel gerade etwas mit CFont Objekten.
Dabei steh ich nun vor folgendem Problem:

Ich möchte den Abstand zwischen zwei Zeilen ändern.
in der "LOGFONT Struktur" hab ich nix passendes gefunden.
In der "Textmetric Struktur" müsste das der Eintrag "tmExternalLeading" sein.
Soweit ich das verstanden habe bekomme ich die Textmetric aber nur heraus, wenn ich auch das dazugehörige CDC Objekt habe.

Ziel der ganzen Übung ist das ändern der Font in einem CTreeCtrl. Dazu möchte ich nur die zuverwendende Font anlegen und bei der entsprechenden Instanz anmelden.
Wie komm ich also an die Daten ohne jedes Objekt selbst zu zeichnen?
Alternative Vorschläge wären auch hilfreich.

Gruß
Michael
 
Schau' mal hier! Das sollte Dir weiterhelfen. Es geht zwar ursprünglich nur um die Textfarbe, aber den font kann man so auch ändern.
 
Danke für die Antwort,

so ganz weitergeholfen hat se mir nur nicht...
Soweit wie ich das verstehe muss ich doch da das CTreeCtrl anfassen und entsprechend zeichnen. Ich möchte im späteren Verlauf aber auch Elemente wie CListCtrl oder CStatic mit anderen Parametern für die Schrift versehn. Den Elementen kann man zwar eine Font die benutzt werden soll übergeben aber dann hab ich nur die elemente von Logfont zur verfügung... im aktuellen Fall möchte ich aber den Zeilenabstand ändern. Diesen Punkt habe ich aber noch nicht in der CFont Klasse gefunden.
Wie gesagt ich möchte nicht jedes Fenster Element anfassen und entsprechend erweitern...

Gibt es da noch ne Möglichkeit?

Gruß
 
Wenn Du mit 'anfassen' meinst, daß Du eine Klasse von CTreeCtrl ableiten mußt, um das dort zu implementieren, dann irrst du Dich. Das CTreeCtrl sendet die NM_CUSTOMDRAW-Nachricht an ihr Parent-Window. Dort mußt Du sie abfangen und kannst die Parameter ändern. Allerdings kannst du nur einen neuen Font setzen oder die Farben ändern. Das mit den Zeilenabständen könntest du dann wohl nur über die Schriftgröße machen.
Sorry, aber einen anderen Tip hab' ich nicht.
 
Genau meine Befürchtung ist das ich ALLE Elemente ableiten muss, da ich an die Zeilenhöhe nur komme, wenn ich Zugriff auf das CDC habe. zumindest sieht das so im Moment aus.
 
Die NM_CUSTOMDRAW-Nachricht wird für jedes Element des TreeCtrl an das Parent CDCgesendet. In der übergebenen NMCUSTOMDRAW-Struktur ist u.A. auch der HDC des TreeCtrl's. Wie Du damit den Zeilenabstand ändern kannst, weiß ich allerdings nicht.
 
Zurück