OnDraw() と OnPaint() はどう違うのか?

OnPaint()はWM_PAINTに対したハンドラで、OnDraw()はViewのOnPaint()からも呼ばれています。

CWndのOnPaint()のヘルプを覗いてみると、「ドキュメント/ビュー アプリケーションの
イメージのレンダリングの詳細については、CView::OnDraw の説明を参照してください。」と書いてあります。
OnDraw()は CViewのメンバ関数でダイアログベースでは OnDraw() は存在しません。
OnPaint()は CWndのメンバ関数となっています。
CViewのOnDrawのヘルプを覗いてみると
「フレームワークは、画面表示、印刷、および印刷プレビューを実行するためにこの関数を呼び出す」
と書いてあります。
OnPaint() はウィンドウの描画用で,OnDraw()はウィンドウ描画,印刷,印刷プレビュー
などに使うもののようです。

SDIやMDIアプリケーションの描画処理は OnDraw() で行い(印刷や印刷プレビューも)。
ダイアログベースでは OnPaint()で描画処理を行うようです。

また,WM_PAINT はプログラムからは直接呼んではいけないとのことです(どこかのサイトより)。
では,画面を更新するにはどうしたらよいのか?
CWnd::InvalidateRect() や CWnd::UpdateWindow() を使用します。

CViewの中で行われている事

void CView::OnPaint()
{
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
}

CDialogの中で行われている事

void CDialog::OnPaint()
{
    CPaintDC dc(this);
    if (PaintWindowlessControls(&dc)){
        return;
    }
    Default();
}