<?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[Nicht-modale KindDialoge]]></title><description><![CDATA[<p>Hallo Experten,</p>
<p>ich erstelle ein Programm, das ein Hauptfenster und zwei nicht-modale Fenster hat. Alles ist dialogbasierend. Meine nicht-modale Fenster erstelle ich so (nach einem Bsp. aus dem Buch):</p>
<pre><code>void MeineKlasseDlg::OnBnClickedHinzu() {
if (m_pKindDialog==NULL) {
m_pKindDialog=new CKindDialog(this);
if(m_pKindDialog-&gt;Create()==TRUE) {
GetDlgItem(IDC_HINZU)-&gt;EnableWindow(FALSE);
}
}
else {
m_pKindDialog-&gt;SetActiveWindow();
}
}
</code></pre>
<p>Wenn ich also ein Button auf dem Hauptfenster drücke, erscheinen KIndformulare (meine nicht-modale Fenster), aber nur einmal. Ich will aber, dass sie beliebig oft erscheinen. Was soll ich ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202753/nicht-modale-kinddialoge</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 04:08:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202753.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jan 2008 08:29:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 08:29:25 GMT]]></title><description><![CDATA[<p>Hallo Experten,</p>
<p>ich erstelle ein Programm, das ein Hauptfenster und zwei nicht-modale Fenster hat. Alles ist dialogbasierend. Meine nicht-modale Fenster erstelle ich so (nach einem Bsp. aus dem Buch):</p>
<pre><code>void MeineKlasseDlg::OnBnClickedHinzu() {
if (m_pKindDialog==NULL) {
m_pKindDialog=new CKindDialog(this);
if(m_pKindDialog-&gt;Create()==TRUE) {
GetDlgItem(IDC_HINZU)-&gt;EnableWindow(FALSE);
}
}
else {
m_pKindDialog-&gt;SetActiveWindow();
}
}
</code></pre>
<p>Wenn ich also ein Button auf dem Hauptfenster drücke, erscheinen KIndformulare (meine nicht-modale Fenster), aber nur einmal. Ich will aber, dass sie beliebig oft erscheinen. Was soll ich ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436791</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 08:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 08:37:41 GMT]]></title><description><![CDATA[<p>Du hast doch eien variable, die das hier kontrolliert &quot;m_pKindDialog&quot;. Wenn diese Variable belegt ist mit einem Dialog, dann wird kein zweiter erzeugt.</p>
<p>Versuche mal das if zu verstehen, was dort in dem Handler steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436797</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 15 Jan 2008 08:37:41 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 08:40:47 GMT]]></title><description><![CDATA[<p>Ich habe es schlecht erklärt. Für jedes Kinddialog wird so was erstellt. Es gibt zwei Buttons, für jedes eigene Variable, eigenes KindDialog usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436799</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 08:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 08:50:06 GMT]]></title><description><![CDATA[<p>Und wo ist das Problem? Willst du am Ende ein halbes Dutzend Ausgaben jedes Child-Dialogs auf dem Bildschirm verstreut haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436806</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 08:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 08:56:42 GMT]]></title><description><![CDATA[<p>Wenn ich ein Button auf dem Hauptfenster drücke, ersheint das KindDialog. Dann schließe ich das KindDialog. Wenn ich dasselbe Button auf dem Hauptfenster nochmal drücke, erscheint das Kinddialog nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436808</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 08:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 09:23:51 GMT]]></title><description><![CDATA[<p>Da mußt du vermutlich das Schließen des Kind-Dialogs abfangen und den Zeiger wieder auf NULL setzen - das passiert nicht automatisch (sprich: Auch wenn der Dialog nicht mehr existiert, verweist dein m_pKindDialog weiterhin auf den Speicherblock, wo er mal lebte).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436825</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 09:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 10:59:34 GMT]]></title><description><![CDATA[<p>Ich habe das Bsp. aus dem Buch weggeschmiesen und so gemacht:</p>
<pre><code>void MeineHauptKlasseDlg::OnBnClickedHinzu() {
m_pKindDialog=new CKindDialog(this);
m_pKindDialog-&gt;Create();
}
</code></pre>
<p>Jetzt kann ich mein Kindfenster mehrmals bekommen, aber auch ein halbes Dutzend Ausgaben jedes Child-Dialogs auf dem Bildschirm verstreut!</p>
<p>Mein KindDialog wird in der Klasse des Hauptfensters erzeugt, beim Drücken des Buttons 'Hinzu'. Im Konstruktor des Hauptfensters wird der KindDialog-Zeiger auf NULL gesetzt. Gelöscht wird das KindDialog in eigener Klasse, mit OnCancel():</p>
<pre><code>void MeinKindDlg:: OnCancel(){
delete MeinKindDlg();
DestroyWindow();
}
</code></pre>
<p>Ich verstehe es so, dass ich dem Hauptfenster mitteilen soll, dass das Kinddialog geschloßen ist. Wie kann man das machen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Oder verstehe ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436896</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 10:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 11:10:57 GMT]]></title><description><![CDATA[<p>Ja, diese Funktion sollte dem Hauptfenster mitteilen, daß das Kindfenster gerade im Nirvana verschwindet - und das Hauptfenster kümmert sich dann um den delete-Aufruf (der an dieser Stelle übrigens unsinnig und falsch ist):</p>
<pre><code class="language-cpp">void HauptDialog::OnEndKindDlg()
{
  delete m_pKind;
  m_pKind = NULL;//das hier ist wichtig, damit die Abfrage in deinem original-Code funktioniert
}

void KindDlg::OnCancel()
{
  DestroyWindow();
  m_pHaupt-&gt;OnEndKindDlg();
  //entweder du trägst beim Anlegen der Dialoge einen Zeiger auf den Haupt-Dialog ein auf den du hier zugreifen kannst
  //oder du hangelst dich über die Applikation zum Hauptdialog durch
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1436905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436905</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 11:10:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 11:25:02 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//oder du hangelst dich über die Applikation zum Hauptdialog durch
}
</code></pre>
</blockquote>
<p>Kanns du das bitte erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436922</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 11:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 11:48:10 GMT]]></title><description><![CDATA[<p>Ich habe einen Zeiger auf meinen KindDialog im Haupt-Dialog. Kann ich auch einen Zeiger auf Haupt-Dialog im KindDialog haben? Dazu muss ich beide in einander includieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436949</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 11:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 11:51:38 GMT]]></title><description><![CDATA[<p>Kannst du - und damit der Compiler das schluckt, gibt es ein nettes Feature namens &quot;Forward Deklaration&quot; (sprich: im Header des Kind-Dialogs brauchst du keinen #include für den Haupt-Dialog, sondern nur ein &quot;class MeineHauptKlasseDlg;&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436952</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 11:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:01:57 GMT]]></title><description><![CDATA[<p>Er will das nicht schlucken. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1436967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436967</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:06:05 GMT]]></title><description><![CDATA[<p>Was will er nicht schlucken? (im CPP des Kind-Dialogs brauchst du natürlich die volle Definition)</p>
<pre><code class="language-cpp">//Haupt.h

#include &quot;Kind.h&quot;

class HauptDlg : public CDialog
{
pblic:
  void OnButtonKind();
  void InKindEnd();
  ...
  KindDlg* m_pKind;
}

//Haupt.cpp
#include &quot;Haupt.h&quot;

void HauptDlg::OnButtonKind()
{
  ...
}
...

//Kind.h
class HauptDlg;

class KindDlg : public CDialog
{
  ...
  HauptDlg* m_pHaupt;
};

//Kind.cpp
#include &quot;Kind.h&quot;
#include &quot;Haupt.h&quot;
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1436974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436974</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:34:11 GMT]]></title><description><![CDATA[<p>Aha, er schluckt das. Bei der Ausführung, wenn der Button 'schließen' gedrückt wird (d.h. OnKindEnd() aufgerufen wird), bekomme ich eine Fehlermeldung:</p>
<p>Unbehandelte Ausnahme in Anwendung.exe: 0xC000005: Access Violation <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437003</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:45:15 GMT]]></title><description><![CDATA[<p>Ja, wie ich oben schon geschrieben habe, mußt du beim Anlegen des Kind-Dialogs auch den Verweis zurück auf den Hauptdialog setzen.</p>
<p>(zum Weg über die Applikation kann ich leider nicht viel sagen - ich hab' bisher kaum nicht-modale Dialoge verwendet und brauchte da noch keinen Direktzugang zum Hauptfenster)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437011</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:45:52 GMT]]></title><description><![CDATA[<p>Also bekomme ich nichts gutes. Beim Drücken des Buttons OnButtonKind() kann ich gleichzeitig mehrere KindDialoge auf dem Bildschirm bekommen. Beim Drücken des Buttons ' KindDialog Schließen' bekomme ich eine Fehlermeldung... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1437012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437012</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht-modale KindDialoge on Tue, 15 Jan 2008 12:50:14 GMT]]></title><description><![CDATA[<p>Mit Verweis meinst du doch einen Zeiger? Das mache ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437014</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Tue, 15 Jan 2008 12:50:14 GMT</pubDate></item></channel></rss>