Offscreen DirectDrawSurface7 auf HBITMAP kopieren



  • Hi,

    folgende Zeilen Code sind aus einer Funktion die ein Thumbnail Bild einer
    offscreen DirectDrawSurface7 einer MFC ImageList hinzufügen soll.
    warum funktioniert dieser Code nicht wie er soll? Denn wenn ich das
    CImageList Objekt auf dem Bildschirm ausgeben will, ist das erste Bild
    der Liste schwarz und alle weiteren dann weiß.

    HDC ddDC = NULL;
        //pLayer - Zeiger auf Objekt der Klasse Layer, "has a" offscreen
        //DirectDraw7 Surface
    	pLayer->getDDSurface()->GetDC( &ddDC );
    
    	HDC memDC = ::CreateCompatibleDC( ddDC );
    	HBITMAP hBmp = ::CreateCompatibleBitmap( memDC, IL_WIDTH, IL_HEIGHT );
    
    	HGDIOBJ hOldObj = ::SelectObject( memDC, hBmp );
    
    	::SetStretchBltMode( memDC, COLORONCOLOR );
    
    	::StretchBlt( memDC, 0, 0, IL_WIDTH, IL_HEIGHT,
    		ddDC, 0, 0, pLayer->Width(), pLayer->Height(), SRCCOPY );
    
    	::SelectObject( memDC, hOldObj );
    	::DeleteDC( memDC );
    	pLayer->getDDSurface()->ReleaseDC( ddDC );
    
    	CBitmap bmp;
    	bmp.Attach( hBmp );
    
    	myCImageList.Add( &bmp, RGB(0, 0, 0) );
    

Log in to reply