关于字体的安装(200分)

  • 主题发起人 主题发起人 caowei
  • 开始时间 开始时间
C

caowei

Unregistered / Unconfirmed
GUEST, unregistred user!
myfont.ttf在c:/my下,我用form的oncreate里面用addftonresource把这个ttf安装以后,
第一次程序运行时这个字体不起作用,必须退出再运行一次才起作用。
请问有没有什么好的解决办法啊?
 
AddFontResource(PChar('MIB.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
label1.Font.Name:='MeninBlue';

程序关闭时
RemoveFontResource(PChar('MIB.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

 
我就是这样做的。但是不对。
可以这样测试:原来系统里面没有mib字体,系统重新启动后,运行程序,label上面的
字体使用mib字体,显示不正确。退出程序,再次运行,字体就正确了....
也就是说,第一次安装不能使用。
 
你试一下将这个字体装到系统目录下的fonts目录下去,再删除这个字体,然后再试试
 
一样的结果啊....
 
那你把程序改成这样,这样再不行,就得看其它大虾了,呵

创建时
RemoveFontResource(PChar('MIB.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
AddFontResource(PChar('MIB.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
label1.Font.Name:='MeninBlue';

程序关闭时
RemoveFontResource(PChar('MIB.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
 
还是不行....仍然是退出再进去才可以起作用。
没有人碰到过这个问题吗?
 
在dpr文件里面修改:假设添加facelift字体:
uses //加上
windows, messages,
begin
AddFontResource(PChar('facelift.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Label1.Font.Name := 'Facelift';
Application.Run;
RemoveFontResource(PChar('facelift.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end.

这样进入窗体就能看到效果,测试通过。
 
直接把字体文件copy到windows下字体文件夹中。
 
多人接受答案了。
 
后退
顶部