CEM>1. Нужно определиться, где будет отрисовка. WM_ERASEBKGND и/или WM_PAINT. Если бак рисуется родителем, то WM_ERASEBKGND return TRUE; При этом надо помнить, что WM_ERASEBKGND и WM_PAINT ставятся в очередь по разным событиям, по этим событиям и характеру рисования нужно выбирать, где рисовать. Мусор был в данном случае, потому что старое рисовалось поверх нового. Если отключать WM_ERASEBKGND, то нужно самому рисовать бак, например через FillRect(...); а потом выводить свой контент.
что значит бак рисуется родителем? Фон я рисую в событии paint.
Обязательно ли делать буферизацию? я читал что можно без нее
FillRectangle приводит вновь к мерцанию