Проблема утечки решена. Я сам виноват: использовал непроверенный кусок кода. Кому интересно расскажу.
У меня есть вызов MyCreateAndSelectFont. Так вот , эта функция выглядела так:
- Код: Выделить всё
Private Function MyCreateAndSelectFont(ByVal hdc As Long, sFontFace As String, ByVal lSize As Long, _
Optional ByVal bBold As Boolean = False, Optional ByVal bItalic As Boolean = False) As Long
Dim hFont As Long
lSize = lSize * GetDeviceCaps(GetDC(0), LOGPIXELSY) \ 72
hFont = CreateFont(-lSize, 0, 0, 0, IIf(bBold, FW_BOLD, FW_NORMAL), bItalic, False, False, 204, 0, 0, 0, 0, "Arial Narrow")
SelectObject hdc, hFont
MyCreateAndSelectFont = hFont
End Function
Строки GetDeviceCaps и CreateFont были взяты мной из чужого кода из Инета. Я не стал разбираться, что такое 72, а вместе с тем и что такое GetDC(0). А здесь-то ошибка и есть. Теперь я заменил этот непонятный GetDC(0) на мой hdc и все заработало.
Хотя все равно есть желание запустить какой-нибудь Bounce Checker и проверить, что кисти с перьями не улетают. Может кто знает простую прогу для этого? (хотя, уже не критично)