Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Временное Подключение Шрифтов через DLL в Приложениях на Delphi

Delphi , Синтаксис , Справочник по API-функциям

Вопрос временного подключения шрифтов в приложениях на Delphi может возникнуть в ситуациях, когда необходимо использовать определённый шрифт, доступный в ресурсах DLL, только в определённые моменты работы программы. Это может быть необходимо для выполнения специфических задач, таких как вывод текста в уникальном стиле, который не предусмотрен стандартным набором шрифтов операционной системы.

Решение проблемы

Для решения поставленной задачи можно использовать функцию AddFontMemResourceEx, которая позволяет временно добавить шрифт из памяти. Важно отметить, что шрифт должен быть предварительно добавлен в ресурсы DLL в формате, понятном для этой функции.

Пример кода на Object Pascal (Delphi)

procedure LoadFontFromDll(const DllName, FontName: PWideChar);
var
  DllHandle: HMODULE;
  ResHandle: HRSRC;
  ResSize, NbFontAdded: Cardinal;
  ResAddr: HGLOBAL;
begin
  DllHandle := LoadLibrary(DllName);
  if DllHandle = 0 then
    RaiseLastOSError;
  ResHandle := FindResource(DllHandle, FontName, RT_FONT);
  if ResHandle = 0 then
    RaiseLastOSError;
  ResAddr := LoadResource(DllHandle, ResHandle);
  if ResAddr = 0 then
    RaiseLastOSError;
  ResSize := SizeOfResource(DllHandle, ResSize);
  if ResSize = 0 then
    RaiseLastOSError;
  if 0 = AddFontMemResourceEx(Pointer(ResAddr), ResSize, nil, @NbFontAdded) then
    RaiseLastOSError;
end;

Данную процедуру можно использовать следующим образом:

var
  FontName: PChar;
  FontHandle: THandle;
...
  FontName := 'DEJAVUSANS';
  LoadFontFromDll('Project1.dll' , FontName);
  FontHandle := CreateFont(0, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
    FontName);
  if FontHandle = 0 then
    RaiseLastOSError;

Обработка после использования

После завершения использования шрифта, его необходимо освободить из памяти, используя функцию RemoveFontMemResourceEx. Также важно освободить библиотеку, используя FreeLibrary.

Важные замечания

Для корректной работы на системах, начиная с Vista, лучше использовать функцию AddFontResourceEx с флагом FR_PRIVATE, которая предназначена для частного использования в процессе.

Альтернативный подход

Также существует альтернативный подход, который заключается в временном сохранении шрифта в файл на диске, но этот метод может быть неудобен из-за ограничений, связанных с правами доступа в операционных системах, начиная с Vista.


В данной статье был рассмотрен вопрос временного подключения шрифтов через DLL в приложениях на Delphi, представлены примеры кода и рекомендации по его использованию.

Создано по материалам из источника по ссылке.

по временному подключению шрифтов через DLL в приложениях на Delphi


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-13 19:13:13/0.0036201477050781/1