• CreateFont函数为什么改变不了字体?该怎么解决


    CreateFont函数为什么改变不了字体?
    CFont   *   f;   
              f   =   new   CFont;   
              f-> CreateFont(30,   //   nHeight   
              0,   //   nWidth   
              0,   //   nEscapement   
              0,   //   nOrientation   
              FW_BOLD,   //   nWeight   
              FALSE,   //   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   
              GetDlgItem(IDC_STATIC1)-> SetFont(f); 

    为什么我把_T( "Arial "));   ,改为"宋体""楷体""黑体""隶书",都没有任何的变化呢?应该如何改变字体呢?

    [解决方法]

     

    不一定要定义成类变量: 

    CFont * f; 
    f = new CFont; //
    你的程序,内存泄漏了,就这句 
    f-> CreateFont(...); 
    GetDlgItem(IDC_STATIC1)-> SetFont(f); 
    f.Detch(); 
     //
    加上这句,让CFont与字体句柄(HFONT)分离,因为句柄已被GetDlgItem(IDC_STATIC1)使用了,要防止CFont析构HFONT 
    delete f; //
    加上这句,解决内存泄漏 

     

     

  • 相关阅读:
    一些常用的正则表达式
    ASP.net国际化页面可以选择输出语言
    SQL 2008 数据表导入到 ORACLE 10g
    转载 SQL Server 2008中增强的汇总技巧
    类似于行转列的一种需求
    第一次
    很奇怪的一个SQL 语句
    MS SQL 中 FULL JOIN 的用法
    [转载]网络编辑必知常识:什么是PV、UV和PR值 zz
    寒假学习2实验一Linux系统的安装和常用命令
  • 原文地址:https://www.cnblogs.com/time-is-life/p/7747919.html
Copyright © 2020-2023  润新知