Announcement

Collapse
No announcement yet.

Bestimmung des eingestellten Systemfonts

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bestimmung des eingestellten Systemfonts

    Gibt es eine Win32-Api-Funktion, mit der man die im System eingestellten Fonts bestimmen kann (Sichtbar in "Eigenschaften der Anzeige", Reiter "Darstellung", z.B. Bedienelement "Dialogfeld"). Mein Programm soll möglichst die im System eingestellten Fonts verwenden.

    Danke, Bernhard

  • #2
    SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...) und tagNONCLIENTMETRICS Struktur.

    <pre>

    procedure AssignCaptionFont(Font: TFont);
    var
    NCM: TNonClientMetrics;
    begin
    NCM.cbSize := SizeOf(NCM);
    if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NCM, 0) then
    Font.Handle := CreateFontIndirect(NCM.lfCaptionFont);
    end;

    </pre>

    Gruß Hage

    Comment


    • #3
      THX,

      aber leider schaut unser Alphabet (A-Z) und die Sonderzeichen (ä, ö, ...) unter dem Default-Font eines chinesischen NT schrecklich aus (bzw. beinhaltet keine Sonderzeichen).

      Glücklicherweise beinhaltet der Arial-Font unter dem chinesichen NT auch chinesiche Zeichen. Werde halt für alle BS-Version < 2000 diesen Font verwenden und für 2000/XP Tahoma (hat ja nach Aktivierung der Sprachunterstützung alle benötigten Zeichen)

      Bernhar

      Comment


      • #4
        Hm, hat das noch was mit der Frage zu tun ? Auf jeden Fall ist der Weg über SystemParametersInfo() der Weg um an die standardmäßigen Fonts des Systems ranzukommen. Müsste demzufolge auch auf MultiByte Systemen funktionieren. <br>
        Einzigstes Problem könnte die in D4 eingeführte Property TFont.CharSet machen. Wird über TFont.Handle := XYZ; einem TFont ein Windows Font Handle zugewiesen dann wird desöfteren die Porperty CharSet falsch oder garnicht gesetzt. Z.B. beim Font "Windings" führt ein falscher Wert in CharSet zu Fehldarstellungen.<br>

        Gruß Hage

        Comment


        • #5
          Hallo Hagen,

          deine Lösung war schon korrekt, jedoch ist die Qualtiät des Systemfonts unter dem chinesichen NT bezüglich A-Z nicht das was man sicht wünscht (Schaut irgendwie Amateurhaft gezeichnet aus).

          Das Property Charset ist für mich uninteressant, da ich die Applikation komplett auf Unicode umgestellt habe

          Comment


          • #6
            Kann ich leider nicht beurteilen, da ich noch nie mir einem Chinesischen System gearbeitet habe. Vielleicht sind die Zeichen ja absichtlich so "unsauber" gezeichnet, da man sie dann vielleich besser erkennen kann.<br>
            Wie gesagt alles Spekulationen, da ich auf diesem Gebiet keine Ahnung habe.<br>

            Sag mal, was entwickelst Du für Software die den asiatischen Raum bedient ?

            Gruß hage

            Comment


            • #7
              Wir (es sind mehr Entwickler beteiligt) entwickeln im Bereich Service- und Ersatzteilgeschäft und habe in den letzten 1/2 Jahr unsere Anwendung auf Unicode umgestellt (geht mit entsprechenden Komponenten auch unter Win9x) und müssen jetzt noch entsprechende Tests unter BS-Versionen fahren welche nicht-Lateinische Zeichen verwenden.<br>
              Und da hier chinesisch mit seinen Zig-Tausend Zeichen der Härtetest ist und definitiv nicht mit Codepages abbildbar ist (abgesehen von der Minimalversion des Charset CHINESEBIG5), nehmen wir dies als Testplattform um auch für die anderen Sprachen relativ sicher zu sein.<br>

              Werde jedoch Deine Lösung doch irgendwie benötigen, da unter einem chinesichen Win95 der Arial-Font keine chinesichen Zeichen bietet :-( <br>
              Die Lösung ist doch nicht so einfach wie gedacht

              Comment

              Working...
              X