質問です。
下のようなダブルバッファリングするようなプログラムを作ったのですが、どうもうまくいきません
いろいろやってみたのですがよくわかりません。
どうすれば、うまく動くようになるでしょうか?

症状 : うまく転送されていない、とおもう。(色を指定してもメッシュがかかったような白黒になる、白、黒はうまくいった)
プログラム :
//省略
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDc = BeginPaint( hWnd , &ps );
HDC hbDc = CreateCompatibleDC( hDc );
HBITMAP hBitmap = CreateCompatibleBitmap( hbDc , 640 , 480 );
HBITMAP hOldBitmap = SelectObject( hbDc , hBitmap );
{
HBRUSH hBrush = CreateSolidBrush( RGB( 100 , 0 , 100 ) );
SelectObject( hbDc , hBrush );
PatBlt( hbDc , 0 , 0 , 640 , 480 , PATCOPY );
DeleteObject( SelectObject( hbDc , GetStockObject( WHITE_BRUSH ) ) );
}
SelectObject( hbDc , GetStockObject( BLACK_BRUSH ) );
Rectangle( hbDc , x , y , x + 100 , y + 100 );
BitBlt( hDc , 0 , 0 , 640 , 480 , hbDc , 0 , 0 , SRCCOPY );
DeleteObject( SelectObject( hbDc , hOldBitmap ) );
DeleteDC( hbDc );
EndPaint( hWnd , &ps );
break;
}
//省略
きゃらの座標(x,y)更新後、InvalidateRect( hWnd , NULL , FALSE)としてWM_PAINTメッセージを発生させています。