软件注册站
热情软件屋

 
如何改变对话框中静态文本的字体大小
编号: QA000614    
建立日期: 1999年3月9日 最后修改日期: 2005年4月17日
所属类别: C/C++ - 标准控件
   
    vc++50
    Windows95
    如何改变对话框中静态文本的字体大小?
    (张永生)
   
    本解答采纳了skybuilder和jmpinto的建议。
    VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
    例子:
    1、改静态文体的ID,如:IDC_STATIC1
    2、添加一个Edit控件,建立一个关联的控件m_editControl。
    3、在OnInitDialog中添加如下代码:
     CFont * f;
    
f = new CFont;
    
f->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(f);
    
m_editControl.SetWindowText("问专家");
    
GetDlgItem(IDC_STATIC1)->SetFont(f);
    

    运行结果如下图所示,下载完整例子CtrlFont.zip
    

    需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样:
     CFont f;
     f.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(&f);
     m_editControl.SetWindowText("问专家");
     GetDlgItem(IDC_STATIC1)->SetFont(&f);
    运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
    非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 标准控件, screen, button, combo, checkbox, listbox

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio