Включение шрифта как ресурс в EXE
|
Идет как-то Товарищ Комманд Ком по диску, смотрит по сторонам и удивляется: ветки у деревьев поломаны, файлы дефрагментированы, что не разберешь где какой, Командир Нортон в архив запихнут!!! Ну, пожалел его Комманд Ком, вытащил из архива и спрашивает:
- Кто ж это тебя так, бедненького?!!
А командир Нортон ему и отвечает:
- Какой ты, Товарищ Комманд Ком, добрый и заботливый... когда трезвый!!!
|
Включение шрифта в ваш EXE:
- Используйте ваш любимый текстовый редактор, создайте *.rc файл, описывающий
шрифт:
MY_FONT ANYOL1 "Bauhs93.ttf"
|
Первые два параметра могут быть любыми. Они будут использоваться в программе
позже.
- Затем для создания *.res файла используйте компилятор командной строки
BRCC32.EXE, поставляемый с Delphi. Если ваш файл на этапе 1 был назван
MyFont.rc, командная строка в сеансе DOS должна выглядеть так:
Программа добавит в компилируемый файл созданный ресурс .rc и создаст файл с
тем же именем, за исключением расширения, которое будет .res: MyFont.res
- В вашей программе добавьте директиву компилятора, чтобы включить вновь
созданный файл:
Правильным будет разместить его в секции реализации после строчки {$R *.DFM}.
- Добавьте процедуру создания файла из ресурса, делающим шрифт доступным для
использования. Пример:
procedure TForm1.FormCreate(Sender: TObject);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(hInstance, 'MY_FONT', Pchar('ANYOL1'));
Res.SavetoFile('Bauhs93.ttf');
Res.Free;
AddFontResource(PChar('Bauhs93.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
|
-
Теперь вы можете использовать данный шрифт в своем приложении:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Font.Name := 'Bauhaus 93';
end;
|
Предостережения:
Приведенный пример не предусматривает никакой проверки и защиты от возможных
ошибок.
Обратите внимание - имя файла НЕ такое же, как имя шрифта. Это допускает, что
вы знаете имя шрифта и имя его ttf-файла. Вы можете определить это, дважды
щелкнув на файле в окне Проводника.
Я рекомендую устанавливать файл шрифта в папку C:\WINDOWS\FONTS. Его легче
отыскать потом именно там.
Ваш вновь установленный шрифт может быть удален программным путем,
естественно, в случае, когда он никем не используется:
procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontResource(PChar("Bauhs93.ttf"))
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
|
Для получения дополнительной справки по функциям AddFontResource и
RemoveFontResource загляните в электронную справку по Win32.
|