Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2014, 13:38   #1
BARS1991
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 18
Вопрос Загрузка шрифтов из ресурса

Добрый день.
В программе требуется использовать нестандартные шрифты. Храню их в ресурсе *.res. Сами шрифты загружаю в программе без проблем, НО когда они сохранены на диске. Т.е. при старте программы создается папка, туда сохраняются шрифты а потом уже подгружаются в программу. При закрытии программы папка удаляется. А можно ли подгружать шрифты из потока, не сохраняя их на диск?

Насколько я понял, для этого предназначена функция:

Код:
HANDLE AddFontMemResourceEx(
  PVOID pbFont,       // ресурс шрифта
  DWORD cbFont,       // число байтов в ресурсе шрифта
  PVOID pdv,          // Зарезервировано. Должно быть 0.
  DWORD *pcFonts      // число установленных шрифтов
);
При ее выполнении вроде как добавляется шрифт, по крайней мере в pcFonts записывается 1, что должно указывать на один добавленный шрифт. Только не совсем понятно под каким именем он добавляется и как это узнать.
BARS1991 вне форума Ответить с цитированием
Старый 27.10.2014, 17:22   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Я думаю под тем же, что было и когда подгружался из папки.
waleri вне форума Ответить с цитированием
Старый 27.10.2014, 17:31   #3
BARS1991
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 18
По умолчанию

Да в том-то и дело, что это ничего не дает
BARS1991 вне форума Ответить с цитированием
Старый 27.10.2014, 21:31   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Цитата:
Сообщение от BARS1991 Посмотреть сообщение
Только не совсем понятно под каким именем он добавляется и как это узнать.
Вангую, что под внутренним именем, которое прописано в файле шрифта. Оно должно выводиться в стандартном просмотре шрифта.
Vapaamies вне форума Ответить с цитированием
Старый 27.10.2014, 21:57   #5
BARS1991
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 18
По умолчанию

Так его и прописываю
BARS1991 вне форума Ответить с цитированием
Старый 27.10.2014, 22:04   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Гм, гм. Я тут прочитал описание функции AddFontMemResourceEx в MSDN и укрепился во мнении, что добавляемый шрифт остается безымянным, нужно использовать возвращаемый описатель (handle), напрямую присваивая его ресурсам GDI и/или передавая в процедуры отрисовки.

Возможно, стоит даже своего наследника TFont зарядить, перекрыв конструктор и деструктор, чтобы правильно ресурсы GDI освобождать и не допускать их переполнения. Непросто всё это...
Vapaamies вне форума Ответить с цитированием
Старый 29.10.2014, 10:44   #7
BARS1991
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 18
По умолчанию

А можно подробнее или с кусочком кода?
BARS1991 вне форума Ответить с цитированием
Старый 29.10.2014, 10:49   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Насколько я понимаю:
HFONT hFont = (HFONT) AddFontMemResourceEx (...);
SelectObject(hDC, hFont);

Но я сомневаюсь в таком подходе.
По мне так надо сделать EnumFonts до и после установки и посмотреть разницу.
waleri вне форума Ответить с цитированием
Старый 29.10.2014, 11:12   #9
BARS1991
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 18
По умолчанию

Разницы нет. В списке шрифтов ничего не появляется
BARS1991 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка ресурса в RichEdit Volkogriz Общие вопросы Delphi 3 05.06.2014 08:57
Загрузка стороннего ресурса, node.js Naive Общие вопросы Web 0 29.11.2013 12:05
загрузка в Image JPEG-файл из ресурса casio23 Мультимедиа в Delphi 1 10.02.2012 02:23
loadimage и загрузка изображение из ресурса fate Общие вопросы Delphi 11 10.08.2011 10:47
Изменение шрифтов xTANATOSx Общие вопросы Delphi 3 07.11.2007 00:02