<?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[Modalen Dialog auf dem Heap erzeugen??]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte/muss meinen modalen Dialog mit new erzeugen, weil ich den Pointer brauche:</p>
<pre><code class="language-cpp">void showMyDialogModal(CMyDialog* pdlg)
{
    CMyDialog* pnewDialog;
    if(pglg == NULL)
       pnewDialog = new CMyDialog; //Mach nen Neuen, falls keiner da
    else
       pnewDialog = pdlg; //ansonsten nimm den alten

    pnewDialog-&gt;DoModal();
}
</code></pre>
<p>Irgendwo hab ich gehört, dass es eine Microsoft Richtlinie gibt, einen (modalen) Dialog immer auf dem Stack zu erzeugen.<br />
Kann das einer von euch bestätigen??</p>
<p>Oder habt ihr eine Idee, wie man obigen Code so umschreibt, dass beide Dialoge, pdlg und pnewDialog auf dem Stack erzeugt werden??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160598/modalen-dialog-auf-dem-heap-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 18:48:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160598.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Sep 2006 12:01:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Wed, 27 Sep 2006 12:01:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte/muss meinen modalen Dialog mit new erzeugen, weil ich den Pointer brauche:</p>
<pre><code class="language-cpp">void showMyDialogModal(CMyDialog* pdlg)
{
    CMyDialog* pnewDialog;
    if(pglg == NULL)
       pnewDialog = new CMyDialog; //Mach nen Neuen, falls keiner da
    else
       pnewDialog = pdlg; //ansonsten nimm den alten

    pnewDialog-&gt;DoModal();
}
</code></pre>
<p>Irgendwo hab ich gehört, dass es eine Microsoft Richtlinie gibt, einen (modalen) Dialog immer auf dem Stack zu erzeugen.<br />
Kann das einer von euch bestätigen??</p>
<p>Oder habt ihr eine Idee, wie man obigen Code so umschreibt, dass beide Dialoge, pdlg und pnewDialog auf dem Stack erzeugt werden??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145365</guid><dc:creator><![CDATA[electron]]></dc:creator><pubDate>Wed, 27 Sep 2006 12:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Wed, 27 Sep 2006 12:05:16 GMT]]></title><description><![CDATA[<p>Warum sollte man ihn immer auf dem Stack erzeugen? Es ist halt wesentlich einfacher und Du brauchst Dich um Dinge wie Expections und Destruktoren nicht zu kümmern... Einen Vorschlag dazu mag es schon geben (wobei ich den noch nicht gesehen habe); aber man kann es natürlich auch anders machen.</p>
<p>==&gt; Martin !?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145369</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 27 Sep 2006 12:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Wed, 27 Sep 2006 17:25:01 GMT]]></title><description><![CDATA[<p>Es gibt solch eine Richtlinie nicht. Man muss sich nur klar sein, dass beim Zerstören des Fensters eben nicht eben auch ein delete this ausgeführt wird im PostNcDestroy wie bei View's und den Frame Klassen. D.h. Dialoge gehören zu den Klassen, die man selbst entsorgen muss, d.h. es ist nicht schlecht, sie auf dem Stack/global/static zu platzieren. Aber das ist eben auch die einzige Einschränkung.</p>
<p>Ich nutze Dialoge gerne auf dem Heap, besonders wenn er Einstellungen beherbergt, die ich beim nächsten Aufruf wieder benötige...<br />
Man kann theoretisch sogar nicht modale Dialoge bauen, die sich selbst entsorgen, indem man PostNcDestroy überschreibt und Ihnen dadurch beibringt beim zerstören des Fensters auch die MFC Hülle zu entsorgen.</p>
<p>HTH</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145587</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 27 Sep 2006 17:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Thu, 28 Sep 2006 11:42:35 GMT]]></title><description><![CDATA[<p>Wie zerstört man dann korrekt einen Dialog??</p>
<pre><code class="language-cpp">CMyDialog* pdlg = new CMyDialog;
pdlg-&gt;DoModal();
...??
delete(pdlg);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1145881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145881</guid><dc:creator><![CDATA[electron]]></dc:creator><pubDate>Thu, 28 Sep 2006 11:42:35 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Thu, 28 Sep 2006 16:27:02 GMT]]></title><description><![CDATA[<p>Jo. Schon richtig. Nach DoModal einfach delete.<br />
Ist der Dialog nicht Modal dann zuerst DestroyWindow und dann delete!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146063</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 Sep 2006 16:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Fri, 29 Sep 2006 07:50:56 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a></p>
<p>Nur nochmal um unser Missverständnis komplett auszuräumen.<br />
Du schreibst oben:</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>... D.h. Dialoge gehören zu den Klassen, die man selbst entsorgen muss, d.h. es ist nicht schlecht, sie auf dem Stack/global/static zu platzieren. Aber das ist eben auch die einzige Einschränkung.<br />
...</p>
</blockquote>
<p>und unten:</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Jo. Schon richtig. Nach DoModal einfach delete.<br />
Ist der Dialog nicht Modal dann zuerst DestroyWindow und dann delete!</p>
</blockquote>
<p>Ich erzeuge einen MODALEN Dialog mit new auf dem Heap. Ich mache kein Create. Reicht da nun ein delete(pdlg)??<br />
Muss ich bei einem modalen Dialog auf dem Heap DestroyWindow aufrufen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146341</guid><dc:creator><![CDATA[electron]]></dc:creator><pubDate>Fri, 29 Sep 2006 07:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to Modalen Dialog auf dem Heap erzeugen?? on Fri, 29 Sep 2006 09:58:57 GMT]]></title><description><![CDATA[<p>Noch mal:<br />
Nur bei nicht modalen Dialogen ist DestroyWindow nötig, weil bei modalen Dialogen nach der Rückkehr aus DoModal das Diaog Fenster automatisch zerstört wird.</p>
<p>Liegt der Dialog auf dem Heap ist in beiden Fällen delete nötig.</p>
<p>Wo habe ich mich unklar ausgedrückt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146448</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 29 Sep 2006 09:58:57 GMT</pubDate></item></channel></rss>