Probleme mit GetFont() -- SetFont()



  • Hallo,

    ich möchte gerne die Schriftart die auf meinem Dialog für Controls verwendet wird auch für die direkte Ausgabe über CDC::TextOut verwenden.

    Hierzu habe ich in OnInitDialog GetFont()->GetLogFont() von dem Dialog aufgerufen. Danach habe ich meine Schrift (MemberVar) mit CreateFontIndirect
    erzeugt.
    Das Problem:

    Die Schrift ist viel zu klein!!!

    Hat jemand eine Idee?



  • AnTri schrieb:

    Danach habe ich meine Schrift (MemberVar) mit CreateFontIndirect ...?

    Die Member wird ja wohl noch Eigenschaften haben, die man einstellen kann, oder bei CreateFont.. die entsprechenden Parameter ändern. Schon in der MSDN nachgeschaut? Zu CFont.Create() ist ne tolle Beschreibung drinnen.



  • Ja, die Beschreibung habe ich schon (mehrmals) gelesen.
    Ich brauche aber eine Schriftart die GENAU die gleiche Größe/Art hat wie die des Dialogs bzw. der anderen Steuerelemente...


  • Administrator

    Ich bin mir jetzt nicht sicher, aber es könnte natürlich daran liegen, dass ein Dialog Font im Format MM_TEXT gezeichnet wird. Und wenn du mit deinem CDC nicht in MM_TEXT zeichnest, sondern in einem anderen MapMode dann erscheint die Schrift zu klein. Du müsstest also LOGFONT::lfHeight skalieren. Doch wenn es so ist, dann glaube mir ist das der grösste SCH**** den man machen kann ...

    Deshalb mein Tipp:
    Such lieber mal danach welcher Font normalerweise für solche Steuerelemente verwendet wird. Dann kannst du ausserhalb deines Programms dir das mal vielleicht ausrechnen und anpassen. Und dann in deinem Programm als Konstanter Logfont eintragen. Wenn sich die Schrift allerdings verändert und du es dynamisch immer anpassen musst, dann wünsch ich dir viel Glück. Ich habe bei mir lieber ein paar hundert (wenn nicht tausend) Quellcode Zeilen inzwischen umgeschrieben, damit dies nicht passiert *g*

    Grüssli


Log in to reply