Autor Beitrag
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Fr 05.01.07 08:53 
Ich habe einen Font in eine Resource gepackt.
Muss ich nun immer bei Programmstart die Schrift aus der Resource in eine Datei kopieren und dann installieren oder kann man Schriften auch direkt aus der Resource installieren, wenn ja wie?

Danke!

und hier dsdt.info

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!


Zuletzt bearbeitet von Kroko am Fr 05.01.07 10:05, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 05.01.07 09:17 
Ich weiß ja nicht, wie du die installierst. Installierst du die als Schriftart im System oder benutzt du die nur in deiner Anwendung?

Wenn du die im System installierst, dann wird das nur über eine Datei gehen. In der eigenen Anwendung könnte es auch andere Möglichkeiten geben, aber da muss ich mal suchen. Irgendwo hatte ich dazu mal was gelesen...
Kroko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Fr 05.01.07 10:02 
nur in meiner Anwendung!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 05.01.07 12:21 
Ok, dann geht das mit AddFontMemResourceEx...
Ich hab mal ein Beispiel geschrieben. Obwohl mich etwas wundert, dass du die eine Funktion gefunden hast und nicht die andere. Die stehen in der MSDN-Referenz doch direkt beieinander...
Nein, mir ist klar, dass du dort nicht nachgesehen hast, das war ein Scherz. ;-)

Naja, jedenfalls hier das Beispiel als Exe:
www.buchmanager-berl...e=FontResExample.zip
Mirror:
www.sj-berlin.de/dow...2/FontResExample.zip

Und der Quelltext:
www.buchmanager-berl...ntResExample_src.zip
Mirror:
www.sj-berlin.de/dow...ntResExample_src.zip
Kroko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Fr 05.01.07 15:29 
Danke!

Für alle die später kommen hier die komplette Unit:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
{
  unit zum Installiern/Deinstallieren von Schriftarten
  ====================================================
  Name:        Kroko
  Version:     1.0
  Datum:       05.01.2007
  DV:          Turbo-Delphi
}

unit tdFont;

interface

{ registert Font-Datei }
function AddFont (const AFontFileName: String): Boolean;
{ löscht Font-Datei-Registrierung }
function DeleteFont (const AFontFileName: string): Boolean;

type
TFontResBuffer = record
    Buffer: PChar;
    Fraktur: THandle;
    Size: Integer;
  end;

{ registriert Font aus Resource }
function AddFontFromRes (const ResName: PChar; var Buffer: TFontResBuffer): Boolean;
{ löscht Font aus Resource-Registrierung }
function DeleteFontFromRes (const Buffer: TFontResBuffer): Boolean;

implementation

uses
  Classes, Windows, Messages;

{----------------------}
{ registert Font-Datei }
{----------------------}
function AddFont (const AFontFileName: String): Boolean;
begin
  Result := AddFontResource(PChar(AFontFileName))<>0;
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
{---------------------------------}
{ löscht Font-Datei-Registrierung }
{---------------------------------}
function DeleteFont (const AFontFileName: String): Boolean;
begin
  Result := RemoveFontResource(PChar(AFontFileName));
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
{ registriert Font aus Resource }
function AddFontFromRes (const ResName: PChar; var Buffer: TFontResBuffer): Boolean;
var
  Res : TResourceStream;
  ResFontCount: DWord;
begin
  Res := TResourceStream.Create(hInstance, ResName, 'RT_FONT');
  try
    Buffer.Size := Res.Size + 1;
    Buffer.Buffer  := AllocMem(Buffer.Size);
    Res.Read(Buffer.Buffer^, Buffer.Size);
  finally
    Res.Free;
  end;
  ResFontCount := 1;
  Buffer.Fraktur := AddFontMemResourceEx(Buffer.Buffer, Buffer.Size, nil, @ResFontCount);
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
  Result := Buffer.Fraktur<>0;
end;
{----------------------------------------}
{ löscht Font aus Resource-Registrierung }
{----------------------------------------}
function DeleteFontFromRes (const Buffer: TFontResBuffer): Boolean;
begin
  FreeMem(Buffer.Buffer, Buffer.Size);
  Result := RemoveFontMemResourceEx(Buffer.Fraktur);
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;

end.

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 05.01.07 16:25 
user profile iconjaenicke hat folgendes geschrieben:
Ok, dann geht das mit AddFontMemResourceEx...
Ich hab mal ein Beispiel geschrieben. Obwohl mich etwas wundert, dass du die eine Funktion gefunden hast und nicht die andere. Die stehen in der MSDN-Referenz doch direkt beieinander...
Nein, mir ist klar, dass du dort nicht nachgesehen hast, das war ein Scherz. ;-)

Naja, jedenfalls hier das Beispiel als Exe:
www.buchmanager-berl...e=FontResExample.zip
Mirror:
www.sj-berlin.de/dow...2/FontResExample.zip

Und der Quelltext:
www.buchmanager-berl...ntResExample_src.zip
Mirror:
www.sj-berlin.de/dow...ntResExample_src.zip


Hallo,
Danke für den Hinweis, kann ich auch gut gebrauchen - bisher habe ich nichts in der Art gefunden, weil es in meiner SDK-Hilfe (die zu D7 mitgelieferte Version) AddFontMemResourceEx und Verwandte schlichtweg nicht gibt, nicht einmal als Suchbegriff.

Gruss Reinhard
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 05.01.07 16:29 
Ich würde dir empfehlen das PSDK von Microsoft herunterzuladen, da stehen die Befehle alle drin...
www.microsoft.com/do...A&displaylang=en
Lass dich vom Namen nicht täuschen, es geht nicht nur um Server 2003, das ist das richtige...

Ach so und mehrere tausend Zeilen Beispiele sind auch dabei...

// EDIT: Ich seh grade: Es sind ca. 1,1 Millionen Zeilen Beispiele...
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 05.01.07 16:39 
user profile iconjaenicke hat folgendes geschrieben:
Ich würde dir empfehlen das PSDK von Microsoft herunterzuladen, da stehen die Befehle alle drin...
www.microsoft.com/do...A&displaylang=en
Lass dich vom Namen nicht täuschen, es geht nicht nur um Server 2003, das ist das richtige...

Ach so und mehrere tausend Zeilen Beispiele sind auch dabei...

// EDIT: Ich seh grade: Es sind ca. 1,1 Millionen Zeilen Beispiele...


Hallo,

hab ich schon da, war aber bisher zu bequem zum Installieren - ich habe aber ja auch nicht damit gerechnet, dass in der Borlandversion schwarze Löcher auftauchen, schon deswegen, weil die ja selber nichts mehr dran machen.

Gruss Reinhard
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 06.01.07 18:52 
Nicht nur, dass manche Funktionen in dem von Borland gelieferten fehlen, das neue PSDK direkt von MS ist auch viel übersichtlicher (ist HTML Help) ;-)