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));