Einzelnen Beitrag anzeigen

Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#5

AW: Auflisten der TFontCharset eines bestimmten Fonts

  Alt 4. Mär 2012, 17:41
Hallo Luckie,

danke noch mal für deine Antwort, leider konnte ich mich nicht vorher dransetzen.
Die Familie hat mich daran gehindert.

Nichtsdestotrotz jetzt bin ich wieder dran.

Ich habe mal die Konstanten in der Unit Windows geprüft und die stimmen.

Dann bin ich hergegangen und habe die Strings in Ansistring gewandelt.

Delphi-Quellcode:
  TCharSetRec = packed record
    Name: Ansistring; [COLOR="Red"]<-- hier[/COLOR]
    ID: Integer
  end;


function EnumProc(const EnumLogFontEx: TEnumLogFontEx;
const NewTextMetricEx: TNewTextMetricEx;
VAR FontType: Integer;
         Strings: TStrings): Integer; stdcall;
var I: Integer;
         ID: Integer;
         S: AnsiString; [COLOR="Red"]<-- hier[/COLOR]
begin
     ID := EnumLogFontEx.elfLogFont.lfCharSet;
     S := Format('Unknown charset %d', [ID]);
     for I := 0 to NumCharSets - 1 do
       if CharSets[I].ID = ID then
       begin
         S := CharSets[I].Name;
         Break;
       end;
     Strings.Add(S);
     Result := 1
end;

und dann noch

procedure GetAvailableCharSets(const FaceName: AnsiString; CharSets: TStrings); [COLOR="Red"]<-- hier[/COLOR]
var DC: THandle;
          LogFont: TLogFontA;
begin
     DC := GetDC(GetDesktopWindow);
     if DC <> 0 then
     try
      FillChar(LogFont, SizeOf(LogFont), 0);
      Move(FaceName[1], LogFont.lfFaceName, Length(FaceName));
      LogFont.lfCharSet := DEFAULT_CHARSET;
      [COLOR="Red"]EnumFontFamiliesExA[/COLOR](DC, LogFont, @EnumProc, lParam(CharSets), 0);
     finally
      ReleaseDC(GetDesktopWindow, DC)
     end
end;
tja, leider ohne Erfolg. Ich setzte meinen Haltepunkt auf die 1. Zeile der EnumProc, aber ich komme einfach nicht da rein.
Wenn ich es richtig weiß, ist @EnumProc doch ein Zeiger auf die Funktion EnumProc.
Ich habe diese Technik noch nicht wirklich soweit verinnerlicht, dass ich sagen könnte, "ok, hab's kapiert"

vielleicht aber hast du nen Link auf ne gute Doku, zumindest lernen und begreifen möcht ich das schon mal, wenn ich's auch nicht gleich brauche.
Wolfgang
Grüße und Danke
Wolfgang
  Mit Zitat antworten Zitat