CDC -> CBitmap -> CImagelist Problem

EriFo

Erfahrenes Mitglied
Hi ho,

Vorgeschichte:
Ich lasse mir von meinem Fenster den CDC geben, erstellen einen 2. kompatiblen CDC + kompatibles Bitmap und zeichne nun den ersten CDC auf das Bitmap des 2. mit BitBlt() - also sprich : ich mach nen Screenshot.

Problem:
Das Bild in der Imagelist ist nur schwarz.

Fragen:
Wie kann ich das bitmap jetzt in eine CImageList laden und was muss ich da beachten.
Kann ich das überhaupt so einfach und welche Flags muss ich da evtl. beim erstellen der Imagelist setzten?

Wenn ich das Bitmap in die zwischenablage kopiere und dann manuell in Paint einfüge ist's da - aber in der CImageList ist nur alles schwarz.



Vielen Dank schonmal
M.f.G. E r i k
 
Welchen HDC (CDC) setzt du in CreateCompatibleBitmap ein? Die MSDN hat da eine Anmerkung dazu:

Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is used in CreateCompatibleBitmap, the bitmap that is created is a monochrome bitmap. To create a color bitmap, use the hDC that was used to create the memory device context, as shown in the following code:

HDC memDC = CreateCompatibleDC ( hDC );
HBITMAP memBM = CreateCompatibleBitmap ( hDC, nWidth, nHeight );
SelectObject ( memDC, memBM );
 
Hmm .. ich machs prinziepiell genauso:

PHP:
CDC *dc = GetDC();
CDC	capture_dc;
CBitmap capture_map;

capture_dc.CreateCompatibleDC( dc );
capture_map.CreateCompatibleBitmap( dc , width, height );

capture_dc.SelectObject( &capture_map );
capture_dc.BitBlt( 0, 0, width, height, dc, 0, 0, SRCCOPY );

Und die Imagelist erstelle ich so:

PHP:
m_drag_imagelist.Create( width, height, ILC_COLOR24|ILC_MASK , 1, 1 );
m_drag_imagelist.Add( &capture_map, (DWORD)RGB(255,255,255));
 
Ok - habs anders gelöst - brauch sich als keine mehr ein Bein für ausreissen ^^°
Falls jemanden dennoch ganz spontan noch ne Lösung einfällt und einen Betrag hat würds mich aber schon interessieren ^^°

M.f.G. Erik
 
Zurück