Bitmap auf MFC-Fenster zeichnen

Krankfried

Grünschnabel
Hallo!

Mein Programm nimmt ein Videosignal auf. Das funktioniert auch super.
Nun möchte ich zusätzlich ein Live-Bild auf das MFC-Fenster bringen. Quasi immer das aktuelle Bild, das gerade von extern empfangen wurde.

Bisher zeichne ich meine Bitmaps folgendermaßen:
Code:
CPaintDC dc(this);
HDC bitmap_dc = CreateCompatibleDC(dc);
HBITMAP old_bitmap=(HBITMAP)SelectObject(bitmap_dc, hBitmap);
BitBlt(dc, 18, 24, 256+18, 386+24, bitmap_dc, 0,0, SRCCOPY);
SelectObject(bitmap_dc, old_bitmap);
DeleteObject(bitmap_dc);
Das ganze ist in der OnPaint()-Funktion.

Im Code mache ich dann dies:
Code:
(...)
hBitmap = CreateBitmapFromPixel(hdcDIB, 256, 384, 24, buffer);
(...)
RedrawWindow(NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW);

Das funktioniert auch ganz gut, sogar relativ flimmerfrei. Jedoch bremst die RedrawWindow-Funktion meinen ganzen Code aus, wodurch auch die Aufnahme mit ca. 10fps weniger läuft, als ohne diesen RedrawWindow-Aufruf...

Habe gehört, man kann auch DirectDraw oder so zum Zeichnen benutzen.
Suche jetzt seit gestern Nachmittag stundenlang bei Google nach einer Lösung, konnte aber nichts Brauchbares finden.

Ich hoffe, ihr könnt mir mit einem Codeschnipsel helfen. Noch besser wäre ein kleines Beispielprojekt, denn aus sowas lernt man ja besonders gut, finde ich.
 
Zuletzt bearbeitet:
Solange Aufnahme und Wiedergabe im gleichen Thread laufen werden die sich immer gegenseitig Rechenzeit wegnehmen.
Ich kann dir kein Codeschnipsel geben, weil das schon in der Grundstruktur vom Programm eingebaut gehört, aber du solltest die beiden Funktionen in separaten Threads unterbringen.
 
Zurück