最近做一個監(jiān)控界面,需要使用大字體刷新測量數(shù)據(jù),出現(xiàn)故障時需要將字色變?yōu)榧t色
我定義了一個CColorStatic類
在OnPaint中寫的輸出
CPaintDC dc(this);
CDC m_hdcMem;
CBitmap m_hBitmap;
if (m_hdcMem.CreateCompatibelDC(NULL) == 0)
{
m_hdcMem.DeleteDC();
return;
}
CRect rect;
GetClientRect(&rect);
if (m_hBitmap.CreateCompatibleBitmap(&dec, Rect.Width() + 1, rect.Height() + 1) == 0)
{
m_hBitmap.DeleteObject();
m_hdcMem.DeleteDC();
return;
}
CBitmap * m_hOldBMP = m_hdcMem.SelectObject(&m_hBitmap);
CString strText = _T("");
GetWindowText(strText);
....
m_hdcMem.FillRect(&rect, m_pBrush);//填充黑色
CFont * m_hOldFont = m_hdcMem.SelectObject(&m_font); //使用大字體
m_hdcMem.SetTextColor(m_rgbText);
m_hdcMem.SetBkMode(TRANSPARENT);
m_hdcMem.DrawText(strText, rect, nFormat);
//nFormat是設置文字左中右的,用的DWORD dwStyle = GetStyle()
dc.BitBlt(0, 0, rect.Width(), rect.Height(), &m_hdcMem, 0, 0, SRCCOPY);
m_hdcMem.SelectObject(m_hOldFont);
m_hdcMem.SelectObject(m_hOldBMP);
m_hBitmap.DeleteObject();
m_hdcMem.DeleteDC();
界面上有10個CColorStatic控件需要刷新,刷新頻率為1秒一次
發(fā)現(xiàn)程序運行后,開頭30秒左右內存使用一直沒問題,之后大約4秒左右
程序使用內存增加4K的樣子,時間久了之后,如果打開其他功能界面,
就會出現(xiàn)一些CColorStatic框變成了其他功能界面的圖形,且在也不能刷新了
在調試過程中試過將刷新的timer禁用,內存一直不會增長。
試過將BitBlt這一句注釋,發(fā)現(xiàn)內存也不會增長。。。。。!!!
現(xiàn)在就不知道是哪兒的問題了。
高手幫看看