zoukankan      html  css  js  c++  java
  • 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; //
    加上这句,解决内存泄漏 

     

     

  • 相关阅读:
    log4net 配置 一站式解决
    设计模式-职责链模式(ChainOfResponsibility)
    springboot+Kafka(生产者和消费者)
    springboot启动过程分析
    Eureka注册中心原理
    JDK8常量池整理
    第2章 Java内存区域与内存溢出异常
    第5章 数据库分库分表实例
    物理分页和内存分页-引用
    spring4体系架构
  • 原文地址:https://www.cnblogs.com/time-is-life/p/7747919.html
Copyright © 2011-2022 走看看