<?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[WndProc Problem: Aufruf von Klassenmembern bzw Pointern]]></title><description><![CDATA[<p>Hallo,<br />
ich habe das folgende Problem:<br />
ich erstelle ein Fenster (aus einer anderen Klasse) und gebe da eine statische Memberfunktion an, welche auf eine Nichtstatische weiterleitet (WndProc).<br />
Das klappt alles.</p>
<p>Wenn ich jetzt aus der WndProc (s.o.) auf einen Pointer (der Klasse) zugreife (ich habe alles in public), z.b.<br />
engine (mit engine-&gt;test() ) dann ging das bis vor kurzem nicht (habe rumgespielt, jetzt geht das.)</p>
<p>jetzt klappt aber immer noch nicht:</p>
<pre><code>engine-&gt;fenster-&gt;Test()
</code></pre>
<p>als Fehlermeldung erhalte ich :<br />
Zugriffsverletzung beim Lesen an Position 0xcccccccc<br />
,welche immer gleich ist (was liegt denn an der Speicherpos?)</p>
<p>Wenn ich stattdessen :</p>
<pre><code>engine-&gt;totest()
</code></pre>
<p>mit</p>
<pre><code>totest()
return fenster-&gt;test()
</code></pre>
<p>aufrufe kommt das gleiche an der stelle von return. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Was kann ich machen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Gibt es irgentwie eine beschränkung das man in der WndProc nicht andere bestimmte Funktionen aufrufen kann?</p>
<p>- ist das so verständlich gefragt?</p>
<p>Compiler: MS Visual C++ Express 2005</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200282/wndproc-problem-aufruf-von-klassenmembern-bzw-pointern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 15:50:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200282.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Dec 2007 20:44:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Wed, 12 Dec 2007 20:47:45 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe das folgende Problem:<br />
ich erstelle ein Fenster (aus einer anderen Klasse) und gebe da eine statische Memberfunktion an, welche auf eine Nichtstatische weiterleitet (WndProc).<br />
Das klappt alles.</p>
<p>Wenn ich jetzt aus der WndProc (s.o.) auf einen Pointer (der Klasse) zugreife (ich habe alles in public), z.b.<br />
engine (mit engine-&gt;test() ) dann ging das bis vor kurzem nicht (habe rumgespielt, jetzt geht das.)</p>
<p>jetzt klappt aber immer noch nicht:</p>
<pre><code>engine-&gt;fenster-&gt;Test()
</code></pre>
<p>als Fehlermeldung erhalte ich :<br />
Zugriffsverletzung beim Lesen an Position 0xcccccccc<br />
,welche immer gleich ist (was liegt denn an der Speicherpos?)</p>
<p>Wenn ich stattdessen :</p>
<pre><code>engine-&gt;totest()
</code></pre>
<p>mit</p>
<pre><code>totest()
return fenster-&gt;test()
</code></pre>
<p>aufrufe kommt das gleiche an der stelle von return. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Was kann ich machen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Gibt es irgentwie eine beschränkung das man in der WndProc nicht andere bestimmte Funktionen aufrufen kann?</p>
<p>- ist das so verständlich gefragt?</p>
<p>Compiler: MS Visual C++ Express 2005</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419655</guid><dc:creator><![CDATA[Vallan]]></dc:creator><pubDate>Wed, 12 Dec 2007 20:47:45 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Wed, 12 Dec 2007 21:39:28 GMT]]></title><description><![CDATA[<p>Hmm deine Kapselung der WinAPI Fenstermethoden in Klassen scheint fehlerhaft zu sein. Wenn das korrekt wäre, müssten deine Variablen nichtmehr public-access haben. Evtl. zeigst du mal deine Implementierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419675</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 12 Dec 2007 21:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Wed, 12 Dec 2007 22:49:14 GMT]]></title><description><![CDATA[<p>Der Debugger markiert nicht- initialisierten speicher mit diesem pattern 0xcccccccc. So soll nicht-initialisierter speicher (z.B. variabeln) erkannt werden können. Es gibt noch andere patterns...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419693</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 12 Dec 2007 22:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Thu, 13 Dec 2007 07:23:52 GMT]]></title><description><![CDATA[<p>Vallan schrieb:</p>
<blockquote>
<p>Gibt es irgentwie eine beschränkung das man in der WndProc nicht andere bestimmte Funktionen aufrufen kann?</p>
</blockquote>
<p>Speziell für eine WndProc kenne ich keine Einschränkungen - aber bevor du über einen Zeiger die Klassenmethoden aufrufst, solltest du diesen erstmal mit der Adresse eines real existierenden Objekts initialisieren (an der Adresse 0xCCCCCCCC ist <em>nichts</em>, das ist einfach der Defaultwert für nicht-initialisierte Variablen (im Debug-Build)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419755</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 13 Dec 2007 07:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Thu, 13 Dec 2007 19:02:03 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
<p>Ich weiß jetzt immerhin das es daran liegt das die variable anscheinen noch nicht initialisiert ist.</p>
<p>Generelle Frage:<br />
Ab wann ist denn eine MemberVariable initialisiert und &quot;öffentlich&quot; zugänglich bzw ab wann ist denn ein Objekt (für von außerhalb) erstellt? nachdem der Konstruktor komplett durch ist (anders kannich mir das nicht erklären).</p>
<p>Und wie könnte ich das dann umgehen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Edit (3 oder so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) : bzw wie kann ich feststellen ob die Membervariabele initialisiert ist, &quot;if (class-&gt;var!=0)&quot; gibt einen error! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Mein Prob genauer:<br />
ICh habe mal das debuggen gelehrnt(vorher hab ich überall Messageboxen reingepflastrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) und festgestellt das vorher erfolgeich auf das objekt zugegriffen wurde (undzwar wärend des Konstruktors des mittleren elementes) dann Zeige ich das fenster mit ShowWindow(hWnd,SW_SHOW); an und erhalte die<br />
nachricht (WM_Size) und grife dann aus dieser Funktion (von außen) auf das Member zu, der Debugger sagt das mein Objekt nochnicht erstellt sei.</p>
<p>PS: mir fällt grade auf das die Memberfunktionen schon verwendet werden können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> nochmehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
aber immerhin kann die dann auch nicht auf die Membervariablen zugreifen, was mich ein bisschen erleichtert <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/1420140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420140</guid><dc:creator><![CDATA[Vallan]]></dc:creator><pubDate>Thu, 13 Dec 2007 19:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Thu, 13 Dec 2007 21:19:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Ab wann ist denn eine MemberVariable initialisiert und &quot;öffentlich&quot; zugänglich bzw ab wann ist denn ein Objekt (für von außerhalb) erstellt? nachdem der Konstruktor komplett durch ist (anders kannich mir das nicht erklären)</p>
</blockquote>
<p>Member Variablen sollen eben nicht öffentlich zugänglich gemacht werden (Kappeslung!!). Mach dafür Get/Set Methoden.</p>
<p>Für Variablen gilt:<br />
Initialieren im Konstruktor und wenn nötig löschen im Destruktor.</p>
<p>Bsp. Initialisation:</p>
<pre><code class="language-cpp">class A
{
public:
   // Konstruktor mit Initialisierungsliste
   A() : m_val(27)
   {
   }

   // Getter
   int GetVal() const
   {
       return m_val;
   }

   // Setter
   void SetVal(int val)
   {
      m_val = val;
   }

private:
   int m_val;
};
</code></pre>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420224</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 13 Dec 2007 21:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to WndProc Problem: Aufruf von Klassenmembern bzw Pointern on Fri, 14 Dec 2007 16:34:54 GMT]]></title><description><![CDATA[<p>Pouh,<br />
hab die Lösung gefunden:<br />
aus IRGENTWELCHEN Grünenden ist</p>
<pre><code class="language-cpp">this
</code></pre>
<p>in der WNDPROC nicht der Zeiger auf die Klasse sondern auf was ganz anderes.</p>
<p>Meine Vorrübergehende Lösung:<br />
Eine globale variable die die oberste bzw benötigte klasse hält.<br />
Bzw, zur kapslung eine Statische Variable &quot;ich&quot; die this enthält( es gibt jewails nur eine instanz)</p>
<p>PS: natürlcih werde ich das mit der Kapslung jetzt wieder genauer nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420640</guid><dc:creator><![CDATA[Vallan]]></dc:creator><pubDate>Fri, 14 Dec 2007 16:34:54 GMT</pubDate></item></channel></rss>