Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Установка шрифта.


Автор: iddqd 25.10.2006, 15:23
Устанавливаю шрифт вот так:
Код

{$R 'font.RES'}
{$R *.res}
var
  Res: TResourceStream;

begin
  Application.Initialize;
  Res := TResourceStream.Create(hInstance, 'FONT', Pchar('ANYOL1'));
  Res.SavetoFile('Code128.ttf');
  Res.Free;
  AddFontResource(PChar('Code128.ttf'));
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
  //DeleteFile('Code128.ttf');
  Application.CreateForm(TFormMain, FormMain);
  Application.CreateForm(TServerForm, ServerForm);
  Application.Run;

При этом после запуска приложения в списке доступных шрифтов он есть, но символы этим шрифтом писать невозможно.
Что не так?

PS. Если установить его по-человечески, то всё будет нормально. Но мне надо программно.

Автор: iddqd 25.10.2006, 16:14
Сделал вот так:
Код

function GetWinPath: string;
var
  WinDir: string;
  WindirP: PChar;
  Res: Cardinal;
begin
  WinDirP := StrAlloc(MAX_PATH);
  Res := GetWindowsDirectory(WinDirP, MAX_PATH);
  if Res > 0 then
    WinDir := StrPas(WinDirP);
  Result := WinDir;
end;

begin
  Application.Initialize;
  Res := TResourceStream.Create(hInstance, 'FONT', Pchar('ANYOL1'));
  Res.SavetoFile(ExtractFilePath(Application.ExeName) + 'code128.TTF');
  Res.Free;
  CopyFile(PCHar(ExtractFilePath(Application.ExeName) + 'code128.TTF'), PCHar(GetWinPath + '\Fonts\code128.TTF'), true);
  AddFontResource(PChar(ExtractFilePath(Application.ExeName) + 'code128.TTF'));
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
  DeleteFile('code128.TTF');

Теперь шрифт появляется в Панели задач->Шрифты, но результат прежний :\

Автор: Yanis 1.11.2006, 14:06
iddqd
Тебе нужно инсталировать шрифт на время работы своей программы, что бы в ней писать этим шрифтом? Или тебе нужно установить шрифт в систему, что бы он был доступен всем приложениям?

Автор: xpby 25.3.2011, 10:42
и как установить шрифт в систему, что бы он был доступен всем приложениям и был в папке \windows\fonts?

спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)