添加winods临时字体的方法

1.使用 AddFontResource 把您的字体送入 Windows 字体列表。  

  例如:AddFontResource("c:\XX.ttf");   
  这个函数在你的函数中只要调用一次就行了,这时系统的字体表中会增加该字体,注意这时加载的这个字体,在其他应用程序中也会看到,   
  所以记得要在退出程序调用   
  RemoveFontResource("c:\XX.ttf");   
  否则该字体会一直驻留在系统当前加载的字体表中。   
  如果你不想让其他应用程序在你加载了该字体文件后也能使用该字体,可以使用   
  AddFontResourceEx()当然对应的也有RemoveFontResource()函数。   
  其中有个参数可以配置成只有当前程序可以使用加载的字体,不过这个函数只支持2000/XP。 

2.使用 ::SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0) 广播通知。 

3.这时候开始,您的字体才可以随意使用。

接下来就是
font.CreateFontIndirect(&lf);  
oldfont = pDC->SelectObject(&font); 

LOGFONT   lf;
lf.lfHeight = 240;
lf.lfWidth = 120;
lf.lfEscapement = m_ang;
lf.lfOrientation = m_ang;
lf.lfWeight = 520; 
lf.lfItalic = 0; 
lf.lfUnderline = 0;
lf.lfStrikeOut = 0; 
lf.lfCharSet = GB2312_CHARSET; 
lf.lfOutPrecision = 0; 
lf.lfClipPrecision = CLIP_STROKE_PRECIS;
lf.lfQuality = 0;
lf.lfPitchAndFamily = 0; 
strcpy(lf.lfFaceName, "字体名"); 
font.CreateFontIndirect(&lf);
oldfont = pDC->SelectObject(&font); 
永久安装使用,类似下面的代码:     
CString sSourceDir = "D:\\TT6\\ "; //.TTF file name.     
CString sFontFileName = "TT6.TTF ";//Font description (as it will appear in Control Panel).     
CString sFontName = "金梅粗圓體(TrueType) ";     
TCHAR sWinDir [MAX_PATH];     
GetWindowsDirectory(sWinDir,MAX_PATH);     
CString sFontDir(sWinDir);     
sFontDir += "\\Fonts\\ ";     
CString sFOTFile = sFontDir;     
sFOTFile += (sFontFileName.Left(sFontFileName.GetLength()-4) + ".FOT ");     
CopyFile((sSourceDir + sFontFileName),(sFontDir + sFontFileName),FALSE);     
BOOL Result;     
Result = CreateScalableFontResource(0, sFOTFile, sFontFileName, sFontDir);     
Result = AddFontResource(sFOTFile);     
HKEY phkResult;     
DWORD RegResult;         
LONG Rlt = RegCreateKeyEx(HKEY_LOCAL_MACHINE,     
                          "SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Fonts ", 0, "REG_SZ ",     
                          0, KEY_WRITE, 0, &phkResult, &RegResult);     
if(Rlt != ERROR_SUCCESS)     
 {     
   AfxMessageBox( "Create Key Failed! ");     
 }     
                          
RegSetValueEx(phkResult, sFontName, 0, REG_SZ, 
              (CONST BYTE* )((LPCTSTR)sFontFileName), sFontFileName.GetLength());     
RegCloseKey(phkResult);     
::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);     
DeleteFile((sFontDir + sFontFileName));   
 

4.使用 RemoveFontResource 从 Windows 字体列表删除您的字体。  

5.::SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0) 再通知一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值