<?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[Hauptfenster als nicht-modal erstellen]]></title><description><![CDATA[<p>Hi, ich habe ein Projekt, das eine Konsolenanwendung und ein Hauptfenster enthält. Nun möchte ich, dass das Hauptfenster als modaler Dialog erstellt wird. Das Hauptfenster soll im weiteren die nichtmodale Kinderfenster bekommen. Wie soll man beim Erstellen des Hauptfensters vorgehen? Ich habe eine neue Klasse dafür erstellt. Weiter habe ich den Konstruktor erweitert:</p>
<pre><code>CMeineKlasseMainWindow::CMeineKlasseMainWindow(CWnd* pParent /*=NULL*/)
	: CDialog(CMeineKlasseMainWindow::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMeineKlasseMainWindow)
		// HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein
	//}}AFX_DATA_INIT
	m_pParent = pParent;
}
</code></pre>
<p>Die Member-Variable m_pParent ist vom Typ CWnd*.<br />
Weiter habe ich den Konstruktor der App-Klasse erweitert:</p>
<pre><code>CMeineKlasseApp::CMeineKlasseApp() {
    m_pCMeineKlasseMainWindowDlg = NULL;
}
</code></pre>
<p>m_pCMeineKlasseMainWindowDlg ist ein Zeiger auf das nicht-modale C-Dialog-Objekt.<br />
In der InitInstance() der App-Klasse habe ich folgenes hinzugefügt:</p>
<pre><code>if (m_pCMeineKlasseMainWindowDlg == NULL)
    {
        // Dialog-Objekt erstellen
        m_pCMeineKlasseMainWindowDlg = new CMeineKlasseMainWindow();
        // Dialog erstellen und anzeigen
        m_pCMeineKlasseMainWindowDlg -&gt;Create(CMeineKlasseMainWindow::IDD);
        m_pCMeineKlasseMainWindowDlg -&gt;ShowWindow(SW_NORMAL); 
    }
</code></pre>
<p>Das Fenster wird zwar angezeigt, aber es verhält sich nicht normal (wenn ich andere Fenster darüber ziehe, werden diese auf meinem wie abgespiegelt), und alles ist sehr langsam. Soll ich vielleicht anders vorgehen? <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="😕"
    /><br />
Alle Fenster sollen dialogbasierend sein (keine SDI, keine MDI).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202354/hauptfenster-als-nicht-modal-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 06:41:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202354.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jan 2008 14:45:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Thu, 10 Jan 2008 14:45:07 GMT]]></title><description><![CDATA[<p>Hi, ich habe ein Projekt, das eine Konsolenanwendung und ein Hauptfenster enthält. Nun möchte ich, dass das Hauptfenster als modaler Dialog erstellt wird. Das Hauptfenster soll im weiteren die nichtmodale Kinderfenster bekommen. Wie soll man beim Erstellen des Hauptfensters vorgehen? Ich habe eine neue Klasse dafür erstellt. Weiter habe ich den Konstruktor erweitert:</p>
<pre><code>CMeineKlasseMainWindow::CMeineKlasseMainWindow(CWnd* pParent /*=NULL*/)
	: CDialog(CMeineKlasseMainWindow::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMeineKlasseMainWindow)
		// HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein
	//}}AFX_DATA_INIT
	m_pParent = pParent;
}
</code></pre>
<p>Die Member-Variable m_pParent ist vom Typ CWnd*.<br />
Weiter habe ich den Konstruktor der App-Klasse erweitert:</p>
<pre><code>CMeineKlasseApp::CMeineKlasseApp() {
    m_pCMeineKlasseMainWindowDlg = NULL;
}
</code></pre>
<p>m_pCMeineKlasseMainWindowDlg ist ein Zeiger auf das nicht-modale C-Dialog-Objekt.<br />
In der InitInstance() der App-Klasse habe ich folgenes hinzugefügt:</p>
<pre><code>if (m_pCMeineKlasseMainWindowDlg == NULL)
    {
        // Dialog-Objekt erstellen
        m_pCMeineKlasseMainWindowDlg = new CMeineKlasseMainWindow();
        // Dialog erstellen und anzeigen
        m_pCMeineKlasseMainWindowDlg -&gt;Create(CMeineKlasseMainWindow::IDD);
        m_pCMeineKlasseMainWindowDlg -&gt;ShowWindow(SW_NORMAL); 
    }
</code></pre>
<p>Das Fenster wird zwar angezeigt, aber es verhält sich nicht normal (wenn ich andere Fenster darüber ziehe, werden diese auf meinem wie abgespiegelt), und alles ist sehr langsam. Soll ich vielleicht anders vorgehen? <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="😕"
    /><br />
Alle Fenster sollen dialogbasierend sein (keine SDI, keine MDI).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434331</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Thu, 10 Jan 2008 22:22:41 GMT]]></title><description><![CDATA[<p>Wenn dein Hauptdialog modal sein soll, mußte den auch modal erstellen, sprich:</p>
<pre><code class="language-cpp">m_pCMeineKlasseMainWindowDlg = new CMeineKlasseMainWindow();
// Dialog erstellen und anzeigen
m_pCMeineKlasseMainWindowDlg -&gt;DoModal();
</code></pre>
<p>dann kannst du alle anderen Child-Windows an dein Hauptwindow binden.</p>
<p>Falls ich dich falsch verstanden habe, vergiss einfach meinen Beitrag</p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434612</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Thu, 10 Jan 2008 22:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Fri, 11 Jan 2008 08:22:08 GMT]]></title><description><![CDATA[<p>Gerade umgekehrt, Hauptdialog muss nicht-modal sein, um eine andere, zugrundeliegende Anwendung nicht blockieren. Weiß jemand, wie man einen nicht-modalen Hauptdialog erstellt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434695</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Fri, 11 Jan 2008 08:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Fri, 11 Jan 2008 09:07:18 GMT]]></title><description><![CDATA[<p>Noch_Student schrieb:</p>
<blockquote>
<p>Gerade umgekehrt, Hauptdialog muss nicht-modal sein, um eine andere, zugrundeliegende Anwendung nicht blockieren. Weiß jemand, wie man einen nicht-modalen Hauptdialog erstellt?</p>
</blockquote>
<p>Man kann durch einen modalen Dialog keine anderen Anwendungen blockieren.</p>
<p>Wenn Du einen Prozess startest und dann als erstes eines modalen Dialog erzeugst, so verhält er sich gegenüber anderen Applikationen natürlich nicht &quot;modal&quot;.</p>
<p>Modal bezieht sich imme rnur auf Deinen Prozess/Anwendung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434720</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 11 Jan 2008 09:07:18 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Fri, 11 Jan 2008 09:18:37 GMT]]></title><description><![CDATA[<p>So ähnliches hatte ich am Anfang. Zuerst wurde mein Fenster angezeigt. Aber die andere Anwendung wurde ERST NACH dem Schließen des Fensters gestartet. Wie kann man schaffen, dass beide parallel laufen? Ich bin zur Ideee gekommen, dass mein Dialogfenster nicht-modal sein soll. Hat jemand sonst eine Idee?<br />
Jetzt laufen beide parallel - mein Fenster und die Anwendung. Aber das Fenster lässt sich überhaupt nicht bedienen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434728</guid><dc:creator><![CDATA[Noch_Student]]></dc:creator><pubDate>Fri, 11 Jan 2008 09:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Fri, 11 Jan 2008 11:45:15 GMT]]></title><description><![CDATA[<p>Bringst Du hier irgendwie Anwendung und Fenster durcheinander.</p>
<p>Das eine Anwednung eine andere blockiert kann nur dadurch entstehen, dass z.B. beide die selbe Datei exklusiv öffnen wollen oder andere Semaphoren/Mutexe etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434798</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 11 Jan 2008 11:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Hauptfenster als nicht-modal erstellen on Fri, 11 Jan 2008 12:01:17 GMT]]></title><description><![CDATA[<p>Ich vermute mal einfach ins blaue, das er in der InitInstance den Dialog öffnet und dann ein externes Programm startet und auf die Beendigung dieses wartet. Was zur folge hat das die Messageloop der MFC nicht mehr ausgeführt wird und dadurch sein Dialog wie tot Aussieht. Hilfreich währe wenn Noch_Student mal zeigt was noch in seiner InitInstance steht, bzw. wie er die andere Anwendung startet. Dann kann man weiter sehen. Oder zu gut deutsch, da is ein Design-Fehler in seiner Anwendung, meiner Meinung nach</p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434815</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Fri, 11 Jan 2008 12:01:17 GMT</pubDate></item></channel></rss>