Для контрола на котором произошла инвалидность, WndProcBufferedDraw должно вызываться дважды: первый раз, понятно - это делает винда реагируя на Invalidate, второй раз это делают DoDrawDblBuffered и DoDrawChildrenDblBuffered через SendMessage
Это будет неправильно, если ДВА раза вместо одного это (WM_ERASEBKGND, WM_NCPAINT) отправится в default-обработку
Просто неправильно, и все.
Даже проверять не буду - вышестоящее соображение обладает более высоким приоритетом, чем функционирование каккого-то количества примеров.
Следствие простого профессионального принципа: из того что это работает сейчас вовсе НЕ СЛЕДУЕТ, что это будет работать всегда
Наша задача сегодня, чтобы это работало всегда. Это более сложно, чем заставить дышать какой-то конкретный код.
В принципе, это две разные профессии.
Аналог в электронике: цель у наладчика, рационализатора, радиолюбителя - оживить конкретное изделие
Вот они и пользуются методом тыка.
Цель у разработчика - чтобы это работало всегда (когда начнется выпуск, он уволится уже, и т.п.)
Вот поэтому у них и существует лозунг: встретил рационализатора - убей его (в командировку на объект-то им ездить приходится)

Это все не я придумал, естественно - на познание с нуля таких истин не всякой жизни хватит...