<?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[Dialog im Workerthread mit Zeiger auf Hauptdialog]]></title><description><![CDATA[<p>Hi!<br />
Ich möchte gerne einen Dialog mit kleinem AVI im Thread starten, der anzeigt dass gerade eine längere Aktion in der Hauptanwendung läuft.<br />
Dafür muss der Thread allerdings ab und zu nachsehen, ob die Aktion bereits beendet ist. Deshalb übergebe ich dem Thread den this-Zeiger des Hauptdialogs, aber Irgendetwas scheint daran nicht ganz koscher zu sein, denn der Thread-Dialog benimmt sich komisch:<br />
Er reagiert nicht auf Klicks + Tasten aber beendet sich trotzdem (meistens) korrekt.</p>
<p>Thread starten:</p>
<pre><code class="language-cpp">CWinThread* pThread = AfxBeginThread(thrFunction, this);
</code></pre>
<p>Meine Thread-Funktion:</p>
<pre><code class="language-cpp">UINT CTestDlg::thrFunction(LPVOID pParam)
{
	CAnimateDlg MyDlg;
	MyDlg.m_pDlg =(CTestDlg*)pParam;
	MyDlg.DoModal();
	return 0;
}
</code></pre>
<p>Und diese Schleife läuft im Dialog:</p>
<pre><code class="language-cpp">while (m_pDlg-&gt;m_bStartStop == TRUE)
{
	Sleep(10);
}
this-&gt;EndDialog(0);
</code></pre>
<p>Frage: Wie übergebe ich meinem Dialog im Thread denn nun den this-Zeiger so, dass er auch korrekt auf den Hauptdialog zugreifen kann?</p>
<p>Thx für Eure Tips schonmal! <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/69693/dialog-im-workerthread-mit-zeiger-auf-hauptdialog</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 19:15:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/69693.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Mar 2004 15:22:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 15:22:11 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich möchte gerne einen Dialog mit kleinem AVI im Thread starten, der anzeigt dass gerade eine längere Aktion in der Hauptanwendung läuft.<br />
Dafür muss der Thread allerdings ab und zu nachsehen, ob die Aktion bereits beendet ist. Deshalb übergebe ich dem Thread den this-Zeiger des Hauptdialogs, aber Irgendetwas scheint daran nicht ganz koscher zu sein, denn der Thread-Dialog benimmt sich komisch:<br />
Er reagiert nicht auf Klicks + Tasten aber beendet sich trotzdem (meistens) korrekt.</p>
<p>Thread starten:</p>
<pre><code class="language-cpp">CWinThread* pThread = AfxBeginThread(thrFunction, this);
</code></pre>
<p>Meine Thread-Funktion:</p>
<pre><code class="language-cpp">UINT CTestDlg::thrFunction(LPVOID pParam)
{
	CAnimateDlg MyDlg;
	MyDlg.m_pDlg =(CTestDlg*)pParam;
	MyDlg.DoModal();
	return 0;
}
</code></pre>
<p>Und diese Schleife läuft im Dialog:</p>
<pre><code class="language-cpp">while (m_pDlg-&gt;m_bStartStop == TRUE)
{
	Sleep(10);
}
this-&gt;EndDialog(0);
</code></pre>
<p>Frage: Wie übergebe ich meinem Dialog im Thread denn nun den this-Zeiger so, dass er auch korrekt auf den Hauptdialog zugreifen kann?</p>
<p>Thx für Eure Tips schonmal! <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/491826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491826</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Tue, 30 Mar 2004 15:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 15:43:04 GMT]]></title><description><![CDATA[<p>Hm,<br />
ich würds anders machen.<br />
Vom Hauptfenster aus den Dialog nicht-modal starten und zusätzlich<br />
einen Arbeitsthread starten, der deine Aufgaben erledigen soll.</p>
<p>Wenn diese Aufgaben im Hauptthread erledigt werden, ist dieser blockiert (was userunfreundlich ist).</p>
<p>Grüße Rapha</p>
<p>ps. das der Dialog sich komisch verhält, liegt daran, dass du mit folgendem Code ja gar keine Nachrichten zu ihm durchlässt:</p>
<pre><code class="language-cpp">while (m_pDlg-&gt;m_bStartStop == TRUE)
{
    Sleep(10);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/491846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491846</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Tue, 30 Mar 2004 15:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 15:44:38 GMT]]></title><description><![CDATA[<p>Tip: nimm ein Event... wenn ich schleifen mit nem sleep sehe die so lange vor sich hin laufen bis irgend was passiert, frage ich mich immer ob Leute im wirklichen leben dann auch alle 5s das händy aus der tasche nehmen um nachzusehen ob grad jemand anruft..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/491847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491847</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Tue, 30 Mar 2004 15:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 16:20:12 GMT]]></title><description><![CDATA[<p>Ein Arbeitsthread ist schonmal gut, aber soweit ich weiss sind doch die ganzen DAO-Klassen nicht thread-save, oder?<br />
Ich mache in der Zeit eine etwas umfangreichere DB-Abfrage mit DAO und möchte das dem User in irgendeiner Weise anzeigen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/491874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491874</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Tue, 30 Mar 2004 16:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 16:28:20 GMT]]></title><description><![CDATA[<p>Solange du nicht aus mehreren threads gleichzeitig darauf zugreifst ist das kein Problem und sonst musst die threads synchronsieren, auch kein unlösbares problem <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/491881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491881</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Tue, 30 Mar 2004 16:28:20 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog im Workerthread mit Zeiger auf Hauptdialog on Tue, 30 Mar 2004 16:40:05 GMT]]></title><description><![CDATA[<p>OK, dann werd' ich mal sehen wie ich Eure Tips einbaue... <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>
<p>Danke + Gruss T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/491888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/491888</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Tue, 30 Mar 2004 16:40:05 GMT</pubDate></item></channel></rss>