Wenn Du nur in den Client-Bereich des Fensters malst, d.h den
DC mit GetDC geholt hast, dann funktioniert Invalidate.
Wenn Du den
DC mit GetWindowDC holst, also auch auf NonClient-Bereiche malen kannst, dann funktioniert Invalidate nicht, dann musst Du Dein Fenster zwingen, seinen NC-Bereich neu zu malen:
SetWindowPos(Handle,0,0,0,0,0,SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER);
Gruß, teebee