Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

Как использовать нестандартный шрифт, не устанавливая его?   Найти похожие ветки 

 
workdisk450 ©   (2006-01-07 14:36) [0]

Я хочу использовать не стандартный шрифт в своей программе, но как заставить программу брать его из каталога этой программы, не устанавливая этот шрифт в систему.


 
Джо ©   (2006-01-07 14:37) [1]

AddFontResourceEx


 
Джо ©   (2006-01-07 14:37) [2]

Кстати, что такое "нестандартный"?


 
workdisk450 ©   (2006-01-07 14:41) [3]

“Нестандартный” я имела в виду тот шрифт который по умолчанию не установлен в системе,То есть любой другой шрифт.


 
VirEx ©   (2006-01-07 16:07) [4]

{1998-01-16
Функция загрузки и выгрузки шрифта.}
function LoadFont(sFontFileName: string; bLoadIt: boolean): boolean;
var
sFont, sAppDir, sFontRes: string;
begin
result := TRUE;

if bLoadIt then
begin
{Загрузка шрифта.}
if FileExists( sFontFileName ) then
begin
sFontRes := sFontFileName + #0;
if AddFontResource( @sFontRes[ 1 ] ) = 0 then
result := FALSE
else
SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
end;
end
else
begin
{Выгрузка шрифта.}
sFontRes := sFontFileName + #0;
result := RemoveFontResource( @sFontRes[1] );
SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
end;
end; {LoadFont}


 
workdisk450 ©   (2006-01-07 16:53) [5]

Функция AddFontResourceEx с параметром  FR_PRIVATE
устанавливает, что только процесс, который вызвал функцию AddFontResourceEx, может использовать этот шрифт в отличии от предложенной функции LoadFont которая дает доступ
к шрифту всем программам.
У меня есть одна проблема с AddFontResourceEx .
Когда путь к  файлу шрифта написан как аргумент функции в виде строки string AddFontResourceEx("C:\ProgramFiles\Borland\Delphi7\Projects\temp\cristal.TTF",FR_PRIVATE,nil);
то все работает, но когда я пытаюсь получить список файлов шрифтов из рабочей директории программы и загрузить их в “RunTime” следующим образом:

.
.
.
FilesListName:TstringList {содержит имена файлов шрифтов}
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var I:byte;
begin
for I:=0 to FileListName.count-1 do
  begin
  AddFontResourceEx("C:\ProgramFiles\Borland\Delphi7\Projects\temp\’ + FileListName.Strings[I] .TTF",FR_PRIVATE,nil); - Incompatible types : String and PansiChar.
End;
End;

То компилятор выдает ошибку о не соответствии типов. Incompatible types : String and PansiChar.
Скажите пожалуйста как можно решить эту проблему (проблему не соответствия типов)


 
VirEx ©   (2006-01-07 17:00) [6]

PChar это тот же string только в конце знак с кодом 0, (Char(0) или #0),

procedure TForm1.Button1Click(Sender: TObject);
var I:byte;
begin
for I:=0 to FileListName.count-1 do
 begin
 AddFontResourceEx(PChar("C:\ProgramFiles\Borland\Delphi7\Projects\temp\’ + FileListName.Strings[I] .TTF"),FR_PRIVATE,nil); - Incompatible types : String and PansiChar.
End;
End;

если будет ошибка то сделай переменную PChar, выдели ей память, заполни её значением и вставь в AddFontResourceEx


 
VirEx ©   (2006-01-07 17:05) [7]

блин, вот так (я думаю список файлов у тебя уже с расширением ttf):
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
for i:=0 to FileListName.count-1 do
begin
AddFontResourceEx(PChar("C:\ProgramFiles\Borland\Delphi7\Projects\temp\" + FileListName.Strings[i]),FR_PRIVATE,nil);
end;
end;


 
FH   (2006-03-16 17:49) [8]

Встречный вопрос:
А как потом получить имя файла шрифта по имени шрифта?



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
3-1145361925
OlegOren
2006-04-18 16:05
2006.06.11
проверка: доступна ли БД?


15-1147754201
mefodiy
2006-05-16 08:36
2006.06.11
Пропали закладки с компонентами из меню


4-1142506938
Woolen
2006-03-16 14:02
2006.06.11
Имя файла модуля


15-1148075340
Imbac
2006-05-20 01:49
2006.06.11
PHP


15-1147756182
Knight
2006-05-16 09:09
2006.06.11
Трабла с компом в сети...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский