ダブルバッファリング(だっけ?)をググると良いかも。

一般的(だと思ってる)な考え方として、Windows のイベントを処理する関数には 0.1 秒ルールってのがあったと思う。
時間(手間)の掛かる処理は別のところでやっておいて、それ系の関数はすぐに処理を終える(呼び出し元に返す)っての。
この場合は、描画は別のところでやっておいて OnPaint(仮) ではあらかじめ描いておいた絵をコピーして終わりにする。