Значение 204 было задано в
Это является причиной то-
го, что не вызывалась виртуальная функция - прикладная программа
искала идентификатор CM_FIRST + 204, а его действительным значе-
нием было CM_FIRST + 104.
Значение 204 было задано в определении файла TDODEMO.RC.
Данной ошибки можно было бы избежать, используя для меню тот же
идентификатор, что и в файле заголовка, и поместив оператор
#INCLUDE для этого файла заголовка в начало файла .RC. Вместо
TDeb 3.0 #3-3 = 77 =
этого значения были использованы в определении меню. При этом от-
ветственность за перекрестную проверку значений возлагается на
программиста.
Если вы отредактируете TDODEMOB.H измените CM_BLACK на 204,
то выбор черного пера будет работать корректно. Когда вы сделаете
это изменение, описание констант в начале программы должно быть
следующим:
#define PenWidth 1
#define MenuID 100
#define IconID 100
#define CM_RED 101
#define CM_GREEN 102
#define CM_BLUE 103
#define CM_CLACK 204
TDeb 3.0 #3-3 = 78 =
Проверка исправления
-----------------------------------------------------------------
Запустите ColorScribble и выйдите оттуда, затем выйдите в
TDW. Когда вы вернетесь в Borland C++, загрузите файл заголовка
TDODEMOB.H, измените определение константы CM_BLACK, затем пере-
компилируйте программу (проект) и запустите ее по TDW.
Теперь когда вы рисуете в окне, то можете заметить другую
проблему. Если при рисовании вы смещаете "мышь" за пределы окна,
то при возврате в окно в другом месте вы увидите, что программа