[Visual C++] MFC で OnPaint をオーバーライド

この記事は3年以上前に書かれた記事です。情報が古い可能性があります。

MFC の CWnd を継承したクラスでカスタム描画処理を書きたい場合は、OnPaint() (WM_PAINT のメッセージハンドラ) をオーバーライドするのだけど、これを派生クラス側でオーバーライドすると、既定の描画処理が動かなくなってしまう。

これは、例えば、既定の描画処理の後に、その上からカスタム描画したい、というような場合に困る。

そんなあなたに Default() メソッド。

void CCustomCtrl::OnPaint()
{
  //CPaintDC dc(this); // device context for painting
  // TODO: ここにメッセージ ハンドラー コードを追加します。
  // 描画メッセージで CProgressCtrl::OnPaint() を呼び出さないでください。
  Default();// ← これ!
  // この下にいろいろ描画処理をすれば、既定クラスが描画した上から
  // 自分の描画を書くことができる。
  CClientDC dc(this);
  CustomDraw(&dc);// 独自描画の実装。
}
タイトルとURLをコピーしました