• ベストアンサー

OnPaintとOnDraw関数の違いについて

質問ばかりで申し訳ありませんが、タイトルの件どのように使い分ければよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • 405
  • ベストアンサー率50% (17/34)
回答No.1

OnPaint関数はWM_PAINTを処理するメッセージハンドラで、 OnDraw関数は、CViewクラスのメンバー関数です。(意味不明かも…) OnDraw関数は再描画の処理以外に印刷時にも呼ばれるようです。 ちなみに、CViewの中のOnPaint関数は以下のように定義されています。 void CView::OnPaint() { // standard paint routine CPaintDC dc(this); OnPrepareDC(&dc); OnDraw(&dc); } このように、CViewにWM_PAINTが送られて来た時にはOnDrawが呼ばれているので、 CViewクラスの派生クラスを利用する場合、OnDrawを使うのが良いと思います。

mk1234
質問者

お礼

いつも回答ありがとうございます。 せっかく教えていただきましたが、今一つどのように使い分ければ良いか分かりません。 いろいろなNET上のQ&Aを見ると、同じような初心者の疑問が載っていますが、やはり良く分かりませんでした。 とりあえず現状は、何も不自由していないので良しとして起きます。 只、OnPaintが呼ばれるときは、結局OnDrawを呼んでいると言うことがポイントかなって気もしますが良く分かりません。慣れればそのうち自然と分かってくるような気もするし・・・・

関連するQ&A