• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

改变对话框控件的字体

发布: 2007-7-04 20:47 | 作者: admin | 来源:  网友评论 | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网 李玉存

  在应用VC++进行程序设计时,为了使界面美观,往往需要改变对话框控件中文本的字体及大小。


  问题的提出


  要改变对话框控制中文的字体及大小,可以采用多种方式,在基于资源模板的对话框中改变控件的字体更是一件很容易的事。点击对话框资源模板的属性页中的“字体”按钮,选择所需的字体即可改变对话框控制中文本的字体及大小,可是这种方法并非在任何时候都奏效。

  比如,我在程序中以插入ActiveX控件的方式做一个多页对话框时,AppWizard自动为每一页生成一个对话框资源模板,我在资源模板中建立一个静态文本控制并写上汉字,然后应用上述方法改变字体后,运行程序发现属性页中的文字并没有变为我所设置的字体,依然按系统默认的字体显示。


  解题思路


  用在程序中创建自定义字体,并重载OnSetFont()函数的方法无法改变字体及大小(后经过跟踪调试才发现,原来基类的OnSetFont()函数体是空的)。于是我想到用发送WM—SetFont消息的方法改变字体,终于大功告成!


  程序代码


  在对话框的类中增加两个public型变量:

  public:

  Logfont lf;

  CFont font;

  在OnInitDialog()函数中插入相关代码。

  lf.lfHeight=25; //字体高度

  lf.lfWidth=20; //字体宽度

  lf.lfEscapement=0;

  lf.lfOrientation=0;

  lf.lfWeight=400;

  lf.lfItalic=false;

  lf.lfUnderline=false;

  lf.lfCharSet=Default_Charset;

  lf.lfStrikeOut=False;

  lf.lfOutPrecision=Out_Default_Precis;

  lf.lfClipPrecision=Clip_Default_Precis;

  lf.lfQuality=Default_Quality ;

  lf.lfPitchAndFamily=Default_Pitch;

  strcpy( lf.lfFaceName,″ ″);

  font.CreateFontIndirect(&lf);

  SendMessageToDescendants

  (WM_SetFont,(WPapam)HFont (font ),

  Makelparam ( True ,0 )) ;  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网