Когда все или часть ваших окон устарели (они называются «недействительными»), цикл сообщений в итоге получит два сообщения: WM_ERASEBKGND и затем WM_PAINT. Типичный способ рисования для приложений Windows - рисовать все в обработчиках WM_ERASEBKGND и WM_PAINT. (Я не эксперт по MFC, но я считаю, что WM_PAINT соответствует OnDraw в MFC.)
Таким образом, нормальный способ справиться с этим - обработчик перемещения мыши записывает ход (как он это делает), а затем отмечает окно как недействительное. Это в конечном итоге приведет к рисованию линии. Однако возможна небольшая задержка, которая может вызвать мерцание. Задержка, вероятно, незначительна на современном компьютере (но Scribble старый). Существуют различные способы борьбы с мерцанием.
Автор Scribble, похоже, решил обработать задержку и мерцание, рисуя линию непосредственно в обработчике перемещения мыши вместо того, чтобы сделать окно недействительным и позволить OnDraw сделать это позже.
Недействительность является ключом. Вы удалили чертеж из OnMouseMove, чтобы линия там не рисовалась. Но нет ничего, что могло бы сказать Windows, что содержимое окна теперь устарело (недействительно), и поэтому оно не получает сообщение WM_PAINT, и OnDraw не вызывается. (Позже, когда вы делаете что-то вроде изменения размера или увеличения окна, делает его недействительным, вызывается OnDraw и неожиданно появляется строка.)
Если вы хотите удалить чертеж из OnMouseMove, вам придется заменить его вызовом InvalidateRect. Это скажет Windows, что окно должно быть перерисовано.