S>Скорее всего дело не в TestDraw. Если ты запускаешь TestDraw по таймеру, значит используется что-то вроде:
S>S>CDC* pDC=GetDC();
S>TestDraw(*pDC, hBitmap, rect);
S>ReleaseDC(pDC); // эта строка у тебя присутствует?
S>
S>Может ты просто не освобождаешь контекст?
Глядя на код TestDraw, я тоже думаю, вот уже в 10000 раз, что дело не в ней. Убедившись, что больше нигде, кроме как в ней, не используются ресурсы, снова и снова возвращаюсь к ней и опять смотрю на нее, но уже в 10001 раз. Смотрю, и плачу... Плачу, и смотрю...
Вызываю я ее по таймеру примерно так:
void CDlg::OnTimerEvent(UINT nIDEvent)
{
RedrawWindow(CRect(0, 0, 30, 30));
}
BOOL CDlg::OnEraseBckgnd(CDC* pDC)
{
CDlg::OnEraseBckgnd(pDc);
TestDraw(*pDC, m_bmb, CRect(0, 0, 30, 30));
return TRUE;
}