<?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[Bild auf Desktop anzeigen -&amp;gt; Problem!]]></title><description><![CDATA[<p>Ich versuche z.Z. ein Bild auf dem Desktop anzuzeigen und da ich das Bild nicht in der passenden Größe habe soll es auf die richtige Größe skaliert werden. Folgender Code liefert jedoch nicht das richtige Ergebnis, denn das Bild hat noch immer die gleiche Größe:</p>
<pre><code class="language-cpp">HDC hDC = GetDC(0);
    HDC hCache = CreateCompatibleDC(hDC);
    RECT rect; GetClientRect(GetDesktopWindow(),&amp;rect);
    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,
                                        &quot;Fullscreen.bmp&quot;,
                                        IMAGE_BITMAP,
                                        0, 0,
                                        LR_LOADFROMFILE);

    SelectObject(hCache,hBitmap);

    DWORD dwStart,dwNow;

    dwStart = dwNow = GetTickCount();

	std::cout &lt;&lt; rect.left &lt;&lt; &quot;, &quot; &lt;&lt; rect.top &lt;&lt; std::endl;
	std::cout &lt;&lt; rect.right &lt;&lt; &quot;, &quot; &lt;&lt; rect.bottom &lt;&lt; std::endl;

    while ((dwNow - dwStart &lt;= 5000) &amp;&amp; (dwStart &lt;= dwNow))
    {
		StretchBlt(hDC,0,0,rect.right,rect.bottom,hCache,0,0,rect.right,rect.bottom,SRCCOPY);
        Sleep(1);
        dwNow = GetTickCount();
    }

    InvalidateRect(NULL,NULL,TRUE);

    DeleteObject(hCache);
</code></pre>
<p>Außerdem bräuchte ich noch Hilfe beim Freigeben des Speichers... Irgendwie gebe ich nicht alles wieder frei!</p>
<p>Danke im Voraus <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195676/bild-auf-desktop-anzeigen-gt-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 22:42:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195676.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Oct 2007 14:27:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bild auf Desktop anzeigen -&amp;gt; Problem! on Sat, 20 Oct 2007 14:27:44 GMT]]></title><description><![CDATA[<p>Ich versuche z.Z. ein Bild auf dem Desktop anzuzeigen und da ich das Bild nicht in der passenden Größe habe soll es auf die richtige Größe skaliert werden. Folgender Code liefert jedoch nicht das richtige Ergebnis, denn das Bild hat noch immer die gleiche Größe:</p>
<pre><code class="language-cpp">HDC hDC = GetDC(0);
    HDC hCache = CreateCompatibleDC(hDC);
    RECT rect; GetClientRect(GetDesktopWindow(),&amp;rect);
    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,
                                        &quot;Fullscreen.bmp&quot;,
                                        IMAGE_BITMAP,
                                        0, 0,
                                        LR_LOADFROMFILE);

    SelectObject(hCache,hBitmap);

    DWORD dwStart,dwNow;

    dwStart = dwNow = GetTickCount();

	std::cout &lt;&lt; rect.left &lt;&lt; &quot;, &quot; &lt;&lt; rect.top &lt;&lt; std::endl;
	std::cout &lt;&lt; rect.right &lt;&lt; &quot;, &quot; &lt;&lt; rect.bottom &lt;&lt; std::endl;

    while ((dwNow - dwStart &lt;= 5000) &amp;&amp; (dwStart &lt;= dwNow))
    {
		StretchBlt(hDC,0,0,rect.right,rect.bottom,hCache,0,0,rect.right,rect.bottom,SRCCOPY);
        Sleep(1);
        dwNow = GetTickCount();
    }

    InvalidateRect(NULL,NULL,TRUE);

    DeleteObject(hCache);
</code></pre>
<p>Außerdem bräuchte ich noch Hilfe beim Freigeben des Speichers... Irgendwie gebe ich nicht alles wieder frei!</p>
<p>Danke im Voraus <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1389005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1389005</guid><dc:creator><![CDATA[WillBildAnzeigen]]></dc:creator><pubDate>Sat, 20 Oct 2007 14:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to Bild auf Desktop anzeigen -&amp;gt; Problem! on Sat, 20 Oct 2007 16:43:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">HDC hDC = GetDC(0);
HDC hCache = CreateCompatibleDC(hDC);
RECT rect; 

GetClientRect(GetDesktopWindow(),&amp;rect);
// Möglicherweise passen die Werte von GetSystemMetrics(SM_CXSCREEN) bzw. SM_CYSCREEN hier besser, k.A.!

HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,
									&quot;Fullscreen.bmp&quot;, // relative Pfade sollte man besser vermeiden, sofern man das CurrentDirectory nicht vorher selber setzt!
									IMAGE_BITMAP,
									0, 0,
									LR_LOADFROMFILE);

// Rückgabewert merken!
HGDIOBJ oldObj=SelectObject(hCache,hBitmap);

DWORD dwStart,dwNow;

dwStart = dwNow = GetTickCount();

std::cout &lt;&lt; rect.left &lt;&lt; &quot;, &quot; &lt;&lt; rect.top &lt;&lt; std::endl;
std::cout &lt;&lt; rect.right &lt;&lt; &quot;, &quot; &lt;&lt; rect.bottom &lt;&lt; std::endl;

while ((dwNow - dwStart &lt;= 5000) &amp;&amp; (dwStart &lt;= dwNow))
{
	// Quell- und Ziel-Rects sind gleich groß?! - Das wird wohl kaum sein was du willst!
	// Für nWidthSrc und nHeightSrc wirst du vermutlich eigentlich die Größe der 'Fullscreen.bmp' einsetzen wollen!
	// Sofern die Größe der Fullscreen.bmp nicht fest ist und die Größe im Source rausfinden musst: Schau dir
	// GetObject() an!
	StretchBlt(hDC,0,0,rect.right,rect.bottom,hCache,0,0,rect.right,rect.bottom,SRCCOPY);
	Sleep(1);
	dwNow = GetTickCount();
}

InvalidateRect(NULL,NULL,TRUE);
// Wenn du sicherstellen willst das auch sofort neu gezeichnet wird, kannst du noch ein UpdateWindow() dahinter packen!
// Wobei mir nicht klar ist, warum du hier überhaupt InvalidateRect() hast?

// Bevor du hCache löscht, sollte man das gemerkte oldObj wieder rein selektieren, dadurch befreist du auch hBitmap!
SelectObject(hCache,oldObj); // Rückgabewert wäre jetzt hBitmap!

// hCache ist kein GDI-Objekt - Du musst hier DeleteDC nehmen!
// GDI-Objekte sind laut msdn: pen, brush, font, bitmap, region,  palette
DeleteDC(hCache);

// hBitmap ist aber ein GDI-Objekt!
DeleteObject(hBitmap);

// Noch mehr Aufräumarbeiten:
ReleaseDC(NULL,hdc);

// ...statt direkt auf den Desktop zu zeichnen, macht es evtl. mehr Sinn ein Fenster über den Desktop zu legen und darin zu zeichnen?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1389065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1389065</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sat, 20 Oct 2007 16:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bild auf Desktop anzeigen -&amp;gt; Problem! on Sat, 20 Oct 2007 19:20:47 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/41">@geeky</a>: Danke für die Hilfe <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="🙂"
    /> <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="👍"
    /></p>
<p>Hättest du noch ein Beispiel wie ich das mit dem Fenster erzeugen... am Besten realisiere?</p>
<p>Vielen Dank im Voraus <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="🙂"
    /></p>
<p>WillBildAnzeigen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1389151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1389151</guid><dc:creator><![CDATA[WillBildAnzeigen]]></dc:creator><pubDate>Sat, 20 Oct 2007 19:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to Bild auf Desktop anzeigen -&amp;gt; Problem! on Sat, 20 Oct 2007 19:35:44 GMT]]></title><description><![CDATA[<p>Ich weiss nicht was du genau vor hast, aber das hier könnte für dich interessant sein: <a href="http://msdn2.microsoft.com/en-us/library/ms997507.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms997507.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1389156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1389156</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sat, 20 Oct 2007 19:35:44 GMT</pubDate></item></channel></rss>