分享

MFC中字体设置

 erbiaoge 2014-07-03

         MFC提供了一个CFont类专门用来设置字体.这个类派生于CGdiObject类,CGdiObject类为各种Windows图形设备接口(GDI)对象,如位图、区域、画刷、画笔、调色板、字体等提供了一些基本类。我们不会直接构造一个CGdiObject对象,而是使用某一个派生类如CPenCBrush创建。在构造了一个CFont对象后,还必须利用该类提供的几个初始化函数(CreateFont\CreateFontIndirect\CreatePointFont\CreatePointFontIndirect)之一对该对象进行初始化,然后才能使用这个对象,这些初始化函数主要是将CFont这个C++对象与字体资源关联起来.CreatePointFont声明:

BOOL CreatePointFont(int nPointSize,LPCTSTR lpszFaceName.CDC *pDC=NULL);nPointSize:设置将要创建字体的高度,单位是一个点的十分之一.pDC是一个CDC对象的指针,用来把nPointSize中指定的高度转换为逻辑单位.如果其值为空,就使用一个屏幕设备描述表完成这种转换.与其它GDI对象一样,当创建一个字体对象并将其初始化后,还必须将其选入设备描述表才能使用.在OnChar()响应函数中修改代码如下:

void CTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CFont font;
font.CreatePointFont(300,"华文行楷",NULL);
CFont *poldFont=dc.SelectObject(&font);//将创建的字体对象选入设备描述符,并返回先前的字体且予以保存
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if(0x0d==nChar)
{
     m_strLine.Empty();
m_ptOrigin.y+=tm.tmHeight;
}
else if(0x08==nChar)
{
   COLORREF clr=dc.SetTextColor(dc.GetBkColor());
   dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
   m_strLine=m_strLine.Left(m_strLine.GetLength()-1);
   dc.SetTextColor(clr);
}
else
{
m_strLine+=nChar;
}

CSize cs=dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x=m_ptOrigin.x+cs.cx;
pt.y=m_ptOrigin.y;
SetCaretPos(pt);
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
dc.SelectObject(poldFont);//把设备描述表中的字体恢复为先前的字体.
CView::OnChar(nChar, nRepCnt, nFlags);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多