CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何在设置字体

楼主ma100()2005-05-01 17:56:37 在 VC/MFC / 基础类 提问

用CEDITVIEW建立了一个记事本查看程序,我想以fixedsys查看,该怎么办哪  
  我在CEDITVIEW的构造函数里,写   CreateFont(),再SetFont,就报错 问题点数:40、回复次数:8Top

1 楼howtotell(从何谈起)回复于 2005-05-01 21:48:41 得分 0

放到OnPaint里面如何?Top

2 楼42252343(大跃进的猪)回复于 2005-05-02 00:12:43 得分 0

报什么错   ??Top

3 楼ma100()回复于 2005-05-02 13:11:45 得分 0

CTxtView::CTxtView()  
  {  
   
     
     
  m_font->CreateFont(15,8,0,0,400,0,0,0,0,1,2,1,49,"Fixedsys");  
   
  SetFont(m_font);  
  }  
  //////  
  m_font   是CEDITVIEW的成员  
  报该内存不能为readTop

4 楼0011411(爱也许是假的,可是当时的快乐是真的。)回复于 2005-05-02 13:21:44 得分 40

 
          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);    
   
   
   
   
          需要注意的是,这里我们使用的是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消息,将建立的字体句柄赋值过去,就可以了。    
  Top

5 楼xianshiqi(日出西山)回复于 2005-05-02 13:39:15 得分 0

创建指针(对象),分配空间,选如内存,释放内存Top

6 楼42252343(大跃进的猪)回复于 2005-05-02 13:40:13 得分 0

m_font->CreateFont(15,8,0,0,400,0,0,0,0,1,2,1,49,"Fixedsys");  
   
  你之前没申请内存   应该先   new一下   或不要用指针直接  
  m_font.CreateFont(15,8,0,0,400,0,0,0,0,1,2,1,49,"Fixedsys");Top

7 楼ma100()回复于 2005-05-02 14:16:41 得分 0

CTxtView::CTxtView()  
  {  
   
     
     
  m_font.CreateFont(15,8,0,0,400,0,0,0,0,1,2,1,49,"Fixedsys");  
   
  SetFont(&m_font);  
  }  
  报debug错误Top

8 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2005-05-02 14:22:17 得分 0

原因很简单就是:不是视图设置字体,应该是视图中的edit设置字体.(CEDITVIEW其实是view和edit的结合体)  
  Top

相关问题

  • 如何在CListCtrl中设置字体?
  • 如何设置字体?
  • CListBox如何设置字体?
  • 在winform窗体中如何设置字体并获取字体,在线等!
  • 请教高手,【【在javascript中,如何设置style中的“字体大小”,“字体颜色”,“字体”??】】
  • 如何在使用ObjectARX对AutoCAD设置中文字体?
  • 在Dreamweaver UltraDev 4中如何设置字体?
  • 如何设置字体(在win98和win2000下统一了)
  • 如何在VB中设置页眉页脚的字体,大小?
  • 请教如何使用OWC在工作表中设置字体

关键词

  • 字体
  • 控件
  • 指针
  • 内存
  • createfont
  • ctxtview
  • setfont
  • fixedsys
  • cfont
  • ceditview

得分解答快速导航

  • 帖主:ma100
  • 0011411

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo