<?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[CDialog]]></title><description><![CDATA[<p>Hallo!<br />
Wie kann ich an ein CDialog Parameter übergeben, damit ich nach dem Schließen des Dialogs den gedrückten Button ermitteln kann.<br />
Normal geht das so:<br />
CMyDialog dlg;<br />
dlg.DoModal();</p>
<p>Ich würde aber gerne eine Instanz der Klasse erstellen und dem Konstruktor Parameter übergeben</p>
<p>CMyDialog dlg = new CMyDialog(bla, bla);<br />
if(dlg.DoModal() == IDOK)<br />
=&gt; Das brigng mit leider Speicherzugrifffehler</p>
<p>Mit Create(...) und Show(...) geht es ohne Probleme, aber ich weiß hier nicht wie ich hier den gedrückten Button ermitteln kann.<br />
Kann mir jemand helfen?</p>
<p>Danke im voraus.<br />
Krys</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/42628/cdialog</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 08:33:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/42628.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jul 2003 07:21:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 07:21:35 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Wie kann ich an ein CDialog Parameter übergeben, damit ich nach dem Schließen des Dialogs den gedrückten Button ermitteln kann.<br />
Normal geht das so:<br />
CMyDialog dlg;<br />
dlg.DoModal();</p>
<p>Ich würde aber gerne eine Instanz der Klasse erstellen und dem Konstruktor Parameter übergeben</p>
<p>CMyDialog dlg = new CMyDialog(bla, bla);<br />
if(dlg.DoModal() == IDOK)<br />
=&gt; Das brigng mit leider Speicherzugrifffehler</p>
<p>Mit Create(...) und Show(...) geht es ohne Probleme, aber ich weiß hier nicht wie ich hier den gedrückten Button ermitteln kann.<br />
Kann mir jemand helfen?</p>
<p>Danke im voraus.<br />
Krys</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309433</guid><dc:creator><![CDATA[Krys]]></dc:creator><pubDate>Tue, 15 Jul 2003 07:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 07:39:00 GMT]]></title><description><![CDATA[<p>du kannst natürlich z.B 2 bool Klassen-Variablen anlegen die du beim Druck auf den Button auf true setzt (müssen nat. public sein).<br />
Dann hast du nach Beenden des Dlg noch Gelegenheit da ranzukommen</p>
<p>dlg.DoModal();</p>
<p>if (dlg.m_OKButton)<br />
{<br />
// mach watt<br />
}</p>
<p>Aber eigentlich sollte das mit<br />
if (dlg.DoModal() == IDOK)<br />
funktionieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Habe das schon öfters gemacht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309447</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Tue, 15 Jul 2003 07:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 07:45:00 GMT]]></title><description><![CDATA[<p>... das habe ich mir auch gedacht. Ich übergebe an das Dialog 2 Instanzen und im Dialog greife ich auf die Variablen der übergebenen Instanze zu. Und da kommt es zum Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309454</guid><dc:creator><![CDATA[Krys]]></dc:creator><pubDate>Tue, 15 Jul 2003 07:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 07:50:10 GMT]]></title><description><![CDATA[<p>vielleicht solltest auch den -&gt; Operator anstatt Punktoperator benutzen?</p>
<pre><code class="language-cpp">CMyDialog dlg = new CDialog;

if (dlg-&gt;DoModal() == IDOK)
	//...

delete dlg;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/309459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309459</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Tue, 15 Jul 2003 07:50:10 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 08:29:30 GMT]]></title><description><![CDATA[<p>Diese Möglichkeit habe ich auch schon ausprobiert. In diesem Fall stürzt mein Programm eher ab, und genau an dieser Stelle</p>
<pre><code class="language-cpp">int CDialog::Domodal()
{
  ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
		m_lpDialogTemplate != NULL);
  ...
}
</code></pre>
<p>ich weiß nicht was ich falsch mache!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309485</guid><dc:creator><![CDATA[Krys]]></dc:creator><pubDate>Tue, 15 Jul 2003 08:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 08:32:13 GMT]]></title><description><![CDATA[<p>dann liegt der Fehler igendwo anders</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309489</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Tue, 15 Jul 2003 08:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog on Tue, 15 Jul 2003 09:57:38 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>AFAIK hat CDialog ne Methode namens EndDialog(). Mit der kannst du den Dialog beenden und - je nach Button zum Beispiel unterscheidlieche - Codes zrückliefern lassen.</p>
<pre><code class="language-cpp">//Klick auf Button &quot;Abbrechen&quot;:
{
   EndDialog(0);
}
//Klick auf &quot;Wasweißich&quot;:
{
   EndDialog(-56);
}
//etc...
</code></pre>
<p>Hier nochmal der MSDN-Beitrag dazu:</p>
<blockquote>
<p>Call this member function to terminate a modal dialog box. This member function returns nResult as the return value of DoModal. You must use the EndDialog function to complete processing whenever a modal dialog box is created.</p>
<p>You can call EndDialog at any time, even in OnInitDialog, in which case you should close the dialog box before it is shown or before the input focus is set.</p>
<p>EndDialog does not close the dialog box immediately. Instead, it sets a flag that directs the dialog box to close as soon as the current message handler returns.</p>
</blockquote>
<p>Codetechnisch könnte das dann so aussehen:</p>
<pre><code class="language-cpp">CMyDlg* dlg = new CMyDlg;
int nReturn = dlg-&gt;DoModal();
delete dlg;

switch(nReturn)
{
case 1:
   //Aha, OK wurde geklickt
case 2:
   //Aha, XXX wurde geklickt
case -45:
   //Aha, YYY wunrde gklickt
//usw...
}
</code></pre>
<p>Wichtig ist nur, dass du den Dialog statt über CDialog::OnOK() bzw. CDialog::OnCancel() nun über CDialog::EndDialog(int) &quot;beendest&quot; (wie man dem Zitat entnehmen kann wird der Dialog ja nicht direkt geschlossen).</p>
<p>Bye.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/309579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/309579</guid><dc:creator><![CDATA[Sanji]]></dc:creator><pubDate>Tue, 15 Jul 2003 09:57:38 GMT</pubDate></item></channel></rss>