Форум: "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