mfc 改变控件字体

来源:互联网 发布:有多少网络购物平台 编辑:程序博客网 时间:2024/04/28 18:14

1、建立基于对话框工程:My

2、添加控件:静态文本控件:IDC_STATIC1

编辑框控件:建立一关联变量CEdit  m_EditControl

3、在OnInitDialog中添加如下代码:

CFont * m_pFont;

     m_pFont = new CFont;

     m_pFont->CreateFont(16,            // nHeight

     0,           // nWidth

     0,           // nEscapement

     0,           // nOrientation

     FW_BOLD,     // nWeight

     TRUE,        // bItalic

     FALSE,       // bUnderline

     0,           // cStrikeOut

     ANSI_CHARSET,              // nCharSet

     OUT_DEFAULT_PRECIS,        // nOutPrecision

     CLIP_DEFAULT_PRECIS,       // nClipPrecision

     DEFAULT_QUALITY,           // nQuality

     DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

      _T("Arial"));              // lpszFac

     

     m_EditControl.SetFont(m_pFont,false);

     m_EditControl.SetWindowText("Hello!");

     GetDlgItem(IDC_STATIC1)->SetFont(m_pFont,false);

注:

1、

需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样:

CFont m_pFont;

运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont m_pFont就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。

2、

也可以定义CMyDlg类的成员变量:

CFont *m_pFont;

或CFont m_Font;

3、

若编辑框控件IDC_EDIT1未定义CEdit变量m_EditControl,可以如下调用:

CEdit* m_EditControl = (CEdit*)GetDlgItem(IDC_EIDT1);

m_EditControl->SetFont(m_pFont,false);

 

非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。

 

CreateFont()函数的MSDN翻译

函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。

函数原型:

HFONT CreateFont(int nHeight, 
                   int nWidth, 
                 int nEscapement, 
                 int nOrientation, 
                 int fnWeight, 
                 DWORD fdwltalic, 
                 DWORD fdwUnderline, 
                 DWORD fdwStrikeOut, 
                 DWORD fdwCharSet, 
                 DWORD fdwOutputPrecision, 
                 DWORD fdwClipPrecision, 
                 DWORD fdwQuality, 
                 DWORD fdwPitchAndFamily, 
                 LPCTSTR lpszFace);

nHeight是字体的高度。

nWidth是字体的宽度。

nEscapement是字体的倾斜角。

nOrientation是字体的倾斜角。

fnWeight是字体的粗细。

fdwItalic是字体是否斜体。

fdwbUnderline是字体是否有下划线。

fdwStrikeOut是字体是否有删除线。

fdwCharSet是字体使用的字符集。

fdwOutPrecision是指定如何选择合适的字体。

fdwClipPrecision是用来确定裁剪的精度。

fdwQuality是怎么样跟选择的字体相符合。

fdwPitchAndFamily是间距标志和属性标志。

lpszFacel是字体的名称。

 

原创粉丝点击