<?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-Fesnter aus anderem Thread heraus schließen ?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich stehe wieder mal vor einem für mich unlösbaren Problem: Ich habe eine Dialogbasierte Anwendung. diese Anwendung startet mal einen zweiten Thread und gleich hinterher zeigt sie einen Modal-Dialog &quot;Bitte Warten&quot;.</p>
<p>Nun soll sich das Fenster wieder schließen wenn der Thread zu Ende ist. Ich übergebe dem Thread einen Pointer auf meinen Hauptdialog weil der thread Variablen sdderaus braucht und aktuelisieren soll. Aber ich denke diese pointer hilft mir nicht viel weil das Modal Fenster ja eine eigene Klasse ist.</p>
<p>Mein Hauptdialog kann da ja nix machen weil er ist ja &quot;blockiert&quot; seit er xxx.DoModal(); aufgerufen hat. Gibt es da eine Möglichkeit ?</p>
<p>Danke</p>
<p>Ray</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/62681/dialog-fesnter-aus-anderem-thread-heraus-schließen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 05:09:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/62681.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jan 2004 09:14:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 09:14:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich stehe wieder mal vor einem für mich unlösbaren Problem: Ich habe eine Dialogbasierte Anwendung. diese Anwendung startet mal einen zweiten Thread und gleich hinterher zeigt sie einen Modal-Dialog &quot;Bitte Warten&quot;.</p>
<p>Nun soll sich das Fenster wieder schließen wenn der Thread zu Ende ist. Ich übergebe dem Thread einen Pointer auf meinen Hauptdialog weil der thread Variablen sdderaus braucht und aktuelisieren soll. Aber ich denke diese pointer hilft mir nicht viel weil das Modal Fenster ja eine eigene Klasse ist.</p>
<p>Mein Hauptdialog kann da ja nix machen weil er ist ja &quot;blockiert&quot; seit er xxx.DoModal(); aufgerufen hat. Gibt es da eine Möglichkeit ?</p>
<p>Danke</p>
<p>Ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444072</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Mon, 26 Jan 2004 09:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 11:50:36 GMT]]></title><description><![CDATA[<p>zeiger auf den modal dialog in der hauptklasse speichern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444158</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Mon, 26 Jan 2004 11:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 13:02:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>thx für die Antwort, leider weiß ich nicht wie ich das hinbekomme <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="😞"
    /> Kannst du mir das an einem kleinen Bsp vielleicht kurz erläutern ?</p>
<p>Thx<br />
ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444222</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Mon, 26 Jan 2004 13:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 14:36:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Du kannst den Dialog mittels<br />
SendMessage(IDD_DIALOG,WM_CLOSE,0,0);<br />
schließen.</p>
<p>mfg tomb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444332</guid><dc:creator><![CDATA[tomb]]></dc:creator><pubDate>Mon, 26 Jan 2004 14:36:57 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 15:13:48 GMT]]></title><description><![CDATA[<p>Hi Tomb,</p>
<p>wenn ich das so versuche wie Du gesagt hast erhalte ich immer eine Fehlermeldung vom Compiler:</p>
<p>error C2660: 'SendMessageA' : function does not take 4 parameters <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>Hab das jetzt versucht innerhal der Threadfunction zu machen und innerhalb der Function die de THread startet, kommt aber immer dieser Fehler.</p>
<p>thx<br />
ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444400</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Mon, 26 Jan 2004 15:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 15:24:31 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Es kann sein das es</p>
<p>SendMessage(IDD_DIALOG,WM_CLOSE,0);</p>
<p>lautet. (kann jetzt nicht in der msdn nachsehen)</p>
<p>tomb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444413</guid><dc:creator><![CDATA[tomb]]></dc:creator><pubDate>Mon, 26 Jan 2004 15:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 15:57:49 GMT]]></title><description><![CDATA[<p>Re,</p>
<p>also compilieren kann ich es jetzt, aber das Fenster schließt sich nicht...Ich muß den Befehl ja aus dme Thread heraus aufrufen, dieser Thread hat einen Pointer zum Hauptdialig, aber nicht zu diesem Neuen Popup-Fenster. Kann es daran liegen ?</p>
<p>Thx<br />
ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444453</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Mon, 26 Jan 2004 15:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 16:39:41 GMT]]></title><description><![CDATA[<p>IDD_DIALOG muß die ID des zu schließenden Dialogs sein.<br />
Ich weis nicht ob die ID in der Thread Funktion gültig ist.<br />
Du kannst einen Zeiger des zu schließenden Dialogs<br />
der Thread Funk. übergeben.</p>
<p>Mit diesem Zeiger hast du auch die Möglichkeit<br />
in der Thread Funk. mit</p>
<p>p_dialog-&gt;SendMessage(WM_CLOSE,0...</p>
<p>den Dialog zu schließen.</p>
<p>tomb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444481</guid><dc:creator><![CDATA[tomb]]></dc:creator><pubDate>Mon, 26 Jan 2004 16:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 17:03:18 GMT]]></title><description><![CDATA[<p>Ich glaube das IDD_DIALOG als 1 Parameter blödsinn ist.<br />
Kann jetzt leider nicht in der msdn nachsehen.</p>
<p>Versuch doch mal als ersten Parameter<br />
das Fenster bzw. Dialog Handle anzugeben.</p>
<p>tomb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444507</guid><dc:creator><![CDATA[tomb]]></dc:creator><pubDate>Mon, 26 Jan 2004 17:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 17:07:43 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>tomb schrieb:</p>
<blockquote>
<p>IDD_DIALOG muß die ID des zu schließenden Dialogs sein.<br />
Ich weis nicht ob die ID in der Thread Funktion gültig ist.<br />
Du kannst einen Zeiger des zu schließenden Dialogs<br />
der Thread Funk. übergeben.</p>
<p>Mit diesem Zeiger hast du auch die Möglichkeit<br />
in der Thread Funk. mit</p>
<p>p_dialog-&gt;SendMessage(WM_CLOSE,0...</p>
<p>den Dialog zu schließen.</p>
<p>tomb</p>
</blockquote>
<p>So würde ich es machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<blockquote>
<p>Ich glaube das IDD_DIALOG als 1 Parameter blödsinn ist.</p>
</blockquote>
<p>Stimmt, der 1. Parameter ist ein HWND</p>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444510</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Mon, 26 Jan 2004 17:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 17:46:12 GMT]]></title><description><![CDATA[<p>Das Problem ist nur daß ich mit diesen Pointern noch nie richtig gearbeitet habe (außer diesem einen Pointer in dem Thread-Ding, Rapha weiß Bescheid *g*).</p>
<p>Könnt ihr mir vielleicht kurz ein beispiel zeigen wie cih so einen pointer erstelle, dann werde ich versuchen das umzusetzen <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>thx<br />
ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444564</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Mon, 26 Jan 2004 17:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Mon, 26 Jan 2004 23:13:46 GMT]]></title><description><![CDATA[<p>CDialog MyDialog;<br />
//DlgPtr in der hautpklasse speichern und mittels DlgPtr-&gt; benutzen<br />
CDialog* DlgPtr=&amp;MyDialog;<br />
MyDialog.DoModal();</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444791</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Mon, 26 Jan 2004 23:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Tue, 27 Jan 2004 07:24:01 GMT]]></title><description><![CDATA[<p>Hi sovok,</p>
<p>klappt leider nicht bei mir <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="😞"
    /> Also ich will das Fenster ja schließen, nicht öffnen also muß ich OnOK(); ausführen, wenn ich aber den pointer so setze wie von Dir beschrieben:</p>
<p>CDialog* DlgPtr=&amp;CTestDlg;</p>
<p>error C2275: 'CTestDlg' : illegal use of this type as an expression</p>
<p>..habe noch einen Beitrag auf CodeGuru gelesen, da wird So gemacht:</p>
<p>CTestDlg* m_TestDlg;<br />
m_TestDlg=new CTestDlg;</p>
<p>So kann ich wenigstens z.B. eine Memberfunktion von CTestdlg aufrufen (m_TestDlg-&gt;test();) aber wenn ich dann OnOK() aufrufe stürtzt das Program mit einem Assertion Fehler ab <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>thx<br />
Ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444877</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Tue, 27 Jan 2004 07:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Tue, 27 Jan 2004 12:17:04 GMT]]></title><description><![CDATA[<p>Hi, du darfst OnOK nicht auserhalb der Dialogklasse aufrufen, da es protected deklariert ist. Benutze die SendMessage-Methode</p>
<pre><code class="language-cpp">CDialog* DlgPtr=&amp;CTestDlg;
</code></pre>
<p>Dieser Code kann nicht gehen, da du den Zeiger ja auf einen Typ (=&gt;CTestDlg) zeigen lässt.<br />
Das ist Schwachsinn, da du ja auch nicht schreibst:</p>
<pre><code class="language-cpp">int = 7;
cout &lt;&lt; int;
</code></pre>
<p>Du musst den Zeiger entweder auf eine bestehende &quot;normale&quot; Variable/auf ein Objekt zeigen lassen (wie in dem Beispiel von Sovok), oder du erstelllst mit new ein Objekt dynamisch (dann aber nicht vergessen es mit delete zu löschen).</p>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/445116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/445116</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Tue, 27 Jan 2004 12:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Tue, 27 Jan 2004 15:32:59 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also nochmal, das wird mir alles zuviel *G*, zumal das ja auch noch Thread-Übergreifend laufen muß:</p>
<p>Ich habe bisher einfach sowas in der art:</p>
<p>CTestDlg myDialog; //CtestDlg ist meine KLasse<br />
myDialog.DoModal();</p>
<p>Somit wird mein Dialog angezeigt., Nun will ich eben daß dieses ding von einem 2. Thread wieder geschlossen wird. Wenn ich den Pointer jetzt NICHT im Thread2 setze (sondern z.B. noch eine Zeile Vor dem DoModal) und mit<br />
pPointername-&gt;SendMessage(..) das Ding aus Thread2 schließen will kennt er den Pointer nicht (logisch).</p>
<p>Will ich im Thread mein Pointer setzen kennt er die Klasse CTestDlg nicht. Also dachte ich ich setzte ne Membervariable als Typ CTestDlg, als Name myDialog und die dann als Public ?! dann kann ich wohl im Thread2 den Pointer erzeugen, und erhalte zwar keinen Fehler mehr beim Kompilieren aber mein Hauptdialog erscheint nicht mehr ??? Er kompiliert und fertig....der Dialog kommt einfach nicht mehr ?!</p>
<p>Und zuletzt, wenn ich das Beispiel von codeguru umbau:</p>
<p>CTestDlg* pTestDialog = new CTestDlg;<br />
pTestDialog-&gt;SendMessage(WM_CLOSE,0,0);</p>
<p>Dann bekomme ich wieder diesen Assertion Fehler, aber ich kann andereseits z.b. ein Funktion derCTestDlg Klasse mit</p>
<p>pTestDialog-&gt;Test();</p>
<p>starten und erhalte keinen Fehler.</p>
<p>thx<br />
ray</p>
]]></description><link>https://www.c-plusplus.net/forum/post/445135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/445135</guid><dc:creator><![CDATA[rayden5_]]></dc:creator><pubDate>Tue, 27 Jan 2004 15:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog-Fesnter aus anderem Thread heraus schließen ? on Tue, 27 Jan 2004 16:59:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du machst einfach folgendes:</p>
<pre><code class="language-cpp">CTestDlg myDialog; //CtestDlg ist meine KLasse
CTestDlg* pDialog = &amp;myDialog;
myDialog.DoModal();
</code></pre>
<p>Den Zeiger pDialog übergibst du der Threadfunktion als Parameter.<br />
in der ThreadFunktion kannst du dann mit pDialog-&gt;SendMessage(WM_CLOSE,...<br />
den Dialog beenden</p>
<p>rayden5_ schrieb:</p>
<blockquote>
<p>CTestDlg* pTestDialog = new CTestDlg;<br />
pTestDialog-&gt;SendMessage(WM_CLOSE,0,0);</p>
</blockquote>
<p>Dieses Beispiel kann nicht funktionieren, da der Dialog initialisiert sein muss (=&gt;InitDialog). Der Dialog wird initialisiert, sobald du DoModal aufrufst (d.h. InitDialog wird aufgerufen).</p>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/445483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/445483</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Tue, 27 Jan 2004 16:59:57 GMT</pubDate></item></channel></rss>