P
Wo ist das Problem? Wenn Du vor dem Bewegen der Linie nur den Bereich der Linie in die Update-Region tust (mit InvalidateRect(), als RECT den Bereich der Linie angeben), wird auch nicht das Fenster komplett neu gezeichnet (vorausgesetzt, der WM_PAINT Handler fraegt seine Update-Region ordentlich ab und aktualisiert nur die Bereiche, die da rein passen).
Noch einfacher ist es, ein eigenes Control zu definieren (ueber RegisterClassEx(), eine entsprechende Fensterprozedur und CreateWindowEx()), das in WM_PAINT nix anderes macht als eine Linie zu zeichnen (kannste Dir sogar sparen wenn Du in WNDCLASSEX die Farbe der Linie als Hintergrundfarbe angibst). Dann brauchst Du nur noch MoveWindow() aufzurufen, um die Linie zu verschieben. Der Rest geht dann von alleine.