<?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[Pointer-Problem]]></title><description><![CDATA[<p>Hey Leute.<br />
Ich habe eine Klasse, zum Erstellen einer vereinfachten GUI. In der WinMain-Funktion erstelle ich ein Objekt zu dieser Klasse und möchte dann einen Pointer auf das Objekt an eine andere Funktion weiter geben (an einen Thread) und dort dann für den Benutzer benutzbar machen.<br />
In Code sähe das ganze dann so aus:</p>
<pre><code class="language-cpp">// core.h
int WINAPI WinMain(...)
{
    GUI gui(&quot;Fenstertitel&quot;);
    CreateThread(0, 0, MainFunktion, &amp;gui, 0, 0);
    return gui.MessageLoop();
}

// main.cpp
DWORD WINAPI MainFunktion(void* gui)
{
    gui-&gt;new_button(&quot;Klick mich!&quot;);
}
</code></pre>
<p>Mein Problem ist es, dass er einfach keinen neuen Button erstellt, während, wenn ich das ganze ohne Pointer/Thread mache (sondern einfach die Funktion MainFunktion aufrufe und die gui als Objekt übergebe) der Button wie gewollt erstellt wird.<br />
Hab ich das mit den Pointern noch nicht verstanden, oder was mache ich falsch?</p>
<p>MFG DerCoder</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279629/pointer-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 12:09:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279629.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Dec 2010 19:34:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer-Problem on Thu, 30 Dec 2010 19:34:15 GMT]]></title><description><![CDATA[<p>Hey Leute.<br />
Ich habe eine Klasse, zum Erstellen einer vereinfachten GUI. In der WinMain-Funktion erstelle ich ein Objekt zu dieser Klasse und möchte dann einen Pointer auf das Objekt an eine andere Funktion weiter geben (an einen Thread) und dort dann für den Benutzer benutzbar machen.<br />
In Code sähe das ganze dann so aus:</p>
<pre><code class="language-cpp">// core.h
int WINAPI WinMain(...)
{
    GUI gui(&quot;Fenstertitel&quot;);
    CreateThread(0, 0, MainFunktion, &amp;gui, 0, 0);
    return gui.MessageLoop();
}

// main.cpp
DWORD WINAPI MainFunktion(void* gui)
{
    gui-&gt;new_button(&quot;Klick mich!&quot;);
}
</code></pre>
<p>Mein Problem ist es, dass er einfach keinen neuen Button erstellt, während, wenn ich das ganze ohne Pointer/Thread mache (sondern einfach die Funktion MainFunktion aufrufe und die gui als Objekt übergebe) der Button wie gewollt erstellt wird.<br />
Hab ich das mit den Pointern noch nicht verstanden, oder was mache ich falsch?</p>
<p>MFG DerCoder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000498</guid><dc:creator><![CDATA[DerCoder]]></dc:creator><pubDate>Thu, 30 Dec 2010 19:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Problem on Thu, 30 Dec 2010 19:51:04 GMT]]></title><description><![CDATA[<p>Das kann ja so auch überhaupt nicht fehlerfrei kompilieren, da fehlt mindestens noch ein cast in der MainFunktion (wegen dem void*).<br />
Ich kenne zwar die GUI nicht, aber meistens ist es so, daß GUI-Methoden nur in einem Thread (d.h. dem Hauptthread) aufgerufen werden dürfen (d.h. wenn die GUI nur ein Wrapper um die WinAPI ist, dann ist es definitiv so!).</p>
<p>Welchen Sinn verfolgst du überhaupt mit dem Thread?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000504</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 30 Dec 2010 19:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Problem on Thu, 30 Dec 2010 20:22:10 GMT]]></title><description><![CDATA[<p>Ja den cast hab ich drin, nur vereinfacht hier gepostet.. Sry<br />
Ehm ich wollte dann die Userfunktionen in einen Thread machen, damit er seine Funktionen und so unabhängig von der GUI aufrufen kann.</p>
<p>Hab das mit dem Thread rausgelassen und die Funktion so aufgerufen. Jetzt klappt es -.-<br />
Verstanden hab ichs trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000514</guid><dc:creator><![CDATA[DerCoder]]></dc:creator><pubDate>Thu, 30 Dec 2010 20:22:10 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Problem on Fri, 31 Dec 2010 00:51:44 GMT]]></title><description><![CDATA[<blockquote>
<p>meistens ist es so, daß GUI-Methoden nur in einem Thread (d.h. dem Hauptthread) aufgerufen werden dürfen (d.h. wenn die GUI nur ein Wrapper um die WinAPI ist, dann ist es definitiv so!</p>
</blockquote>
<p>Naja, ne, das ist definitiv nicht so.</p>
<p>Unter Windows gibt es schonmal keinen Haupt-Thread per se.</p>
<p>Was auch völlig problemlos funktioniert, ist, verschiedene, von einander unabhängige Top-Level Fenster in verschiedenen Threads zu haben. (von einander unabhängige = sie kommunizieren nicht miteinander)</p>
<p>Was meistens noch &quot;gut&quot; geht: wenn die Fenster nur per PostMessage/SendNotifyMessage miteinander kommunizieren.</p>
<p>Aber es wird sehr schnell sehr kompliziert, wenn man synchron Messages zwischen Fenstern verschiedener Threads schicken muss (SendMessage). Und bei Parent/Child Beziehungen macht Windows das an diversen Stellen selbst, was dann schnell zu nem Deadlock führen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000610</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 31 Dec 2010 00:51:44 GMT</pubDate></item></channel></rss>