>>InvalidateRectによってWM_PAINTメッセージが発生するわけであって。

それは違うぞ。WM_PAINTイベントハンドラに描画のコードを書くと、そのプログラムを起動した段階ですでにウインドウに描画されているぞ。
つまりまだInvalidateRectは使ってないのにWM_PAINTメッセージが発生したことになるな。
だからInvalidateRectによってWM_PAINTメッセージが発生するというのは違うぞ。