OnDrawとOnPaintの違い – プログラミング – Home

通知
すべてクリア

OnDrawとOnPaintの違い


中村
 中村
(@中村)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

はじめまして、中村と申します。

MFCのOnDrawとOnPaintの違いがわからないのですが、
どのように使い分ければよいのでしょうか?


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

CView::OnDraw()
CWnd::OnPaint() or CDialog::OnPaint()

というのが違いです
OnDraw() は CView にしかありません
OnPaint() は WM_PAINT に対する応答関数です
CView では OnPaint() の中から OnDraw() を呼び出すようにしています
OnDraw() は画面描画と印刷とのそれぞれの目的に集中したコードが
かけるということが重要でしょう


返信引用
横から
 横から
(@横から)
ゲスト
結合: 17年前
投稿: 2
 

>CView では OnPaint() の中から OnDraw() を呼び出すようにしています

CViewのOnDraw()は、CWnd or CDialogのOnPaint()から呼ばれるの間違いでは?

↑の日本語では、CViewにOnPaint()が入ってるという日本語になりますよ。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

俺的には気にしない。
間違えと思わない。
実際に実行されるのがそうであっても。


返信引用
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

>CViewのOnDraw()は、CWnd or CDialogのOnPaint()から呼ばれるの間違いでは?

なぜ、 CView::OnDraw() を CDialog;;OnPaint() から呼ぶことになるのでしょうか?

>↑の日本語では、CViewにOnPaint()が入ってるという日本語になりますよ。
日本語という表現を選ばれた意図が分かりかねます
CView に OnPaint() が入っていることが間違っているもしくは誤解を招くと
おっしゃりたいということですか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

コード見てないから正しいところはわかりませんけども、CViewはOnPaintをオーバーラ
イドしてないということですかな?
だとすれば、揚げ足取り以上のものではないかと。

で、違いですが。
OnPaint は WM_PAINT に対応するメッセージハンドラであり、低レベルなものです。
ディスプレイに対する描画にしか利用できません。
一方、OnDraw は、(それなりのコードを書けば)画面表示、印刷、印刷プレビューのす
べてに利用できます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました