<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HDC in Zwischenablage]]></title><description><![CDATA[<p>Hi Leute,<br />
ich will ein HDC in die Zwischenablage bekommen.<br />
Nun als HDC geht das ja direkt nicht. Also muss man es ja in eine Bitmap oder DIB umwandeln. Das würd ich vieleicht auch noch hinbekommen. Bloß wenn ich dann das Bitmap hab bekomm ich das nicht in die Zwischenablage.<br />
Ich hab schon das ganze Forum durchsucht inklusive FAQ usw und auch bei google, hab aber nix gefunden. Bloß immer MFC oder Visual C++ oder sonst was. Ich benutz aber nur ganze einfach C++ in der WinAPI, ohne MFC oder andere Erweiterungen.<br />
Vielen Dank schon mal für alle Antworten!</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242919/hdc-in-zwischenablage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 12:20:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242919.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Jun 2009 19:23:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HDC in Zwischenablage on Tue, 09 Jun 2009 19:23:12 GMT]]></title><description><![CDATA[<p>Hi Leute,<br />
ich will ein HDC in die Zwischenablage bekommen.<br />
Nun als HDC geht das ja direkt nicht. Also muss man es ja in eine Bitmap oder DIB umwandeln. Das würd ich vieleicht auch noch hinbekommen. Bloß wenn ich dann das Bitmap hab bekomm ich das nicht in die Zwischenablage.<br />
Ich hab schon das ganze Forum durchsucht inklusive FAQ usw und auch bei google, hab aber nix gefunden. Bloß immer MFC oder Visual C++ oder sonst was. Ich benutz aber nur ganze einfach C++ in der WinAPI, ohne MFC oder andere Erweiterungen.<br />
Vielen Dank schon mal für alle Antworten!</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724084</guid><dc:creator><![CDATA[djwd]]></dc:creator><pubDate>Tue, 09 Jun 2009 19:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Tue, 09 Jun 2009 19:47:07 GMT]]></title><description><![CDATA[<p><a href="http://msdn.microsoft.com/en-us/library/ms649051(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms649051(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724097</guid><dc:creator><![CDATA[b00n?]]></dc:creator><pubDate>Tue, 09 Jun 2009 19:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Tue, 09 Jun 2009 20:14:51 GMT]]></title><description><![CDATA[<p>danke erstmal... es wird mir zwar angezeigt, dass ein Bitmap in der Zwischenablage ist, aber wenn ichs z.B. in einem anderen Programm einfüge wirds nicht dargestellt.. aber ich denke dass das an meiner Umwandlung von hdc nach dib liegt... ich probier das morgen mal noch aus.. hab jetzt keine zeit mehr.<br />
ich schreib euch dann mal mein Ergebnis..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724113</guid><dc:creator><![CDATA[djwd]]></dc:creator><pubDate>Tue, 09 Jun 2009 20:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Wed, 10 Jun 2009 16:10:43 GMT]]></title><description><![CDATA[<p>so. Also ich hab das HDC jetzt erfolgreich in ein HBITMAP umgewandelt.<br />
Bloß bekomm ich das jetzt nicht richtig in die Zwischenablage.<br />
Der Compiler meckert zwar nicht, und es wird auch angezeigt, dass ein Bitmap in der Zwischenablage ist, aber wenn ich die irgend wo einfügen will, passiert einfach gar nichts. Das lässt mich darauf schließen, dass der Inhalt der Zwischenablage, spirch meine HBITMAP fehlerhaft sein muss.<br />
Hier mein Code:</p>
<pre><code>HDC hdc;
            HDC hdcMem;
            /// Grafik malen
            hdc = BeginPaint(hwnd,&amp;ps);
            Rectangle(hdc,10,10,30,30);
            /// HDC -&gt; HBITMAP
            hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hbitmap = CreateCompatibleBitmap(hdc,40,40);
            SelectObject(hdcMem,hbitmap);
            BitBlt(hdcMem,0,0,50,50,hdc,0,0,SRCCOPY);
            DeleteDC(hdcMem);

            ///HBITMAP in Zwischenablage
            OpenClipboard(hwnd);
            HGLOBAL hglobal;
            HBITMAP p;
            hglobal=GlobalAlloc(GPTR|GMEM_FIXED,sizeof(HBITMAP));
            p=(HBITMAP)GlobalLock(hglobal);
            p=hbitmap;
            GlobalUnlock(hglobal);
            EmptyClipboard();
            SetClipboardData(CF_BITMAP,hglobal);
            CloseClipboard();

            EndPaint(hwnd,&amp;ps);
</code></pre>
<p>Muss ich da noch mehr oder was anderes in die Ablage kopieren oder ist doch was an der Umwandlung falsch(was eigentlich nicht sein dürfte)?<br />
Ich bin für jede Antwort dankbar...</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724651</guid><dc:creator><![CDATA[djwd]]></dc:creator><pubDate>Wed, 10 Jun 2009 16:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Wed, 10 Jun 2009 16:17:51 GMT]]></title><description><![CDATA[<p>Vor dem Löschen des DC solltest Du Dein Bitmap wieder herauswählen.</p>
<pre><code class="language-cpp">HGDIOBJ hOldBitmap = SelectObject(hdcMem,hbitmap);
BitBlt(hdcMem,0,0,50,50,hdc,0,0,SRCCOPY);
SelectObject(hdcMem, hOldBitmap);
DeleteDC(hdcMem);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1724654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724654</guid><dc:creator><![CDATA[sri]]></dc:creator><pubDate>Wed, 10 Jun 2009 16:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Wed, 10 Jun 2009 16:20:13 GMT]]></title><description><![CDATA[<p>danke für die antwort,<br />
ändert aber nichts...<br />
ich glaub dass der Fehler beim Kopieren in die Zwischenablage liegt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724657</guid><dc:creator><![CDATA[djwd]]></dc:creator><pubDate>Wed, 10 Jun 2009 16:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Wed, 10 Jun 2009 16:44:45 GMT]]></title><description><![CDATA[<p>Ja, der ist Quark. Versuchs mal mit einem einfachen</p>
<pre><code class="language-cpp">SetClipboardData(CF_BITMAP, hbitmap);
</code></pre>
<p>und lass das Alloc/Lock/Unlock weg.</p>
<p>Sehr zu empfehlen: <a href="http://www.codeproject.com/KB/clipboard/clipspy.aspx" rel="nofollow">http://www.codeproject.com/KB/clipboard/clipspy.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724679</guid><dc:creator><![CDATA[sri]]></dc:creator><pubDate>Wed, 10 Jun 2009 16:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to HDC in Zwischenablage on Wed, 10 Jun 2009 17:56:15 GMT]]></title><description><![CDATA[<p>juhu das geht! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
vielen dank für deine Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
ich hatt iwie gedacht, dass das nicht geht oder MFC wär oder so.. aber es funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
so. für alle dies interessiert hier dann mal mein fertiger Code, der ein HDC in die Zwischenablage speichert:</p>
<pre><code>HDC hdc;
            HDC hdcMem;
            int SizeX = 40;
            int SizeY = 40;
            /// Grafik malen
            hdc = BeginPaint(hwnd,&amp;ps);
            Rectangle(hdc,10,10,30,30);
            /// HDC -&gt; HBITMAP
            hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hbitmap = CreateCompatibleBitmap(hdc,SizeX,SizeY);
            HGDIOBJ hOldBitmap=SelectObject(hdcMem,hbitmap);
            BitBlt(hdcMem,0,0,SizeX,SizeY,hdc,0,0,SRCCOPY);
            SelectObject(hdcMem,hOldBitmap);// nicht unbedingt nötig
            DeleteDC(hdcMem);

            ///HBITMAP in Zwischenablage
            OpenClipboard(hwnd);
            EmptyClipboard();
            SetClipboardData(CF_BITMAP,hbitmap);
            CloseClipboard();

            EndPaint(hwnd,&amp;ps);
</code></pre>
<p>kann man natührlich auch noch in Funktionen packen:</p>
<pre><code>HBITMAP HDC2HBITMAP(HDC hdc,int StartX,int StartY,int SizeX,int SizeY)
{
    HDC hdcMem;
    hdcMem = CreateCompatibleDC(hdc);
    HBITMAP hbitmap = CreateCompatibleBitmap(hdc,SizeX,SizeY);
    HGDIOBJ hOldBitmap=SelectObject(hdcMem,hbitmap);
    BitBlt(hdcMem,0,0,SizeX,SizeY,hdc,StartX,StartY,SRCCOPY);
    SelectObject(hdcMem,hOldBitmap);// nicht unbedingt nötig
    DeleteDC(hdcMem);
    return hbitmap;
}

HANDLE BITMAP2CLIPBOARD(HBITMAP hbitmap,HWND hwnd)
{
    HANDLE hreturn;
    OpenClipboard(hwnd);
    EmptyClipboard();
    hreturn = SetClipboardData(CF_BITMAP,hbitmap);
    CloseClipboard();
    return hreturn;
}
</code></pre>
<p>Damit wär das Thema erledigt und kann geschlossen werden.</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724711</guid><dc:creator><![CDATA[djwd]]></dc:creator><pubDate>Wed, 10 Jun 2009 17:56:15 GMT</pubDate></item></channel></rss>