メインスレッドがBeginPaint()を実行して
サブスレッドがGetDC()を実行して
サブスレッドがGetDC()を実行しても
いいのでしょうか?

これらのAPIは、裏で排他処理をしていますか?

それともプログラマが排他処理をするべきですか?