Главная страница
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.05 c
3-58559
Рома
2003-08-27 14:20
2003.09.18
Подскажите пожалуйста как можно узнать структуру dbf?


7-58958
CKOTu
2003-07-07 10:16
2003.09.18
Как прочитать значение REG_MULTI_SZ?


1-58747
pirat
2003-09-06 10:34
2003.09.18
Глюк TLabel и TCheckBox на прозрачной форме :(


6-58797
Vorobyev Sergey
2003-07-08 14:21
2003.09.18
Сокеты. Широковещательный. Broadcast. Отправка данных


1-58622
Ozone
2003-09-08 10:17
2003.09.18
Работа с указателями