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.