<?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[[GDI] Wie bekomme ich Grösse eines DCs?]]></title><description><![CDATA[<p>Hi,</p>
<p>versuch mich gerade an der Grafikausgabe mit der WinAPI. Hab allerdings ein paar Probleme mit der Dokumentation. Im Netz hab ich ein paar gute Links gefunden, aber bei konkreten Problemen hilft's nicht weiter. Auch das MSDN ist mir da zu unübersichtlich, also ich finde einfach nicht was ich suche..</p>
<p>Mein Problem:<br />
Ich habe ein HDC und möchte die Grösse des DCs herausfinden und dann darauf zeichnen. Allerdings nicht innerhalb WM_PAINT-Nachricht.</p>
<p>(1) Wie erhalte ich die Größe des DCs usw.?<br />
(2) Gibt's eine GDI-Referenz (außer MSDN) ?</p>
<p>Danke,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/139509/gdi-wie-bekomme-ich-grösse-eines-dcs</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 14:45:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139509.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Mar 2006 11:04:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 11:04:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>versuch mich gerade an der Grafikausgabe mit der WinAPI. Hab allerdings ein paar Probleme mit der Dokumentation. Im Netz hab ich ein paar gute Links gefunden, aber bei konkreten Problemen hilft's nicht weiter. Auch das MSDN ist mir da zu unübersichtlich, also ich finde einfach nicht was ich suche..</p>
<p>Mein Problem:<br />
Ich habe ein HDC und möchte die Grösse des DCs herausfinden und dann darauf zeichnen. Allerdings nicht innerhalb WM_PAINT-Nachricht.</p>
<p>(1) Wie erhalte ich die Größe des DCs usw.?<br />
(2) Gibt's eine GDI-Referenz (außer MSDN) ?</p>
<p>Danke,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010412</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Tue, 07 Mar 2006 11:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 11:51:26 GMT]]></title><description><![CDATA[<p>don_basto schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>Mein Problem:<br />
Ich habe ein HDC und möchte die Grösse des DCs herausfinden und dann darauf zeichnen. Allerdings nicht innerhalb WM_PAINT-Nachricht.</p>
</blockquote>
<p>Warum denn nicht?</p>
<p>Wird schwierig. Die WM-PAINT veranlaßt Windows, das Fenster neu zu zeichnen, einschließlich aller darin enthaltenen Zeichnungs-Elemente. Einen anderen Weg hat mir noch niemand gesagt, nicht einmal Petzold.</p>
<p>don_basto schrieb:</p>
<blockquote>
<p>(1) Wie erhalte ich die Größe des DCs usw.?</p>
</blockquote>
<p>Für gewöhnlich legst Du den Zeichenbereich (Client Area) selbst mit einer rect-Struktur fest. Wenn Du dann die Größe brauchst, mußt Du nur Deine eigenen Werte oder eben die Eintragungen aus der rect-Struktur verrechnen.</p>
<p>Im Zweifelsfall würde ich mal unter GetSystemMetrics() schauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010437</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 07 Mar 2006 11:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 13:00:21 GMT]]></title><description><![CDATA[<p>Elektronix schrieb:</p>
<blockquote>
<p>don_basto schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>Mein Problem:<br />
Ich habe ein HDC und möchte die Grösse des DCs herausfinden und dann darauf zeichnen. Allerdings nicht innerhalb WM_PAINT-Nachricht.</p>
</blockquote>
<p>Warum denn nicht?</p>
</blockquote>
<p>Weil ich darauf nich zugreifen kann, aber ich bekomme zum Zeichnen einen HDC, auf dem ich arbeiten kann. Das funktioniert grundsätzlich auch, im Moment sind noch ein paar Fehler drin.</p>
<p>Elektronix schrieb:</p>
<blockquote>
<p>Wird schwierig. Die WM-PAINT veranlaßt Windows, das Fenster neu zu zeichnen, einschließlich aller darin enthaltenen Zeichnungs-Elemente. Einen anderen Weg hat mir noch niemand gesagt, nicht einmal Petzold.</p>
</blockquote>
<p>Bei den MFC kann man, afaik, den DC irgendwo ändern, muss dann aber InvalidateXXX() für diesen Bereich aufrufen.</p>
<p>Elektronix schrieb:</p>
<blockquote>
<p>don_basto schrieb:</p>
<blockquote>
<p>(1) Wie erhalte ich die Größe des DCs usw.?</p>
</blockquote>
<p>Für gewöhnlich legst Du den Zeichenbereich (Client Area) selbst mit einer rect-Struktur fest. Wenn Du dann die Größe brauchst, mußt Du nur Deine eigenen Werte oder eben die Eintragungen aus der rect-Struktur verrechnen.</p>
</blockquote>
<p>Mir ist der Ansatz mit dem Clientbereich nicht klar, ich dachte der HDC zeigt nur auf einen Bereich des Fensters. Ausserdem hab ich auch kein Interesse in die Titelzeile etc. zu zeichnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010486</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Tue, 07 Mar 2006 13:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 13:30:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Weil ich darauf nich zugreifen kann, aber ich bekomme zum Zeichnen einen HDC, auf dem ich arbeiten kann.</p>
</blockquote>
<p>Wieso kannst Du auf den hDc nicht zugreifen?</p>
<p>Hier die gängige Methode:</p>
<pre><code class="language-cpp">hDC = BeginPaint(hWnd, &amp;ps);
    {
//entsprechender Code zu den Zeichenoperationen

    }
EndPaint(hWnd, &amp;ps);
</code></pre>
<p>Das Ganze zu finden in<br />
<a href="http://www.win-api.de/tutorials.php?tutid=4" rel="nofollow">http://www.win-api.de/tutorials.php?tutid=4</a></p>
<p>Mit MFC kenn ich mich nicht aus, ist ja schließlich auch ein API-Forum.</p>
<p>Der hDC zeigt auf einen Device-Context, also auf ein Ausgabegerät. In welchem Client-Bereich Du arbeiten willst, legst Du selbst fest. Dazu auch der Link.<br />
Andere gute Tutorials gibt es unter</p>
<p><a href="http://www.henkessoft.de/C++/WinAPI/WinAPI_GDI/WinAPI_7_GDI.htm" rel="nofollow">http://www.henkessoft.de/C++/WinAPI/WinAPI_GDI/WinAPI_7_GDI.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010517</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 07 Mar 2006 13:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 15:54:19 GMT]]></title><description><![CDATA[<p>Die größe des DCs bezogen auf den Display ist immer die horizentale und vertikale Auflösung des Displays. Das kannst du mit GetSystemMetrics() herausfinden. Du kannst zwar außerhalb einer WM_PAINT-Nachricht zeichnen, aber die Zeichnung ist dann nach einer neuen WM_PAINT-Nachricht weg. Es ist äußerst unsauber außerhalb von WM_PAINT zu zeichnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010652</guid><dc:creator><![CDATA[Stormrage]]></dc:creator><pubDate>Tue, 07 Mar 2006 15:54:19 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 16:27:12 GMT]]></title><description><![CDATA[<p>Meines Wissens nach gibt es für ein Fenster zwei DCs, den WindowDC und den ClientDC. Ich denke Du meinst den ClientDC, dieser ist genauso groß, wie die Clientarea des Fensters. Wie groß die ist kannst Du mit GetClientRect über das hWnd herausfinden. Bei Memory-DCs könntest Du evtl. auch über GetObject das Bitmap holen und die Breite und Höhe des Bitmaps sollte der des DCs entsprechen, da man den DC ja über das Bitmap resized.<br />
Ob das mit dem Bitmap bei normalen Fenster-DCs auch funktioniert müsstest Du mal ausprobieren, da bin ich überfragt und im Moment auch zu faul für, um es auszuprobieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1010692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1010692</guid><dc:creator><![CDATA[mantiz]]></dc:creator><pubDate>Tue, 07 Mar 2006 16:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Tue, 07 Mar 2006 23:05:17 GMT]]></title><description><![CDATA[<p>ein dc besitzt überhaupt keine größe! ein dc ist nur eine schnittstelle für die durchführung von grafikoperationen auf ein anderes objekt. wenn das andere objekt, wie in deinem fall der arbeitsbereich eines fensters ist, dann mußt du die größe mit GetClientRect() vom fenster holen. würdest du einen compatible-dc verwenden um damit in eine bitmap zu zeichnen, dann müsstes du die größe mit GetBitmapDimensionsEx() von der bitmap holen etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011153</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Tue, 07 Mar 2006 23:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Wed, 08 Mar 2006 15:10:29 GMT]]></title><description><![CDATA[<p>Danke für die Antworten. <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>Ich nahm an, dass ein DC eine Größe besitzen müsste, da im MSDN ClientDC und WindowDC unterschieden werden.</p>
<p>Ich habe in bei meiner Schnittstelle Zugriff auf ein HDC und ein HWND, so dass ich die darstellbare Größe über GetClientRect() herausbekomme.</p>
<p>Grüße,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011678</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Wed, 08 Mar 2006 15:10:29 GMT</pubDate></item><item><title><![CDATA[Reply to [GDI] Wie bekomme ich Grösse eines DCs? on Wed, 08 Mar 2006 20:56:35 GMT]]></title><description><![CDATA[<p>[quote=&quot;Konfusius&quot;]ein dc besitzt überhaupt keine größe! ein dc ist nur eine schnittstelle für die durchführung von grafikoperationen auf ein anderes objekt. wenn das andere objekt, wie in deinem fall der arbeitsbereich eines fensters ist, dann mußt du die größe mit GetClientRect() vom fenster holen. würdest du einen compatible-dc verwenden um damit in eine bitmap zu zeichnen, dann müsstes du die größe mit GetBitmapDimensionsEx() von der bitmap holen etc.[/quote]</p>
<p>so ist es</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012037</guid><dc:creator><![CDATA[Buddy Love]]></dc:creator><pubDate>Wed, 08 Mar 2006 20:56:35 GMT</pubDate></item></channel></rss>