По мере продолжения пошагового выполнения
}
}
По мере продолжения пошагового выполнения вы увидите, что
единственная строка кода, выполняемая внутри DoPaint, это:
if (CurrentPoint >= 0)
Затем управление возвращается в цикл сообщений, в котором
программа принимает следующее сообщение, WM_PAINT, и затем снова
уходит на цикл с WndProc и DoPaint. Подпрограмма DoPaint, безус-
ловно, что-то делает не так, и нужно сначала выяснить, что же она
должна делать на самом деле?
TDeb 3.0 #3-3 = 55 =
Анализ DoPaint
-----------------------------------------------------------------
Назначение данной подпрограммы состоит либо в рисовании все-
го экрана при первом вызове подпрограммы, либо в перерисовке об-
ласти экрана, текущего прямоугольника, если на экране было
что-либо нарисовано. Чтобы определить, было ли что-нибудь нарисо-
вано, DoPaint проверяет значение переменной Currentpoint, перво-
начально устанавливаемой в -1. (CurrentPoint указывает число на-
рисованных объектов). Если CurrentPoint имеет значение -1, то
есть значение, которое было установлено при запуске и рисовании
исходного экрана, то брать и перерисовывать содержимое текущего
прямоугольника нет необходимости, поэтому все коды внутри опера-
тора if опускается, и происходит возврат, а Windows перерисовыва-
ет все окно.
Если вы будете проверять значение CurrentPoint в окне
View¦Watches (Обзор¦Просмотр), то вы увидите, что оно остается
равным -1 при пошаговом прохождении программы. Это так и должно
быть, поскольку нарисовать что-либо вы не имели возможности.
Нахождение ошибки
-----------------------------------------------------------------
Теперь, если вы обратитесь к книге Чарльза Петцольда "Прог-