MFC で OnPaint をオーバーライド

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をコピーしました