![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AddFontMemResourceEx
mrcat © (2003-07-09 15:17:00)Добрый день!
В программе необходимо грузить шрифты из *.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-17 14:29:00) [1]
Дополнение
hResSize := SizeOfResource(hInstance, hResFont);
следует читать как:
hResSize := SizeOfResource(hInstance, hResFind);
кроме того, проверилGetLastError, возвращает: "Класс не существует." Ошибка: [1411].
mrcat (2003-07-10 10:32:00) [2]
Удалено модератором
Примечание: Offtopic