Hallo,
wie wäre es damit: Du extrahierst den Font in eine temporäre Datei und registrierst ihn. Beim Beenden des Programms deregistrierst Du den Font wieder und löschst die Datei.
Hier dazu ein paar Code-Schnipsel:
Delphi-Quellcode:
function GetTempFile: WideString; // Temporären Dateinamen erzeugen
var
Buffer: WideString;
begin
SetLength(Buffer, MAX_PATH);
GetTempPathW(MAX_PATH - 1, PWideChar(Buffer));
GetTempFileNameW(PWideChar(Buffer), '', 0, PWideChar(Buffer));
Result := PWideChar(Buffer);
end;
procedure AddFontRes(const FileName: WideString);
begin
AddFontResourceW(PWideChar(FileName)); // Font registrieren
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // Alle benachrichtigen
end;
procedure RemoveFontRes(const FileName: WideString);
begin
if RemoveFontResourceW(PWideChar(FileName)) then // Font deregistrieren
begin
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // Alle benachrichtigen
DeleteFileW(PWideChar(FileName)); // Font löschen
end;
end;
Das Extrahieren aus der Ressource und das Speichern in eine Datei fehlt hier, ist aber mit TRessourceStream recht einfach.
Gruß
xaromz