(GDI)

Może zacznę od kodu:

KOD1:

HDC hdcBufor;
HBITMAP hbmBuf, hbmOldBuf;

PAINTSTRUCT ps;

HDC hDC = NULL;
hDC = BeginPaint( m_hWnd, &ps );
	
	hdcBufor = CreateCompatibleDC( hDC );
	hbmBuf = CreateCompatibleBitmap( hDC, ps.rcPaint.right, ps.rcPaint.bottom );
	hbmOldBuf = ( HBITMAP ) SelectObject( hdcBufor, hbmBuf );

	RECT rc = ps.rcPaint;

	FillRect(hdcBufor, &rc, ( HBRUSH ) GetStockObject( WHITE_BRUSH ) );

	ObiektGraficzny item;
	item.draw( m_hWnd, hdcBufor );

	BitBlt ( hDC, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, hdcBufor, 0, 0, SRCCOPY );
	SelectObject( hdcBufor, hbmOldBuf );

	ReleaseDC( m_hWnd, hdcBufor );
	DeleteObject( hdcBufor );
	DeleteObject( hbmBuf );

EndPaint( m_hWnd, &ps );
ReleaseDC( m_hWnd, hDC );

KOD2 metoda ObiektGraficzny::draw(HWND hWnd, HDC hDC):

if ( m_bitmap != NULL )
{
	HDC hDCBitmap = CreateCompatibleDC( hDC );
	HBITMAP hbmOld = (HBITMAP)SelectObject( hDCBitmap, m_bitmap );

	HDC tmp = GetDC( hWnd );

	BitBlt( tmp, 50, 50, m_infoBitmap.bmWidth, m_infoBitmap.bmHeight, hDCBitmap, 0, 0, SRCCOPY );

	ReleaseDC( hWnd, tmp );

	SelectObject( hDCBitmap, hbmOld );
	DeleteDC( hDCBitmap );
}
	Rectangle( hDC, 10,10,100,100);

KOD3 w konsturktorze ObiektGraficzny:

m_bitmap = (HBITMAP)LoadImage( NULL, L"obrazek.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
GetObject( m_bitmap, sizeof(m_infoBitmap), &m_infoBitmap );

Teraz tak, KOD1 jest uruchamiany na zdarzenie WM_PAINT. Wszystko mi ładnie rysuje jak rysuje na hdcBufor, nawet prostokąt w metodzie draw. Jednak rysunek m_bitmap pojawia się na ułamek sekundy i znika przy ruszaniu myszki. (mam odświerzanie na zdarzeniu WM_MOUSEMOVE) jaka jest tego przyczyna? Dla jasności chciałbym aby ten obrazek byl narysowany i nie znikał ; ]. Tak jak Prostokąt.

-- rozwiązałem problem :D

błąd był w dwóch miejscach metody draw:

if ( m_bitmap != NULL )
{
        HDC hDCBitmap = CreateCompatibleDC( hDC );
        HBITMAP hbmOld = (HBITMAP)SelectObject( hDCBitmap, m_bitmap );

        // HDC tmp = GetDC( hWnd ); <-- to niepotrzebne bo nie rysujemy na kontekscie okna tylko tego co przekazujemy w hDC

        BitBlt( /* tmp <-- nie do tego kontekstu */ hDC, 50, 50, m_infoBitmap.bmWidth, m_infoBitmap.bmHeight, hDCBitmap, 0, 0, SRCCOPY );

        //ReleaseDC( hWnd, tmp ); <-- nie uzywamy tmp

        SelectObject( hDCBitmap, hbmOld );
        DeleteDC( hDCBitmap );
}
        /*Rectangle( hDC, 10,10,100,100); <-- to przesłaniało hehe zapomnialem ustawic przezroczystego pędzla */