绘制时调用Draw_Axis_xyLebal(&me)造成内存每秒4K的增加-解决方法

绘制时调用Draw_Axis_xyLebal(&me)造成内存每秒4K的增加-
   
   在调用Draw_Axis_xyLebal(&me)时在任务管理器中内存大概每秒4K的增加,注释掉这个函数就不会增加了,查看Draw_Axis_xyLebal(&me)之后也没发现那里资源泄露了,请各位大神看看那里出问题了。



//绘画横纵坐标的文本数,如默认为数据轴和时间轴

void CDataShow::OnPaint() 
{

CPaintDC dc(this); // device context for painting

m_High=(m_dataRect.right-m_dataRect.left);
m_Low=0;
m_Top=(-m_dataRect.top+m_dataRect.bottom-2*h);
m_Bottom=0;
m_dNum=(m_High - m_Low)/10;
m_dnum_top_bottom=(m_Top - m_Bottom)/10;

//CDC *pDC;
//pDC=GetDC();

GetClientRect(m_frameRect);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, m_frameRect.Width(), m_frameRect.Height());//生成空间的内存位图
CDC me;
me.CreateCompatibleDC(NULL);//生成内存cd
me.SelectObject(&bitmap);

me.SetBkMode(TRANSPARENT);//设置透明字体
me.SetTextColor(RGB(255,0,0));

bitmap.DeleteObject();
////////////////////////添加绘图函数

Draw_Axis_xyLebal(&me); //////就是这一句,调用了就造成内存泄露

    
///////////////////////////////////////////////////////////////////////////
me.SetROP2(R2_WHITE);
dc.BitBlt(0, 0, m_frameRect.Width(), m_frameRect.Height(), &me, 0, 0, SRCCOPY);//拷备

bitmap.DeleteObject();
me.DeleteDC();
//pDC->DeleteDC();

// Do not call CStatic::OnPaint() for painting messages
}

void CDataShow::Draw_Axis_xyLebal(CDC *pdc)
{

SetDataRect();

CFont* pFont = pdc->GetCurrentFont();//CFont类封装了一个Windows图形设备接口(GDI)字体,并为操作字体提供了成员函数。
LOGFONT logFont ;//在Windows内部,字体是以一个名为LOGFONT的结构来表示
pFont->GetLogFont(&logFont);
logFont.lfEscapement = 900 ;//900/10 = 90 //lfEscapement:以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。
HFONT   hFont=CreateFontIndirect(&logFont); //该函数创建一种在指定结构定义其特性的逻辑字体 

   ///////////////x轴文字输出/////// /
pdc->TextOut((m_dataRect.left+m_dataRect.right)/2-4*m_sAxis_xstr.GetLength(),m_pOrth.y+h+20,m_sAxis_xstr);
////////////////////y轴文字输出//////
pdc->SelectObject(hFont);
    pdc->TextOut(m_pOrth.x+5,(m_dataRect.bottom+m_dataRect.top)/2.5+4*m_sAxis_ystr.GetLength(),m_sAxis_ystr);


DeleteObject(hFont);
pdc->SelectObject(pFont);
pFont->DeleteObject();

// delete hFont;

}

------解决方案--------------------


void CDataShow::Draw_Axis_xyLebal(CDC *pdc)
{

SetDataRect();

//CFont* pFont = pdc->GetCurrentFont();//CFont类封装了一个Windows图形设备接口(GDI)字体,并为操作字体提供了成员函数。
LOGFONT logFont ;//在Windows内部,字体是以一个名为LOGFONT的结构来表示
pFont->GetLogFont(&logFont);
logFont.lfEscapement = 900 ;//900/10 = 90 //lfEscapement:以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。
HFONT   hFont=CreateFontIndirect(&logFont); //该函数创建一种在指定结构定义其特性的逻辑字体 

   ///////////////x轴文字输出/////// /
pdc->TextOut((m_dataRect.left+m_dataRect.right)/2-4*m_sAxis_xstr.GetLength(),m_pOrth.y+h+20,m_sAxis_xstr);
////////////////////y轴文字输出//////
HFONT hOld=pdc->SelectObject(hFont);
    pdc->TextOut(m_pOrth.x+5,(m_dataRect.bottom+m_dataRect.top)/2.5+4*m_sAxis_ystr.GetLength(),m_sAxis_ystr);

hFont=pdc->SelectObject(hOld);//删除之前应该先选出

DeleteObject(hFont);

//pdc->SelectObject(pFont);
//pFont->DeleteObject();

// delete hFont;

}

------解决方案--------------------
主要是 “hFont=pdc->SelectObject(hOld);//删除之前应该先选出”
不选出 是 删除 不了的。