<?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[Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie?]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe in meiner Anwendung 2 Doctemplates definiert:</p>
<pre><code class="language-cpp">CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CstartDoc),
		RUNTIME_CLASS(CMainFrame),       // Haupt-SDI-Rahmenfenster
		RUNTIME_CLASS(CstartView));
	AddDocTemplate(pDocTemplate);

	CSingleDocTemplate* pFakeDocTemplate;
	pFakeDocTemplate = new CSingleDocTemplate(
		NULL,
		RUNTIME_CLASS(CstartDoc),
		RUNTIME_CLASS(CFakeFrame),     
		RUNTIME_CLASS(CFakeHtmlView));
	AddDocTemplate(pFakeDocTemplate);
</code></pre>
<p>Das ist einfach nötig in meinem Projekt...würde zu lange dauern zu erklären, warum.</p>
<p>Nun wird in einem CstartView ein neues FakeFrame angelegt (ist wie gesagt nötig):</p>
<pre><code class="language-cpp">CWinApp* pApp = AfxGetApp();

	// Get the correct document template
	CDocTemplate* pDocTemplate;
	POSITION pos = pApp-&gt;GetFirstDocTemplatePosition();
	pDocTemplate = pApp-&gt;GetNextDocTemplate(pos);
	pDocTemplate = pApp-&gt;GetNextDocTemplate(pos);

	ASSERT(pDocTemplate);

	// Create the new frame
	CFakeFrame* pNewFrame = (CFakeFrame*)pDocTemplate-&gt;CreateNewFrame(GetDocument(),
		(CFrameWnd*)AfxGetMainWnd());

	ASSERT(pNewFrame);

	// Activate the frame and set its active view
	pDocTemplate-&gt;InitialUpdateFrame(pNewFrame, NULL, FALSE);
	//pNewFrame-&gt;ShowWindow(SW_HIDE);

	CFakeHtmlView* pWBVw = (CFakeHtmlView*)pNewFrame-&gt;GetActiveView();
	ASSERT(pWBVw);
</code></pre>
<p>Dieses ist unsichtbar. Es wird nur benötigt, weil ein ActiveX es benötigt und nicht mit dem bestehenden Frame arbeiten kann, es braucht ein neues. (Bekannter Bug im IE-COM).<br />
Nachdem die Arbeit im neuen Frame abgeschlossen ist (läuft alles unsichtbar, ich brauche nur das Frame um einen bestimmten Event zu bekommen) will ich nun das Frame wieder zerstören.</p>
<p>Ich kann dazu an mein Mainframe eine Nachricht schicken, dass es es zerstören soll.</p>
<p>Nur wie zerstöre ich das neu erstelle FrameWnd? DestroyWindow führt zum Crash.</p>
<p>Und einfach versteckt weiterleben lassen bis zum Anwendungsende möchte ich auch nicht unbedingt....da verschenke ich mir zu viele Resourcen.</p>
<p>Also nun nur diese eine Frage:<br />
Hat einer von euch eine Idee, wie ich das Teil aufgeräumt bekomme?</p>
<p>Vielen Dank,<br />
Steve</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147778/erstelltes-2-framewindow-in-einer-sdi-anwendung-beenden-wie</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 12:28:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147778.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 May 2006 20:19:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie? on Fri, 19 May 2006 20:19:14 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe in meiner Anwendung 2 Doctemplates definiert:</p>
<pre><code class="language-cpp">CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CstartDoc),
		RUNTIME_CLASS(CMainFrame),       // Haupt-SDI-Rahmenfenster
		RUNTIME_CLASS(CstartView));
	AddDocTemplate(pDocTemplate);

	CSingleDocTemplate* pFakeDocTemplate;
	pFakeDocTemplate = new CSingleDocTemplate(
		NULL,
		RUNTIME_CLASS(CstartDoc),
		RUNTIME_CLASS(CFakeFrame),     
		RUNTIME_CLASS(CFakeHtmlView));
	AddDocTemplate(pFakeDocTemplate);
</code></pre>
<p>Das ist einfach nötig in meinem Projekt...würde zu lange dauern zu erklären, warum.</p>
<p>Nun wird in einem CstartView ein neues FakeFrame angelegt (ist wie gesagt nötig):</p>
<pre><code class="language-cpp">CWinApp* pApp = AfxGetApp();

	// Get the correct document template
	CDocTemplate* pDocTemplate;
	POSITION pos = pApp-&gt;GetFirstDocTemplatePosition();
	pDocTemplate = pApp-&gt;GetNextDocTemplate(pos);
	pDocTemplate = pApp-&gt;GetNextDocTemplate(pos);

	ASSERT(pDocTemplate);

	// Create the new frame
	CFakeFrame* pNewFrame = (CFakeFrame*)pDocTemplate-&gt;CreateNewFrame(GetDocument(),
		(CFrameWnd*)AfxGetMainWnd());

	ASSERT(pNewFrame);

	// Activate the frame and set its active view
	pDocTemplate-&gt;InitialUpdateFrame(pNewFrame, NULL, FALSE);
	//pNewFrame-&gt;ShowWindow(SW_HIDE);

	CFakeHtmlView* pWBVw = (CFakeHtmlView*)pNewFrame-&gt;GetActiveView();
	ASSERT(pWBVw);
</code></pre>
<p>Dieses ist unsichtbar. Es wird nur benötigt, weil ein ActiveX es benötigt und nicht mit dem bestehenden Frame arbeiten kann, es braucht ein neues. (Bekannter Bug im IE-COM).<br />
Nachdem die Arbeit im neuen Frame abgeschlossen ist (läuft alles unsichtbar, ich brauche nur das Frame um einen bestimmten Event zu bekommen) will ich nun das Frame wieder zerstören.</p>
<p>Ich kann dazu an mein Mainframe eine Nachricht schicken, dass es es zerstören soll.</p>
<p>Nur wie zerstöre ich das neu erstelle FrameWnd? DestroyWindow führt zum Crash.</p>
<p>Und einfach versteckt weiterleben lassen bis zum Anwendungsende möchte ich auch nicht unbedingt....da verschenke ich mir zu viele Resourcen.</p>
<p>Also nun nur diese eine Frage:<br />
Hat einer von euch eine Idee, wie ich das Teil aufgeräumt bekomme?</p>
<p>Vielen Dank,<br />
Steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061263</guid><dc:creator><![CDATA[stevesteve]]></dc:creator><pubDate>Fri, 19 May 2006 20:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie? on Sat, 20 May 2006 03:32:44 GMT]]></title><description><![CDATA[<p>An der richtigen Stelle:</p>
<pre><code class="language-cpp">delete pNewFrame;
</code></pre>
<p><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/1061341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061341</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 20 May 2006 03:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie? on Sat, 20 May 2006 08:44:47 GMT]]></title><description><![CDATA[<p>Leider funktioniert diese radikale Variante nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> (Crash)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061401</guid><dc:creator><![CDATA[svensven]]></dc:creator><pubDate>Sat, 20 May 2006 08:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie? on Sat, 20 May 2006 11:34:24 GMT]]></title><description><![CDATA[<p>Dann benötigt irgendeine Klasse diesen Zeiger auf dieses Objekt noch. Welche?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061506</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 20 May 2006 11:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to Erstelltes 2. FrameWindow in einer SDI Anwendung beenden, wie? on Sat, 20 May 2006 22:24:22 GMT]]></title><description><![CDATA[<p>thats da point.</p>
<p>Der Debugger sagt dass für den Punkt kein Code vorliegt.. d.h. spielt sich wohl in irgendner DLL ab...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061892</guid><dc:creator><![CDATA[stevesteve]]></dc:creator><pubDate>Sat, 20 May 2006 22:24:22 GMT</pubDate></item></channel></rss>