加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2010-03-25 17:02:21)
标签:

it

分类: c++&OSG

 

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

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

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

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

 

  1. CFont f;   
  2. 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("合肥工业大学电气06-3班");   
  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("合肥工业大学电气06-3班");   
  20. GetDlgItem_r(IDC_STATIC1)->SetFont(&f);  

 

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

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有