“”当我们将一个字体选择到“设备描述表”中的时候,它会返回先前的字体。为此我们需要定义一个字体指针,用于保护先前的字体,“”,这句话的意思是不是意味着如果不保护冼前的字体,那先前的字体就会被丢掉,以后是我们设置的字体。事实证明如果不保护先前的字本,我们新设置的字体不起作用。
void CTest3View::OnDraw(CDC* pDC){
CTest3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFont font;
font.CreatePointFont(200,"黑体"); //创建字体大小、类型CFont *pFont; //创建一个指针,用于存放字体
pFont = pDC->SelectObject(&font);//把要显示的字体放入指针,pDC ->TextOut(0,0,"ok");//
pDC->SelectObject(&pFont);//重新将字体放入设备描述表中,以备下次使用
}
TEXTMETRIC它是一个数据结构:用来度量文本字体的各个属性。
TEXTMETRIC { // tm
LONG tmHeight; //字符高度
LONG tmAscent; //字符上部高度(基线以上)
LONG tmDescent; //字符下部高度(基线以下)
LONG tmInternalLeading; //由tmHeight定义的字符高度的顶部空间数目
LONG tmExternalLeading; //加在两行之间的空间数目
LONG tmAveCharWidth; //平均字符宽度
LONG tmMaxCharWidth; //最宽字符的宽度
LONG tmWeight; //字体的粗细轻重程度
LONG tmOverhang; //加入某些拼接字体上的附加高度
LONG tmDigitizedAspectX; //字体设计所针对的设备水平方向
LONG tmDigitizedAspectY; //字体设计所针对的设备垂直方向
BCHAR tmFirstChar; //为字体定义的第一个字符
BCHAR tmLastChar; //为字体定义的最后一个字符
BCHAR tmDefaultChar; //字体中所没有字符的替代字符
BCHAR tmBreakChar; //用于拆字的字符
BYTE tmItalic; //字体为斜体时非零
BYTE tmUnderlined; //字体为下划线时非零
BYTE tmStruckOut; //字体被删去时非零
BYTE tmPitchAndFamily; //字体间距(低4位)和族(高4位)
BYTE tmCharSet; //字体的字符集
} TEXTMETRIC;