<?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[CSplitterWnd: Mehrere panes in einer SDI Anwendung]]></title><description><![CDATA[<p>Hallo liebe Leute!</p>
<p>Ich versuche 2 Splitter in eine SDI anwendung einzubauen,<br />
die dass Fenster in 3 panes einteilen! Es soll so ähnlich aussehen<br />
wie bei mIRC (IRC chat client), nur dass ihr eine ungefähre vorstellung habt!<br />
Ich poste erstmal ein wenig code!</p>
<pre><code class="language-cpp">BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	// TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf.
  CRect cr; 
  GetClientRect( &amp;cr);
  CWnd* cChat;

  if (!m_splitterWnd.CreateStatic( this, 2, 1 ))
		return false;

	if (!m_splitterWnd.CreateView( 0, 0, RUNTIME_CLASS(CSIView), 
                          CSize(cr.Width(), cr.Height()/1.11), pContext ))
		return false;

	if (!m_splitterWnd.CreateView( 1, 0, RUNTIME_CLASS(CSIView), 
                           CSize(cr.Width(), cr.Height()), pContext ))
	  return false;

	cChat = m_splitterWnd.GetPane(0,0);
	if (cChat)
	{
          CRect cr2; 
          BOOL r = FALSE;
          cChat-&gt;GetClientRect(&amp;cr2);
          r = m_splitterWnd2.CreateStatic(cChat, 1, 2); 
          r = m_splitterWnd2.CreateView(0,0,RUNTIME_CLASS(CSIView),
                             CSize(cr2.Width()/2,cr.Height()), pContext); 
          r = m_splitterWnd2.CreateView(0,1,RUNTIME_CLASS(CSIView),
                             CSize(cr2.Width(),cr.Height()), pContext); 
           cChat-&gt;ShowWindow(SW_SHOW);
        }

     Invalidate();

     return TRUE;
}
</code></pre>
<p>Also ich erstelle einen Splitter und teile das Fenster in 2 panes!<br />
Dann versuche ich noch einen Splitter zu erstellen IN einem der panes die ich bereits erstellt habe! Das will allerdings nicht funktionieren! Ich bekomme zwar keinen Compiler Fehler, aber der 2te Splitter wird auch nicht angezeigt!</p>
<p>Hoffe jemand kann mir helfen, bin noch nicht so lange dabei, habe da wohl was nicht richtig durchblickt mit den ganzen Splittern!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146005/csplitterwnd-mehrere-panes-in-einer-sdi-anwendung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 08:12:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146005.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 May 2006 11:23:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 11:23:36 GMT]]></title><description><![CDATA[<p>Hallo liebe Leute!</p>
<p>Ich versuche 2 Splitter in eine SDI anwendung einzubauen,<br />
die dass Fenster in 3 panes einteilen! Es soll so ähnlich aussehen<br />
wie bei mIRC (IRC chat client), nur dass ihr eine ungefähre vorstellung habt!<br />
Ich poste erstmal ein wenig code!</p>
<pre><code class="language-cpp">BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	// TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf.
  CRect cr; 
  GetClientRect( &amp;cr);
  CWnd* cChat;

  if (!m_splitterWnd.CreateStatic( this, 2, 1 ))
		return false;

	if (!m_splitterWnd.CreateView( 0, 0, RUNTIME_CLASS(CSIView), 
                          CSize(cr.Width(), cr.Height()/1.11), pContext ))
		return false;

	if (!m_splitterWnd.CreateView( 1, 0, RUNTIME_CLASS(CSIView), 
                           CSize(cr.Width(), cr.Height()), pContext ))
	  return false;

	cChat = m_splitterWnd.GetPane(0,0);
	if (cChat)
	{
          CRect cr2; 
          BOOL r = FALSE;
          cChat-&gt;GetClientRect(&amp;cr2);
          r = m_splitterWnd2.CreateStatic(cChat, 1, 2); 
          r = m_splitterWnd2.CreateView(0,0,RUNTIME_CLASS(CSIView),
                             CSize(cr2.Width()/2,cr.Height()), pContext); 
          r = m_splitterWnd2.CreateView(0,1,RUNTIME_CLASS(CSIView),
                             CSize(cr2.Width(),cr.Height()), pContext); 
           cChat-&gt;ShowWindow(SW_SHOW);
        }

     Invalidate();

     return TRUE;
}
</code></pre>
<p>Also ich erstelle einen Splitter und teile das Fenster in 2 panes!<br />
Dann versuche ich noch einen Splitter zu erstellen IN einem der panes die ich bereits erstellt habe! Das will allerdings nicht funktionieren! Ich bekomme zwar keinen Compiler Fehler, aber der 2te Splitter wird auch nicht angezeigt!</p>
<p>Hoffe jemand kann mir helfen, bin noch nicht so lange dabei, habe da wohl was nicht richtig durchblickt mit den ganzen Splittern!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050202</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 11:23:36 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 11:38:21 GMT]]></title><description><![CDATA[<p>Wenn mich meine Erinnerung nicht täuscht, ist *cChat ein CSIView-Objekt - und das kann vermutlich nichts damit anfangen, wenn ihm ein CSplitterWnd als Kind vorgesetzt wird. Das heißt, du solltest beim ersten CreateView()-Aufruf ein CSplitterWnd erzeugen und dieses an m_splitterWnd2 zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050215</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 11:38:21 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:05:31 GMT]]></title><description><![CDATA[<p>hm da bin ich grade etwas überfragt wie du das meinst!<br />
Kannst du etwas näher erleutern wie du dir das vorstellst?</p>
<p>Danke schonmal im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050249</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 12:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:36:11 GMT]]></title><description><![CDATA[<p>Achtung - ungetestet und ohne Garantie:</p>
<pre><code class="language-cpp">if (!m_splitterWnd.CreateStatic( this, 2, 1 ))
  return false;

if (!m_splitterWnd.CreateView( 0, 0, RUNTIME_CLASS(CSplitterWnd), CSize(cr.Width(), cr.Height()/1.11), pContext ))
  return false;

if (!m_splitterWnd.CreateView( 1, 0, RUNTIME_CLASS(CSIView), CSize(cr.Width(), cr.Height()), pContext ))
  return false;

m_splitterWnd2 = *dynamic_cast&lt;CSplitterWnd*&gt;(m_splitterWnd.GetPane(0,0));

if (m_splitterWnd2)
{
  CRect cr2; 
  BOOL r = FALSE;
  m_splitterWnd2-&gt;GetClientRect(&amp;cr2);
  r = m_splitterWnd2.CreateStatic(m_splitterWndcChat, 1, 2); 
  r = m_splitterWnd2.CreateView(0,0,RUNTIME_CLASS(CSIView), CSize(cr2.Width()/2,cr.Height()), pContext); 
  r = m_splitterWnd2.CreateView(0,1,RUNTIME_CLASS(CSIView), CSize(cr2.Width(),cr.Height()), pContext); 
}
</code></pre>
<p>(btw solltest du im zweiten Teil auch jeden einzelnen Fehler überprüfen (statt des &quot;r=...&quot; ist die &quot;if(!...) return false&quot; von oben sicherer))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050252</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 12:36:11 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:26:58 GMT]]></title><description><![CDATA[<p>Hi und danke für deine schnelle Antwort!<br />
Hat leider nicht geklappt:</p>
<pre><code class="language-cpp">MainFrm.cpp(124) : error C2680: 'CSplitterWnd': Ungültiger Zieltyp für dynamic_cast
        Der Zieltyp muss ein Zeiger oder ein Verweis auf eine definierte Klasse sein
MainFrm.cpp(130) : error C2664: 'CSplitterWnd::CreateStatic': Konvertierung des Parameters 1 von 'CSplitterWnd' in 'CWnd *' nicht möglich
        Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
</code></pre>
<p>Also GetPane(...) liefert ein CWnd* zurück, und CreateStatic möchte auch tatsächlich als ersten Parameter ein CWnd* in den Rachen geschoben bekommen <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="🙂"
    /></p>
<p>Und beim ersten Splitter klappts ja auch mit CreateStatic(this,.....);<br />
Habe auch schonmal nach diversen Beispielen im Netz gesucht aber wirklich findig bin ich nicht geworden!</p>
<p>Achja und selbstverständlich werden noch Kollisionsabfragen vorgenommen wenn alles läuft, die r Variable ist nur zum Testen da dass ich im Debugger schnell sehen kann ob was schief geht.<br />
Nur erstmal muss der 2te splitter da irgendwie rein <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/1050262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050262</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 12:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:35:50 GMT]]></title><description><![CDATA[<p>Ups, mein Fehler - es muß natürlich &quot;dynamic_cast&lt;CSplitterWnd&amp;&gt;(...)&quot; lauten. *korrigiert das Beispiel*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050268</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 12:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:49:59 GMT]]></title><description><![CDATA[<p>Habe nochmal etwas nachgeforscht:</p>
<pre><code class="language-cpp">m_splitterWnd2.CreateStatic(&amp;m_splitterWnd,1,2,WS_CHILD | WS_VISIBLE |  WS_BORDER,m_splitterWnd.IdFromRowCol(0,0)); 
  m_splitterWnd2.CreateView(0, 1, RUNTIME_CLASS(CSIView), CSize(100, 100), pContext);
  m_splitterWnd2.CreateView(0, 0, RUNTIME_CLASS(CSIView), CSize(100, 100), pContext);
</code></pre>
<p>Für den zweiten Splitter ist wohl diese Verwendung von CreateStatic die richtigere (ich schätze mal darauf wolltest du auch hinaus oder?)<br />
Habe zusätzlich mal die Größe des Splitter fest angegeben, aber geändert hat sich leider wirklich nichts! Er wird nicht angezeigt! Die Funktionen retunieren alle 1 laut msdn in ordnung.</p>
<p>bin schon wieder voll confused <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/1050278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050278</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 12:49:59 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 12:57:09 GMT]]></title><description><![CDATA[<p>Ja, das ist einer der Punkte - der andere ist, daß der äußere Splitter an der Stelle keinen CSIView einbauen sollte, sondern einen CSplitterWnd (den du dann als inneren Splitter verwendest).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050282</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 12:57:09 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 13:01:46 GMT]]></title><description><![CDATA[<p>Wenn du sowas hier meinst:</p>
<pre><code class="language-cpp">m_splitterWnd2.CreateView(0, 1, RUNTIME_CLASS(CSplitterWnd), CSize(100, 100), pContext);
    m_splitterWnd2.CreateView(0, 0, RUNTIME_CLASS(CSplitterWnd), CSize(100, 100), pContext);
</code></pre>
<p>das geht auch nicht ^^<br />
Hatte ich auch eben getestet. Irgendwie is diese ganze splitter geschichte total verwirrend</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050284</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 13:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 13:22:17 GMT]]></title><description><![CDATA[<p>Eventuell nochmal nen Bild damit man sich vorstellen kann wie ich das eigentlich meitne:</p>
<p><a href="http://hogranch.com/files/Bitmaps/mirc.gif" rel="nofollow">http://hogranch.com/files/Bitmaps/mirc.gif</a></p>
<p>Sollte ziemlich genau so aussehen, nur als SDI halt aber das ist ja<br />
relativ egal nehme ich mal an. Und es geht jetzt auch nur um das WindowSplitten <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050294</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 13:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 18:58:22 GMT]]></title><description><![CDATA[<p>Keiner mehr nen Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050503</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Wed, 03 May 2006 18:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Wed, 03 May 2006 19:09:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// CMainFrame::OnCreate(...)
if(!m_splitterWnd.CreateStatic(this, 1, 2))
{
    MessageBox(&quot;Error setting up splitter frames!&quot;, &quot;Error&quot;, MB_OK | MB_ICONERROR);
    return 0;
}

if(!m_splitterWnd.CreateView(0, 1, RUNTIME_CLASS(CSIView), CSize(100, 100), pContext))
{
    MessageBox(&quot;Error setting up splitter frames!&quot;, &quot;Error&quot;, MB_OK | MB_ICONERROR);
    return 0;
}

if(!m_splitterWnd2.CreateStatic(&amp;m_splitterWnd, 2, 2, WS_CHILD | WS_VISIBLE, m_splitterWnd.IdFromRowCol(0, 0)))
{
    MessageBox(&quot;Error setting up splitter frames!&quot;, &quot;Error&quot;, MB_OK | MB_ICONERROR );
    return 0;
}

// CMainFrame::OnSize(UINT nType, int cx, int cy)
if(nType != SIZE_MINIMIZED)
{
    m_splitterWnd.SetRowInfo(0, cy, 0);
    m_splitterWnd.SetColumnInfo(0, cx - 100, 0);
    m_splitterWnd.SetColumnInfo(1, 100, 0);
    // ... ;)
    m_splitterWnd.RecalcLayout();
    m_splitterWnd2.RecalcLayout();
  }
}
</code></pre>
<p>Sry kann sein das nen paar Fehler drin sind... hatte keine Zeit das zu testen <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/1050515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050515</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 03 May 2006 19:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to CSplitterWnd: Mehrere panes in einer SDI Anwendung on Thu, 04 May 2006 10:03:11 GMT]]></title><description><![CDATA[<p>Huhu!<br />
Selbe SPiel wie immer! Lässt sich alles compilieren und starten nur der 2te splitter wird halt nicht angezeigt!<br />
so langsam bin ich schon am verzweifeln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050756</guid><dc:creator><![CDATA[Dud]]></dc:creator><pubDate>Thu, 04 May 2006 10:03:11 GMT</pubDate></item></channel></rss>