我有一段代码大致如下:
   CClientDC dc(this)
   for(.......)
   {
       CFont font
       font.Create(........)
       dc.SelectObject(&font)
       dc.OutText(......)
       ....
       .....
       font.DeleteObject()
    }
程序运行期间,发现内存一直在增长,请教各位大虾这是为何?

解决方案 »

  1.   

    应该:
           CFont font
           font.Create(........)
           CFont* oldFont = dc.SelectObject(&font)  //!!!!!!!!
           dc.OutText(......)
           ....
           .....
           dc.SelectObject(oldFont);  //!!!!!!!!
           font.DeleteObject()否则
    font.DeleteObject() 不成功.
      

  2.   

    CClientDC dc(this)
       for(.......)
       {
           CFont font
           font.Create(........)
           dc.SelectObject(&font)
           dc.OutText(......)
           ....
           .....
           font.DeleteObject()
        }
     DeleteDC(dc);
      

  3.   

    CClientDC dc(this);
    CFont font;
    font.CreateFont(12,
    0,
    0,
    0,
    FW_NORMAL, 
    FALSE,     
    FALSE,     
    0,  
    ANSI_CHARSET,    
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,    
    DEFAULT_PITCH | FF_SWISS,
    "Arial");               
    for (.................)
    {
    CFont* def_font = dc.SelectObject(&font);
    dc.TextOut(5, 5, "Hello", 5);
    dc.SelectObject(def_font); }
    font.DeleteObject();