Wie kann ich Gdiplus::Image in Zwischenablage kopieren?
-
Hallo zusammen!
Ich versuche ein Objekt vom Typ Gdiplus::Image in Zwischenablage kopieren, damit später in einer Anwendung (z.B. MS-Word, Paint, Photoshop etc.) mit Hilfe Ctrl-V einfügen möglich wäre.
Dafür benutze ich follgende Routine
if(!OpenClipboard(NULL)) return 0; EmptyClipboard(); HBITMAP hbitmap1; Bitmap* bitmapImg1 = new Bitmap(L"C:\\Users\\User1\\Desktop\\1.jpg"); UINT w = bitmapImg1->GetWidth(); UINT h = bitmapImg1->GetHeight(); Color bgColor = Color::White; bitmapImg1->GetHBITMAP(bgColor, &hbitmap1); SetClipboardData(CF_BITMAP, hbitmap1); CloseClipboard();
Alles läuft ohne Fehlern.
Aber beim Enfügen-Aktion wird in andere Programm nichts eingefügt.Kann mir jemand sagen, was in meinem Qulellkode stimmt nicht.
Danke im voraus
YK
-
Und hBitmap1 ist != NULL?
-
Und hBitmap1 ist != NULL?
Nein es ist nicht NULL
-
CF_BITMAP ist mir sowieso immer suspekt, bei der MSDN, die mit VS 2008 ausgeliefert wird, steht bei CF_BITMAP unter SetClipboardData "Not supported.".
Nimm doch einfach CF_DIB und speichere eine "packed Dib" (BITMAPINFOHEADER + optionale Farbtabelle (für <24bpp) + die Pixeldaten selbst in einem per GlobalAlloc erstellten Speicherbereich.
-
Ohje, ich sehe gerade, dass dies für CE gilt. Naja, nichtsdestotrotz würde ich immer CF_DIB nehmen