Вниз
Скачать: CL | DM;

AddFontMemResourceEx   Найти похожие ветки 

 
mrcat ©   (2003-07-09 15:17) [0]

Добрый день!
В программе необходимо грузить шрифты из *.dll Использую AddFontMemResourceEx для добавления ресурса шрифта. Проблема в том, после LoadFontResource шрифт в системе не появляется, хотя возвращаемое AddFontMemResourceEx значение больше 0 (В MSDN указано, что AddFontMemResourceEx возвращает хэндл добавленного шрифта если шрифт успешно добавлен, или 0 в случае ошибки). Может я неверно представляю работу функции? Помогите разобраться.

P.S. AddFontMemResourceEx включена начиная с W2k.

procedure TMyForm.LoadFontResource(const AFontName: string);

resourcestring
SResNotFound = "...";

var
hResFind,
hResFont,
hAddFont: THandle;
hResSize: Integer;
DesignVector: PDesignVector;

begin
New(DesignVector);
try
hResFind := FindResource(hInstance, PChar(AFontName), "FONT");
hResFont := LoadResource(hInstance, hResFind);
if (hResFind = 0) or (hResFont = 0) then
raise Exception.Create(SResNotFound);

hResSize := SizeOfResource(hInstance, hResFont);
hAddFont := AddFontMemResourceEx(Pointer(hResFont), hResSize, nil,
Pointer(DesignVector));
if hAddFont = 0 then
raise Exception.Create(SResNotFound)
else SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
finally
( DesignVector)
Добрый день!
В программе необходимо грузить шрифты из *.dll Использую AddFontMemResourceEx для добавления ресурса шрифта. Проблема в том, после LoadFontResource шрифт в системе не появляется, хотя возвращаемое AddFontMemResourceEx значение больше 0 (В MSDN указано, что AddFontMemResourceEx возвращает хэндл добавленного шрифта если шрифт успешно добавлен, или 0 в случае ошибки). Может я неверно представляю работу функции? Помогите разобраться.

P.S. AddFontMemResourceEx включена начиная с W2k.

procedure TMyForm.LoadFontResource(const AFontName: string);

resourcestring
SResNotFound = "...";

var
hResFind,
hResFont,
hAddFont: THandle;
hResSize: Integer;
DesignVector: PDesignVector;

begin
New(DesignVector);
try
hResFind := FindResource(hInstance, PChar(AFontName), "FONT");
hResFont := LoadResource(hInstance, hResFind);
if (hResFind = 0) or (hResFont = 0) then
raise Exception.Create(SResNotFound);

hResSize := SizeOfResource(hInstance, hResFont);
hAddFont := AddFontMemResourceEx(Pointer(hResFont), hResSize, nil,
Pointer(DesignVector));
if hAddFont = 0 then
raise Exception.Create(SResNotFound)
else SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
finally
Dispose(DesignVector);
end;
end;


 
mrcat ©   (2003-07-10 10:32) [1]

Удалено модератором
Примечание: Offtopic


 
mrcat ©   (2003-07-17 14:29) [2]

Дополнение

hResSize := SizeOfResource(hInstance, hResFont);

следует читать как:

hResSize := SizeOfResource(hInstance, hResFind);

кроме того, проверил GetLastError, возвращает: "Класс не существует." Ошибка: [1411].



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
14-58903
sagchat
2003-08-29 11:56
2003.09.18
The Bat


9-58505
GameBoy
2002-12-20 19:14
2003.09.18
Полупрозрачность


14-58919
Vlad Oshin
2003-08-28 10:29
2003.09.18
опытные программисты произведут отправку Вашего письма


4-58968
tipman
2003-07-17 10:12
2003.09.18
Вопрос по WaitForinputIdle...


1-58712
msdsn
2003-09-08 09:29
2003.09.18
Нажатие клавишь а форме




   Наверх