CFont m_font ;
m_font.CreateFont(100,   // nHeight
                      60,                       // nWidth
                      0,                        // nEscapement
                      0,                        // nOrientation
                      FW_EXTRABOLD,             // 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
    "Arial");                 // lpszFacename
GetDlgItem(IDC_STATIC)->SetFont( &m_font ) ;无论nHeight nWidth设多大,字体大小总是不变大,怎么回事?
於是我將
CFont m_font ;
将以上一行定义放到类定义里面去,作为类的成员变量。就可以了。我想知道爲什麽會這樣?有人說函数执行完后m_font立刻析購了。請問執行setfont(&m_font)怎麽會析購呢?

解决方案 »

  1.   

    这个我遇到过,你用的是临时变量,只设置一次,在以后使用时就不存在了,用指针把,窗体在刷新自己时要字体的,
    CFont* m_font = new CFont() ;
    m_font->CreateFont(100,   // nHeight
                          60,                       // nWidth
                          0,                        // nEscapement
                          0,                        // nOrientation
                          FW_EXTRABOLD,             // 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
        "Arial");                 // lpszFacename
    GetDlgItem(IDC_STATIC)->SetFont( m_font ) ;
      

  2.   

    给窗口设置自己创建的字体,要求这个字体在这个窗口存活期间必须是一直存在的。你用临时变量,SetFont后这个字体就不存在了。
      

  3.   

    HFONT m_Font;
     m_Font = CreateFont(
       11,// nHeight
       0,// nWidth
       0,// nEscapement
       0,// nOrientation
       FW_NORMAL,// nWeight
       FALSE,// bItalic
       FALSE,// bUnderline
       FALSE,// cStrikeOut
       ANSI_CHARSET,// nCharSet
       OUT_DEFAULT_PRECIS,// nOutPrecision
       CLIP_DEFAULT_PRECIS,// nClipPrecision
       ANTIALIASED_QUALITY,// nQuality
       DEFAULT_PITCH | FF_SWISS,// nPitchAndFamily
       _T("Courier"));// lpszFacename::SendMessage(::GetDlgItem(m_hWnd,IDC_VIEWEDIT),WM_SETFONT,(WPARAM)m_Font,MAKELPARAM(TRUE,   0));