Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: 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 вся ветка

Текущий архив: 2003.09.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
14-58836
Mp3User
2003-08-31 14:49
2003.09.18
Mixed CD to MP3 - убрать паузы


8-58789
Still Swamp
2003-05-20 15:00
2003.09.18
mciSendCommand в в трэде косячит.


1-58761
Sniffer
2003-09-06 12:39
2003.09.18
Изминение Security Attributes файла


14-58841
TButton
2003-08-31 19:34
2003.09.18
IE


14-58901
HolACost!
2003-08-28 18:24
2003.09.18
Почуму программист пошёл ленивый!