想更改CMFCPropertyGridProperty字体
代码如下CFont* myFont = new CFont;

myFont->CreateFont( 
15,          //   nHeight 
0,              //   nWidth 
0,              //   nEscapement 
0,              //   nOrientation 
FW_NORMAL,   //   nWeight 
FALSE,    //   bItalic 
FALSE,     //   bUnderline 
0,                                                   //   cStrikeOut 
GB2312_CHARSET,                             //   nCharSet 
OUT_DEFAULT_PRECIS,                 //   nOutPrecision 
CLIP_DEFAULT_PRECIS,               //   nClipPrecision 
CLEARTYPE_QUALITY,                       //   nQuality 
DEFAULT_PITCH   |   FF_SWISS,     //   nPitchAndFamily 
_T("宋体")); 
.......
        m_MFCPGCtrl.SetFont(myFont,true);....
myFont->Detach();
  delete myFont;
有new 有delete
字体设置成功 但最后提示有内存泄漏
请问怎么办

解决方案 »

  1.   

    myFont->Detach(); ?//Attach呢?
      

  2.   

    CFont* myFont = new CFont;
        
        myFont->CreateFont( 
            15,                                                         //   nHeight 
            0,                                                         //   nWidth 
            0,                                                         //   nEscapement 
            0,                                                         //   nOrientation 
            FW_NORMAL,                                                  //   nWeight 
            FALSE,                                                   //   bItalic 
            FALSE,                                                    //   bUnderline 
            0,                                                   //   cStrikeOut 
            GB2312_CHARSET,                             //   nCharSet 
            OUT_DEFAULT_PRECIS,                 //   nOutPrecision 
            CLIP_DEFAULT_PRECIS,               //   nClipPrecision 
            CLEARTYPE_QUALITY,                       //   nQuality 
            DEFAULT_PITCH   |   FF_SWISS,     //   nPitchAndFamily 
            _T("宋体")); 
    .......
    HFONT oldfont = m_MFCPGCtrl.GetFont();
            m_MFCPGCtrl.SetFont(myFont,true);....
    m_MFCPGCtrl.SetFont(oldfont,true);
        myFont->DeleteObject();
         delete myFont;
      

  3.   

        myFont->Detach();
    去掉此函数直接delete
      

  4.   

    干嘛一定要new CFont呢?你把CFont定义为类的成员变量不就得了
      

  5.   

    我把CFont myFont;换到类定义里了 可是还是一样……
      

  6.   

    vld报的泄漏  vs08的ide没报 
      

  7.   

    HFONT oldfont = m_MFCPGCtrl.GetFont();
      m_MFCPGCtrl.SetFont(myFont,true);....
    m_MFCPGCtrl.SetFont(oldfont,true);
      myFont->DeleteObject();
      delete myFont;
      

  8.   

    你为什么要要指针? 用对象不行吗? CFont newFont; newFont.CreateFont( 
            15,                                                         //   nHeight 
            0,                                                         //   nWidth 
            0,                                                         //   nEscapement 
            0,                                                         //   nOrientation 
            FW_NORMAL,                                                  //   nWeight 
            FALSE,                                                   //   bItalic 
            FALSE,                                                    //   bUnderline 
            0,                                                   //   cStrikeOut 
            GB2312_CHARSET,                             //   nCharSet 
            OUT_DEFAULT_PRECIS,                 //   nOutPrecision 
            CLIP_DEFAULT_PRECIS,               //   nClipPrecision 
            CLEARTYPE_QUALITY,                       //   nQuality 
            DEFAULT_PITCH   |   FF_SWISS,     //   nPitchAndFamily 
            _T("宋体"));  CFont *pOldFont = dc.SelectObject(&newFont);
            ...
            dc.TextOut(rect.left, rect.top-50,strtmpText);
      

  9.   

    啊 崩溃?  单步走走看,是那一句出错了   是不是没有恢复原来的对象就DELETE了?