WM_PAINT

::InvalidateRect()で無効領域を作成してもキューにメッセージがなくならないとWM_PAINTが発行されない
既に無効領域がある場合は無効領域が結合され、常に一つの無効領域のみが保持される

即時に再描画をさせたい場合は::UpdateWindow()を呼ぶと
すぐにWM_PAINTが発行される。

PAINTSTRUCT … 無効領域

-----------------------------

AfxRegisterWndClass()でブラシを指定すると
CWnd::OnPaint()でCPaintDC dc(this);を呼んだときに
背景がブラシで塗りつぶされてちらつきが生じる

ブラシを指定しなければ背景の塗りつぶしがおこなわれないためちらつかない

-----------------------------
void OnPaint()
{
PAINTSTRUCT ps;

::BeginPaint( GetSafeHwnd(), &ps );
{
    HDC hdc = ps.hdc;

    ::TextOut( hdc, 10, 10, text, lstrlen(text) );
}
::EndPaint( GetSafeHwnd(), &ps );
}

↓同じ処理

// CPaintDCクラス
// 構築時にCWnd::BeginPaint()関数を実行し、消滅時にCWnd::EndPaint()関数を実行する
// OnPaint()メッセージ処理メンバ関数(WM_PAINT)でのみ使います
void OnPaint()
{
CPaintDC dc(this);
{
    dc.TextOut( 10, 10, text, lstrlen(text) );
}
}
最終更新:2009年02月19日 10:56
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。