|
|
1
10
这里是Delphi版本:
要像这样使用:
|
|
|
2
2
我发现 this 与谷歌合作。我已经剪了&将相关代码粘贴到下面。
下面的C代码将从DLL资源加载字体,并在使用完毕后将其从内存中释放。 DWORD Count;
HMODULE Module = LoadLibrary("mylib.dll");
HRSRC Resource = FindResource(Module,MAKEINTRESOURCE(34),RT_FONT);
DWORD Length = SizeofResource(Module,Resource);
HGLOBAL Address = LoadResource(Module,Resource);
HANDLE Handle = AddFontMemResourceEx(Address,Length,0,&Count);
/* Use the font here... */
RemoveFontMemResourceEx(Handle);
FreeLibrary(Module);
|
|
|
3
1
下面是一些代码,可以从可执行文件中加载/使用字体(即,字体是作为资源嵌入的,而不是通常必须安装到Windows中的东西)。 请注意,该字体可用于 任何 我不知道你会觉得这有多有用,但我已经用过好几次了。我从未将字体放入dll(我更喜欢这种“嵌入exe”的方法),但不要认为它会改变太多东西。 procedure TForm1.FormCreate(Sender: TObject);
var
ResStream : TResourceStream;
sFileName : string;
begin
sFileName:=ExtractFilePath(Application.ExeName)+'SWISFONT.TTF';
ResStream:=nil;
try
ResStream:=TResourceStream.Create(hInstance, 'Swisfont', RT_RCDATA);
try
ResStream.SaveToFile(sFileName);
except
on E:EFCreateError Do ShowMessage(E.Message);
end;
finally
ResStream.Free;
end;
AddFontResource(PChar(sFileName));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
sFile:string;
begin
sFile:=ExtractFilePath(Application.ExeName)+'SWISFONT.TTF';
if FileExists(sFile) then
begin
RemoveFontResource(PChar(sFile));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
DeleteFile(sFile);
end;
end;
|
|
zeus · 如何在调整数组大小后保持指向动态数组的指针有效? 1 年前 |
|
|
SignalOne · 德尔福(FMX)循环参考 2 年前 |
|
|
Sascha Ott · 如何从线程调用线程的方法? 2 年前 |
|
|
user1580348 · 问题:如何在上次最小化后还原应用程序? 2 年前 |
|
tua · Delphi的TLinkLabel坏了吗? 2 年前 |
|
|
Frank.Wu · delphi:RGB到HSL不正确 2 年前 |