はじめまして、中村と申します。
MFCのOnDrawとOnPaintの違いがわからないのですが、
どのように使い分ければよいのでしょうか?
CView::OnDraw()
CWnd::OnPaint() or CDialog::OnPaint()
というのが違いです
OnDraw() は CView にしかありません
OnPaint() は WM_PAINT に対する応答関数です
CView では OnPaint() の中から OnDraw() を呼び出すようにしています
OnDraw() は画面描画と印刷とのそれぞれの目的に集中したコードが
かけるということが重要でしょう
>CView では OnPaint() の中から OnDraw() を呼び出すようにしています
CViewのOnDraw()は、CWnd or CDialogのOnPaint()から呼ばれるの間違いでは?
↑の日本語では、CViewにOnPaint()が入ってるという日本語になりますよ。
俺的には気にしない。
間違えと思わない。
実際に実行されるのがそうであっても。
>CViewのOnDraw()は、CWnd or CDialogのOnPaint()から呼ばれるの間違いでは?
なぜ、 CView::OnDraw() を CDialog;;OnPaint() から呼ぶことになるのでしょうか?
>↑の日本語では、CViewにOnPaint()が入ってるという日本語になりますよ。
日本語という表現を選ばれた意図が分かりかねます
CView に OnPaint() が入っていることが間違っているもしくは誤解を招くと
おっしゃりたいということですか?
コード見てないから正しいところはわかりませんけども、CViewはOnPaintをオーバーラ
イドしてないということですかな?
だとすれば、揚げ足取り以上のものではないかと。
で、違いですが。
OnPaint は WM_PAINT に対応するメッセージハンドラであり、低レベルなものです。
ディスプレイに対する描画にしか利用できません。
一方、OnDraw は、(それなりのコードを書けば)画面表示、印刷、印刷プレビューのす
べてに利用できます。