<?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[MFC Anfängerfragen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte nach meinen Erfahrungen mit VB6 nun auf VC++ umsteigen. Dieser Schritt ist komplizierter als ich ihn mir zunächst vorgestellt habe, da ich nicht damit gerechnet habe, dass mir VB6 bisher soviel Arbeit abgenommen hat. Nundenn, was solls - da muss ich jetzt durch <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 habe zunächst eine Frage zu den DCs (Beispielprogramm aus der MSDN: saver.exe, das Beispielprogramm zum Screensaver)</p>
<p>1. In CDrawWnd::OnPaint wird mit CPaintDC dc(this) ein neuer Gerätekontext instanziiert. Ich dachte immer, dass man sich einen Gerätekontext geben lassen müsste (GetDC o.ä.) , den man für kurze Zeit benutzen darf und danach mit ReleaseDC auf jeden Fall wieder freigeben müsste. Wie genau funktioniert das hier? Und was soll der Hinweis &quot;Do not call CWnd::OnPaint [...]&quot; usw.?</p>
<p>2. Ich habe eine Klasse A deklariert, die von Cwnd abgeleitet ist. Dann wiederrum habe ich eine Klasse B deklariert die von A abgeleitet ist.</p>
<p>Mein Frage: Warum kommen die Windowsereignisse in der Klasse A an, aber nicht in B? Auch das Kontextmenü der Klassenansicht zeigt mir für die Klasse B keine Möglichkeit an, um Ereignisbehandlungsroutinen zu implementieren.</p>
<p>Was übersehe ich?</p>
<p>Tja, Fragen über Fragen. Mir würden glatt noch mehr einfallen, aber wenn mir jemand schon einmal die oberen Fragen beantworten kann, wird mir das sicher schon sehr weiterhelfen!</p>
<p>Vielen Dank!<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/48948/mfc-anfängerfragen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 02:52:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/48948.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Sep 2003 14:14:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MFC Anfängerfragen on Sun, 14 Sep 2003 14:14:38 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte nach meinen Erfahrungen mit VB6 nun auf VC++ umsteigen. Dieser Schritt ist komplizierter als ich ihn mir zunächst vorgestellt habe, da ich nicht damit gerechnet habe, dass mir VB6 bisher soviel Arbeit abgenommen hat. Nundenn, was solls - da muss ich jetzt durch <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 habe zunächst eine Frage zu den DCs (Beispielprogramm aus der MSDN: saver.exe, das Beispielprogramm zum Screensaver)</p>
<p>1. In CDrawWnd::OnPaint wird mit CPaintDC dc(this) ein neuer Gerätekontext instanziiert. Ich dachte immer, dass man sich einen Gerätekontext geben lassen müsste (GetDC o.ä.) , den man für kurze Zeit benutzen darf und danach mit ReleaseDC auf jeden Fall wieder freigeben müsste. Wie genau funktioniert das hier? Und was soll der Hinweis &quot;Do not call CWnd::OnPaint [...]&quot; usw.?</p>
<p>2. Ich habe eine Klasse A deklariert, die von Cwnd abgeleitet ist. Dann wiederrum habe ich eine Klasse B deklariert die von A abgeleitet ist.</p>
<p>Mein Frage: Warum kommen die Windowsereignisse in der Klasse A an, aber nicht in B? Auch das Kontextmenü der Klassenansicht zeigt mir für die Klasse B keine Möglichkeit an, um Ereignisbehandlungsroutinen zu implementieren.</p>
<p>Was übersehe ich?</p>
<p>Tja, Fragen über Fragen. Mir würden glatt noch mehr einfallen, aber wenn mir jemand schon einmal die oberen Fragen beantworten kann, wird mir das sicher schon sehr weiterhelfen!</p>
<p>Vielen Dank!<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/353347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/353347</guid><dc:creator><![CDATA[_freddy_]]></dc:creator><pubDate>Sun, 14 Sep 2003 14:14:38 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anfängerfragen on Sun, 14 Sep 2003 14:50:54 GMT]]></title><description><![CDATA[<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>ich möchte nach meinen Erfahrungen mit VB6 nun auf VC++ umsteigen.</p>
</blockquote>
<p>Sehr gute Entscheidung.</p>
<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>1. In CDrawWnd::OnPaint wird mit CPaintDC dc(this) ein neuer Gerätekontext instanziiert. Ich dachte immer, dass man sich einen Gerätekontext geben lassen müsste (GetDC o.ä.) , den man für kurze Zeit benutzen darf und danach mit ReleaseDC auf jeden Fall wieder freigeben müsste. Wie genau funktioniert das hier? Und was soll der Hinweis &quot;Do not call CWnd::OnPaint [...]&quot; usw.?</p>
</blockquote>
<p>Bei CPaintDC dc(this) wird eine Instanz von CPaintDC erstellt die im Konstruktor als Argument einen Pointer auf die Fensterklasse CDrawWnd (this zeigt immer auf die Instanz dieser Klasse). Von diesem holt der Konstruktor sich den DC und erstellt einen kompatiblen auf dem du zeichnen kannst.</p>
<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>2. Ich habe eine Klasse A deklariert, die von Cwnd abgeleitet ist. Dann wiederrum habe ich eine Klasse B deklariert die von A abgeleitet ist. Mein Frage: Warum kommen die Windowsereignisse in der Klasse A an, aber nicht in B? Auch das Kontextmenü der Klassenansicht zeigt mir für die Klasse B keine Möglichkeit an, um Ereignisbehandlungsroutinen zu implementieren.</p>
</blockquote>
<p>Ja, und? Dann ist B direkt von A abgeleitet und indirekt von CWnd. Von welcher Klasse hast du die Instanz erstellt? A oder B? Guck dir auch mal die Hilfe zu dem Schlüsselwort virtual an <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/353366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/353366</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Sun, 14 Sep 2003 14:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anfängerfragen on Sun, 14 Sep 2003 15:11:25 GMT]]></title><description><![CDATA[<blockquote>
<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>ich möchte nach meinen Erfahrungen mit VB6 nun auf VC++ umsteigen.</p>
</blockquote>
<p>Sehr gute Entscheidung.</p>
<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>1. In CDrawWnd::OnPaint wird mit CPaintDC dc(this) ein neuer Gerätekontext instanziiert. Ich dachte immer, dass man sich einen Gerätekontext geben lassen müsste (GetDC o.ä.) , den man für kurze Zeit benutzen darf und danach mit ReleaseDC auf jeden Fall wieder freigeben müsste. Wie genau funktioniert das hier? Und was soll der Hinweis &quot;Do not call CWnd::OnPaint [...]&quot; usw.?</p>
</blockquote>
<p>Bei CPaintDC dc(this) wird eine Instanz von CPaintDC erstellt die im Konstruktor als Argument einen Pointer auf die Fensterklasse CDrawWnd (this zeigt immer auf die Instanz dieser Klasse). Von diesem holt der Konstruktor sich den DC und erstellt einen kompatiblen auf dem du zeichnen kannst.</p>
</blockquote>
<p>Aber wo ist der Unterschied zur GetDC?</p>
<blockquote>
<p><em>freddy</em> schrieb:</p>
<blockquote>
<p>2. Ich habe eine Klasse A deklariert, die von Cwnd abgeleitet ist. Dann wiederrum habe ich eine Klasse B deklariert die von A abgeleitet ist. Mein Frage: Warum kommen die Windowsereignisse in der Klasse A an, aber nicht in B? Auch das Kontextmenü der Klassenansicht zeigt mir für die Klasse B keine Möglichkeit an, um Ereignisbehandlungsroutinen zu implementieren.</p>
</blockquote>
<p>Ja, und? Dann ist B direkt von A abgeleitet und indirekt von CWnd. Von welcher Klasse hast du die Instanz erstellt? A oder B? Guck dir auch mal die Hilfe zu dem Schlüsselwort virtual an <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>
</blockquote>
<p>Instanziiert wird die Klasse A. Aber soweit bin ich noch gar nicht. Schon der Klassenassistent lässt mich keine Ereignisroutinen hinzufügen.</p>
<p>Danke,<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/353373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/353373</guid><dc:creator><![CDATA[_freddy_]]></dc:creator><pubDate>Sun, 14 Sep 2003 15:11:25 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anfängerfragen on Mon, 15 Sep 2003 14:59:50 GMT]]></title><description><![CDATA[<p>Wenn du eine Instanz von A erstellst kommen die Notifies auch nur in A an. Erstelle doch eine Instanz von B. Wenn der Klassenassistent sich sperrt dann mach es doch zu Fuß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/354070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/354070</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Mon, 15 Sep 2003 14:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anfängerfragen on Mon, 15 Sep 2003 16:30:41 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>MaSTaH schrieb:</p>
<blockquote>
<p>Wenn du eine Instanz von A erstellst kommen die Notifies auch nur in A an. Erstelle doch eine Instanz von B. Wenn der Klassenassistent sich sperrt dann mach es doch zu Fuß.</p>
</blockquote>
<p>Sorry. Natürlich wird B instanziiert. Sonst würde es ja keinen Sinn machen. Die Notifies sollten nach der Erstellung von B auch dort ankommen. Wenn ich diese nun zu Fuß eintrage behandelt VC++ diese Funktionen offensichtlich nur als normale Memberfunktionen. Oder muss ich meine Klasse noch &quot;von Hand&quot; für die Nachrichtenverarbeitung &quot;registrieren&quot;?<br />
Ich blicke leider noch nicht ganz durch die Abläufe in den MFCs durch. Als (V)C++-Anfänger wird man ja auch gleich davon erschlagen, wenn man &quot;mal eben&quot;, wie in VB, ein kleines Windowsprogramm schreiben möchte. <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>Vielen Dank für deine Unterstützung!<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/354116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/354116</guid><dc:creator><![CDATA[_guenni_]]></dc:creator><pubDate>Mon, 15 Sep 2003 16:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anfängerfragen on Mon, 15 Sep 2003 17:35:45 GMT]]></title><description><![CDATA[<p>Wozu leitest Du Klassen ab, die von CWnd erben? MFC hat doch für alle Zwecke entsprechende Kind- und Enkelklassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/354152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/354152</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Mon, 15 Sep 2003 17:35:45 GMT</pubDate></item></channel></rss>