<?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[Neuen View aus Menue aufrufen wenn kein View aktiv (MDI)]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Das thema wurde in einem anderen Posting schon diskutiert<br />
Jetzt habe ich etwas gefunden wie es funktionieren könnte:</p>
<p>Gegeben:<br />
MDI -Projekt<br />
Dialog Ressource IDD_FORMVIEW , KLasse : CNewFormView<br />
in C..App Membervariable CMultiDocTemplate * m_pNewFormView</p>
<p>Eine Document-Klasse erstellen CFormViewDoc</p>
<p>in C..App.cpp folgende Dateien includieren:</p>
<pre><code class="language-cpp">#include &quot;FormViewDoc.h&quot;
#include &quot;NewFormView.h&quot;
</code></pre>
<p>Button in der Menueleiste IDD_MAINFRAME erstellen zb 'FormView' und<br />
in <strong>C..App</strong> eine COMMAND-Fubnktion erstellen.<br />
Folgender Source in dieser Funktion einfügen:</p>
<pre><code class="language-cpp">POSITION curTemplatePos = GetFirstDocTemplatePosition();

	while(curTemplatePos != NULL)
	{
		CDocTemplate* curTemplate =GetNextDocTemplate(curTemplatePos);
		CString str;
		curTemplate-&gt;GetDocString(str,CDocTemplate::docName);

		if(str == _T(&quot;formview&quot;))
		{
			curTemplate-&gt;OpenDocumentFile(NULL);
			return;
		}
	}
</code></pre>
<p>Nun noch in der Funktione InitInstance (nochmals vielen Dank an LowFly)</p>
<pre><code class="language-cpp">m_pDocFormView = new CMultiDocTemplate(IDD_FORMVIEW,
							RUNTIME_CLASS(CFormViewDoc),
							RUNTIME_CLASS(CChildFrame),
							RUNTIME_CLASS(CNewFormView));
	AddDocTemplate(m_pDocFormView);
</code></pre>
<p>So hatte ich mir das gedacht , nur das funktioniert nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Und zwar findet die Funktion GetNextDocTemplate(curTemplatePos) bzw<br />
GetDocString() nur die Standard-Doc Klasse jedoch nicht meine neue<br />
CFormViewDoc.</p>
<p>Villeicht sieht von Euch ja jemand den Fehler ?</p>
<p>Danke und Gruß<br />
Linus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166736/neuen-view-aus-menue-aufrufen-wenn-kein-view-aktiv-mdi</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 05:53:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166736.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Dec 2006 08:55:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Neuen View aus Menue aufrufen wenn kein View aktiv (MDI) on Sat, 02 Dec 2006 08:55:30 GMT]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Das thema wurde in einem anderen Posting schon diskutiert<br />
Jetzt habe ich etwas gefunden wie es funktionieren könnte:</p>
<p>Gegeben:<br />
MDI -Projekt<br />
Dialog Ressource IDD_FORMVIEW , KLasse : CNewFormView<br />
in C..App Membervariable CMultiDocTemplate * m_pNewFormView</p>
<p>Eine Document-Klasse erstellen CFormViewDoc</p>
<p>in C..App.cpp folgende Dateien includieren:</p>
<pre><code class="language-cpp">#include &quot;FormViewDoc.h&quot;
#include &quot;NewFormView.h&quot;
</code></pre>
<p>Button in der Menueleiste IDD_MAINFRAME erstellen zb 'FormView' und<br />
in <strong>C..App</strong> eine COMMAND-Fubnktion erstellen.<br />
Folgender Source in dieser Funktion einfügen:</p>
<pre><code class="language-cpp">POSITION curTemplatePos = GetFirstDocTemplatePosition();

	while(curTemplatePos != NULL)
	{
		CDocTemplate* curTemplate =GetNextDocTemplate(curTemplatePos);
		CString str;
		curTemplate-&gt;GetDocString(str,CDocTemplate::docName);

		if(str == _T(&quot;formview&quot;))
		{
			curTemplate-&gt;OpenDocumentFile(NULL);
			return;
		}
	}
</code></pre>
<p>Nun noch in der Funktione InitInstance (nochmals vielen Dank an LowFly)</p>
<pre><code class="language-cpp">m_pDocFormView = new CMultiDocTemplate(IDD_FORMVIEW,
							RUNTIME_CLASS(CFormViewDoc),
							RUNTIME_CLASS(CChildFrame),
							RUNTIME_CLASS(CNewFormView));
	AddDocTemplate(m_pDocFormView);
</code></pre>
<p>So hatte ich mir das gedacht , nur das funktioniert nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Und zwar findet die Funktion GetNextDocTemplate(curTemplatePos) bzw<br />
GetDocString() nur die Standard-Doc Klasse jedoch nicht meine neue<br />
CFormViewDoc.</p>
<p>Villeicht sieht von Euch ja jemand den Fehler ?</p>
<p>Danke und Gruß<br />
Linus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185665</guid><dc:creator><![CDATA[linus]]></dc:creator><pubDate>Sat, 02 Dec 2006 08:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to Neuen View aus Menue aufrufen wenn kein View aktiv (MDI) on Sat, 02 Dec 2006 11:05:12 GMT]]></title><description><![CDATA[<p>LOL (ich lach jetzt nicht über dich) hab da grad wieder ein bischen rumgespielt. und die lösung ist so einfach und simpel das man sie leicht übersieht.</p>
<p>wie estartu schon bemerkt hat kann</p>
<blockquote>
<p>CDocument *pDoc = (CDocument*)MDIGetActive()-&gt;GetActiveView()-&gt;GetDocument();</p>
</blockquote>
<p>nicht funzen weil kein Document activ bzw. vorhanden ist.</p>
<p>jetzt denk mal ganz scharf nach was macht man wenn man nichts hat........</p>
<p>man erstellt sich ein neues Document <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>folgendes hab ich in der MainFrame stehn und es funzt einwandfrei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code>[b]CDocument *pDoc = new CDocument();[/b]

CFrameWnd *frameWnd = ((CChangeViewsApp*)AfxGetApp())-&gt;m_pDocEditView-&gt;CreateNewFrame(pDoc, NULL);

frameWnd-&gt;InitialUpdateFrame(pDoc, TRUE);
</code></pre>
<p>new edit;<br />
nicht vergessen</p>
<blockquote>
<p>delete pDoc;</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1185690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185690</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Sat, 02 Dec 2006 11:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Neuen View aus Menue aufrufen wenn kein View aktiv (MDI) on Sat, 02 Dec 2006 12:43:26 GMT]]></title><description><![CDATA[<p>Danke für Deine Antwort.<br />
Das hatte ich auch schon ausprobiert</p>
<blockquote>
<p>CDocument *pDoc = new CDocument()</p>
</blockquote>
<p>Bei mir kommt dann folgende Fehlermeldung:</p>
<pre><code>MainFrm.cpp
c:\.. ..\mainfrm.cpp(109) : error C2259: 'CDocument': Instanz von abstrakter Klasse kann nicht erstellt werden
        aufgrund folgender Member:
        &quot;CDocument::~CDocument(void)&quot;: ist abstrakt
        d:\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(4963): Siehe Deklaration von 'CDocument::~CDocument'
</code></pre>
<p>Mein Beispiel oben habe aus der MSDN abgeleitet<br />
Dabei hat man natürlich bei jeder ansicht ein separates Document<br />
Bei Dir benutzt man dagegen nur ein einziges (wen ich das richtig sehe)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185774</guid><dc:creator><![CDATA[linus]]></dc:creator><pubDate>Sat, 02 Dec 2006 12:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to Neuen View aus Menue aufrufen wenn kein View aktiv (MDI) on Sat, 02 Dec 2006 13:05:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Bei Dir benutzt man dagegen nur ein einziges (wen ich das richtig sehe)</p>
</blockquote>
<p>hmmm meinst du damit das ich nur 1 document vom typ Formview aufmachen kann??</p>
<p>also ich kann über die Mainframe ätliche Documente vom Typ Formview aufmachen, da hier ja das menu nicht wechselt. sofern du es nicht in der NewFormView wechselst.</p>
<p>auch hab ich vc6 evtl macht das die vc8 nicht mehr mit new Document();.<br />
kömisch <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185783</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Sat, 02 Dec 2006 13:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to Neuen View aus Menue aufrufen wenn kein View aktiv (MDI) on Sat, 02 Dec 2006 14:20:57 GMT]]></title><description><![CDATA[<p>Ich hab's :xmas1:</p>
<p>Neue Doc-Klasse erstellen zB CNewFormDoc abgeleitet von CDocument</p>
<p>dann wir die neu Document-Klasse erstellt mit :</p>
<pre><code class="language-cpp">CNewFormDoc *pDoc = new CNewFormDoc();
</code></pre>
<p>in der C..App.cpp muss dann der Eintrag für Die CMultDocTemplate-Variable<br />
geändert werden auf :</p>
<pre><code class="language-cpp">m_pDocFormView = new CMultiDocTemplate(IDD_FORMVIEW,
				RUNTIME_CLASS(CNewFormDoc),
				RUNTIME_CLASS(CChildFrame),
				RUNTIME_CLASS(CNewFormView));
</code></pre>
<p>Dann funktioniert es auch bei mir</p>
<p>Vielen Dank für Eure Hilfe<br />
Gruß Linus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185826</guid><dc:creator><![CDATA[linus]]></dc:creator><pubDate>Sat, 02 Dec 2006 14:20:57 GMT</pubDate></item></channel></rss>