VC++如何更改(edit)文本的字体大小

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

VC++如何更改文本的字体大小

VC++如何更改文本的字体大小

VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。如果要用VC++更改文本的字体大小,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
例子:

1、改静态文体的ID,如:IDC_STATIC1

2、添加一个Edit控件,建立一个关联的控件m_editControl。

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

  1. CFont * f;
  2. f = new CFont;
  3. f->CreateFont(
  4. 16, // nHeight
  5. 0, // nWidth
  6. 0, // nEscapement
  7. 0, // nOrientation
  8. FW_BOLD, // nWeight
  9. TRUE, // bItalic
  10. FALSE, // bUnderline
  11. 0, // cStrikeOut
  12. ANSI_CHARSET, // nCharSet
  13. OUT_DEFAULT_PRECIS, // nOutPrecision
  14. CLIP_DEFAULT_PRECIS, // nClipPrecision
  15. DEFAULT_QUALITY, // nQuality
  16. DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
  17. _T("Arial") // lpszFac
  18. );
  19. m_editControl.SetFont(f);
  20. m_editControl.SetWindowText("这是一个测试文件!");
  21. GetDlgItem_r(IDC_STATIC1)->SetFont(f);

需要注意的是这里使用的是CFont指针,而不是普通的CFont局部变量。

如果把程序改成下面这样:

  1. CFont f;
  2. f.CreateFont(
  3. 16, // nHeight
  4. 0, // nWidth
  5. 0, // nEscapement
  6. 0, // nOrientation
  7. FW_BOLD, // nWeight
  8. TRUE, // bItalic
  9. FALSE, // bUnderline
  10. 0, // cStrikeOut
  11. ANSI_CHARSET, // nCharSet
  12. OUT_DEFAULT_PRECIS, // nOutPrecision
  13. CLIP_DEFAULT_PRECIS, // nClipPrecision
  14. DEFAULT_QUALITY, // nQuality
  15. DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
  16. _T("Arial") // lpszFac
  17. );
  18. m_editControl.SetFont(&f);
  19. m_editControl.SetWindowText(" 这是一个测试文件! ");
  20. GetDlgItem_r(IDC_STATIC1)->SetFont(&f);

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

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

转载于:https://my.oschina.net/ypimgt/blog/61253

你可能感兴趣的:(VC++如何更改(edit)文本的字体大小)