[winAPI] Bitmap aus dem Clipboard (Webcam)

Hy!

Informationstausch...mal was neues

mit SendMessage( hWndControl, PBM_SETPOS, (int)newPos, NULL); sollte das gehen
siehe auch hier

EDIT: Ich konnte den Fehler gerade eingrenzen, es scheint am Format des Bitmaps im Speicher zu liegen, wenn ich ein Bitmap aus einem File lade (LoadFile()) funktionier das blitten, etc. wundervoll.

mfg
uhu01
 
Zuletzt bearbeitet:
Mit CreateCompatibleDC( hDesktopDC ) bist du schon gut dran. Ein (Memory-)DC hat anfangs immer nur eine 1x1 grosse monochrome Bitmap drin.
Mit CreateCompatibleBitmap bekommst du ein HBITMAP, dass dem Farbformat entspricht. Mit SelectObject kannst du dem HDC dieses HBITMAP zuordnen (ein DC ist ein Zeichenkontext, der sich auf eine Bitmap, ein Fenster oder auch einen Drucker beziehen kann).

Zu deinem Code oben: Woher kommt dein HDC? Ist er direkt vom Fenster mit GetDC oder BeginPaint? Wenn nicht, dann musst du da drin ebenfalls ein HBITMAP erzeugen und reinselektieren. Ansonsten sieht das richtig aus.

Ist der Code innerhalb von WM_PAINT? Wenn nicht, dann musst du evtl. ein InvalidateRect dranhängen, damit Windows auch kapiert, dass in deinem Fenster etwas neu angezeigt werden muss.
 
Hy!

Meinen hDC bekomme ich von BeginPaint, und das ganze ist in WM_PAINT.
Ich hänge mal den ganzen Source an, vielleicht ist der Fehler ja wo anders.

Die Beiden Makros zum Auslesen der Kamera sind momentan Auskommentiert, da ich, wie oben schon erwähnt keine Kamera da habe, also einfach ein Bild aus Paint in die Zwischenablage.

Wie würde ich mein Bitmap aus dem Zwischenablagespeicher in ein mit CreateCompatibleBitmap generiertes Bitmap laden?

mfg
uhu01
 

Anhänge

  • webcam x.zip
    2,2 KB · Aufrufe: 44
Da haben wir einen ganz schönen Sauhaufen reingebracht :)

Wie im Attachment klappts jetzt. Sind ein paar Anmerkungen drin.
CreateDIBSection war in dem Fall zu kompliziert gedacht, du brauchtest ja "nur" ein HBITMAP-Handle von der Grafik. CreateDIBitmap ist da pflegeleichter.

Anmerkung an Staff: Wie kann .cpp eine nicht erlaubte Dateiendung für ein Programmiererforum sein? :)
 

Anhänge

  • webcamx-main.zip
    2,3 KB · Aufrufe: 61
Hy!

Vielen Dank dafür!
Hatte ich ja einige Fehler drin... :rolleyes:

Tut mir leid, das ich vergessen hab das mit der Position rauszunehmen....

Noch ne Frage:
Wenn ich einen MemoryDC erstelle, kann ich dort dann einfach so reinzeichnen wie in einen "normalen" DC. Sollte schon möglich sein, oder?

EDIT: Kleines Problem...wenn ich ein Bild ins Clipboard kopiere (aus Paint) sehe ich es wieder nicht, d.h. ich sehe nur einen schwarzen Bereich, in größe des Bitmaps...
Irgendwelche Ideen?

mfg
uhu01
 
Zuletzt bearbeitet:
Ah, Vorsicht, von welchem DC du kompatibel die Bitmap kopierst. Nimm bei CreateCompatibleDC unbedingt den DC den du von BeginPaint bekommen hast! Sonst bekommst du wieder den monochromen DC.
Ich hab auch über Paint getestet und das müsste so klappen.

Ein DC ist ein DC, egal was im Endeffekt darunter steckt. Du kannst damit ganz normal Zeichnen.
 
Hab ich Schlunz verpackt? Probier mal, neu gezippt.

Achtung, sind auch oben ein paar Änderungen.
 

Anhänge

  • webcamx-main.zip
    2,3 KB · Aufrufe: 35
Hy!

Danke jetzt hat's funktioniert. War mein Fehler, ich hatte 3 main.cpp und hab die falsche kompiliert, bzw. den falschen Code in meine main.cpp in meinem VC-Projekt kopiert. :rolleyes:

Nochmals vielen Dank!
Morgen Probier ich's mal mit der Webcam, und schreib dann rein wie es funktioniert hat.

mfg
uhu01
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück