заменить последнюю строку DrawShape следующим
заменить последнюю строку DrawShape следующим кодом:
DeleteObject(SelectObject(hdc,saveObject));
Возможно, найденная ошибка является единственной причиной
проблем с памятью, однако желательно проверить и все остальные
места программы, связанные с рисованием объектов.
Отпускание левой кнопки
-----------------------------------------------------------------
При отпускании левой кнопки "мыши" BCWDEMOB рисует фигуру в
последний раз и оставляет ее на экране. Отпускание кнопки застав-
ляет Windows послать сообщение WM_LBUTTONUP в WndProc, которая
вызывает DoLButtonUp. Эта подпрограмма сохраняет текущий прямоу-
гольник из пользовательской области в массив текущей фигуры
thisShape, вызывает InvalidateRect для добавления области в об-
ласть обновления окна, а затем вызывает UpdateWindow, которая по-
сылает сообщение WM_PAINT прямо в главное окно. Эта подпрограмма
не использует глобальную память.
При выходе из DoLButtonUp сообщение WM_PAINT находится в
очереди и готово к обработке в WndProc.
TDeb 3.0 #3-3 = 62 =
Перерисовка экрана
-----------------------------------------------------------------
Когда WndProc получает сообщение WM_PAINT, она вызывает
DoPaint для перерисовки соответствующей области экрана (описана
выше в этом разделе). При перерисовке обновляемого прямоугольника
DoPaint вызывает две подпрограммы Windows, влияющие на глобальную
память: CreateCompatibleDC и SelectObject. В конце DoPaint вызы-
ваются DeleteDC и DeleteObject, которые освобождают выделенную в
начале подпрограммы память.
Заключение
-----------------------------------------------------------------
Так как вы рассмотрели все подпрограммы, вы можете быть уве-