投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/12/30 11:04:24
> Do Until rs.EOF
>   f1 = (50 - rs!緯度) / 20 * 15000
>   f2 = (rs!経度 - 120) / 30 * 15000
>   i = i + 1
>   hPenPrev = SelectObject(MyDC1, hPen)
>   hBrPrev = SelectObject(MyDC1, hBr)
>   Rectangle MyDC1, f2, f1, f2 + 3, f1 + 3
>   SelectObject MyDC1, hPenPrev
>   SelectObject MyDC1, hBrPrev
>   rs.MoveNext
> Loop

無意味な変数 i が残っているのは、前回の検証コードの名残ですかね。

さて…先にも指摘しましたが、ここの SelectObject は本当に必要ですか?
>>> オブジェクトの生成・破棄や SelectObject を、ループ内で毎回行う必要があるとは思えなかった

まず、矩形を一つ描くたびに、ペンとブラシを設定 & 復元している意図は何でしょうか。
座標値に応じて、別の色や太さで描きたいなどの理由が無いのであれば、
描画オブジェクトの割り当てや復元は、ループの前と後で処理するだけで良いと思います。