1.首先,要用到两个转换函数。是我在网上搜到的首位仁兄写的 ,我直接拿来用了
void StringToLogfont(CString &s_logfont,LOGFONT &lf)
{
sscanf( s_logfont,
"%ld,%ld,%ld,%ld,%ld,%u,%u,%u,%u,%u,%u,%u,%u,%s",
&lf.lfHeight,&lf.lfWidth,&lf.lfEscapement,&lf.lfOrientation,&lf.lfWeight,
&lf.lfItalic,&lf.lfUnderline,&lf.lfStrikeOut,&lf.lfCharSet,
&lf.lfOutPrecision,&lf.lfClipPrecision,&lf.lfQuality,&lf.lfPitchAndFamily,
lf.lfFaceName);
}
void LogfontToString(LOGFONT &lf,CString &s_logfont)
{
s_logfont.Format(
"%ld,%ld,%ld,%ld,%ld,%u,%u,%u,%u,%u,%u,%u,%u,%s",
lf.lfHeight,lf.lfWidth,lf.lfEscapement,lf.lfOrientation,lf.lfWeight,
lf.lfItalic,lf.lfUnderline,lf.lfStrikeOut,lf.lfCharSet,
lf.lfOutPrecision,lf.lfClipPrecision,lf.lfQuality,lf.lfPitchAndFamily,
lf.lfFaceName);
}
2.保存字体信息到文件
{//保存字体信息
LOGFONT lf;
m_Font.GetLogFont(&lf);//m_Font是我定义的一个CFont变量
CString str;
LogfontToString(lf, str);//CFont->LOGFONT->CString
int strLen = str.GetLength();
file.Write(& strLen, sizeof(int));//file是待写入的文件
file.Write(str, strLen);
}
3.从文件读取字体信息(该字体在文件中按步骤2保存)
{//载入字体信息
int strLen;
//读取我在文件中保存的CFont对象的长度(该对象已经被转为CString)
file.Read(& strLen, sizeof(int));//file是待读取的文件
char * pBuf = new char[strLen + 1];
file.Read(pBuf, strLen);
pBuf[strLen] = '\0';
CString str(pBuf);
delete [] pBuf;
LOGFONT lf;
StringToLogfont(str, lf);//CString->LOGFONT->CFont
m_Font.CreateFontIndirect(&lf);
}
发表于 @ 2007年04月11日 00:50:00|评论(loading...)|编辑