<?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[CFormView und CSplitterWnd]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe hier ein CSplitterWnd ohne Doc/View erstellt wie in <a href="http://www.c-plusplus.net/forum/topic,4696.html" rel="nofollow">http://www.c-plusplus.net/forum/topic,4696.html</a> beschrieben.<br />
Mein CSplitterWnd besteht aus zwei Spalten, eine enthält eine Klasse CSimulationView abgeleitet von<br />
CView und die andere enthält eine Klasse CSimulationDlg, abgeleitet von CFormView.</p>
<p>Code:</p>
<pre><code class="language-cpp">//MainFrm.cpp, OnCreate
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// Ansicht erstellen, um den Clientbereich des Rahmens zu belegen
	//SplitterWnd erstellen
	if (!m_wndSplitterView.CreateStatic(this, 2, 1))
	{
		TRACE0(&quot;Splitterfenster konnte nicht erstellt werden\n&quot;);
		return -1;
	}

	//Fenster mit den Daten über die Simulation (links)
        //Erzeugt leider ein Assertion Failed!
	   if(!m_wndSplitterView.CreateView(0,0,RUNTIME_CLASS(CSimulationDlg),CSize(100,100),NULL))
	{
		TRACE0(&quot;Konnte CSimulationDlg nicht erstellen!\n&quot;);
		return -1;
	}

	//Simulationsfenster (rechts)
	if(!m_wndSplitterView.CreateView(1,0,RUNTIME_CLASS(CSimulationView),CSize(100,100),NULL))
	{
		TRACE0(&quot;Konnte CSimulationView nicht erstellen!\n&quot;);
		return -1;
	}  
    //...
}
</code></pre>
<p>Leider erzeugt der Code einen Fehler und zwar an dieser Stelle erzeugt er ein Assertion Failed:</p>
<pre><code class="language-cpp">//MFC Class CSplitterWnd
//BOOL CSplitterWnd::CreateView(int row, int col,
	CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext)

if (!pWnd-&gt;Create(NULL, NULL, dwStyle,
		rect, this, IdFromRowCol(row, col), pContext))
	{
		TRACE(traceAppMsg, 0, &quot;Warning: couldn't create client pane for splitter.\n&quot;);
			// pWnd will be cleaned up by PostNcDestroy
		return FALSE;
	}
	ASSERT((int)_AfxGetDlgCtrlID(pWnd-&gt;m_hWnd) == IdFromRowCol(row,col)); //schlägt fehl
</code></pre>
<p>Ich hab leider keine Ahnung wieso die ID meines CFormViews anders sein soll als wie von IdFromRowCol angegeben.<br />
Ich mein, Create wird ja eben mit IdFromRowCol als Parameter für die ID aufgerufen, und ich habe auch IdFromRowCol und CFormView::Create debuggt.<br />
IdFromRowCol gibt AFX_IDW_PANE_FIRST zurück und in CFormView::Create steht</p>
<pre><code class="language-cpp">SetDlgCtrlID(nID); //nID==AFX_IDW_PANE_FIRST
</code></pre>
<p>Hoffe ihr könnt mir weiterhelfen <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="😉"
    /><br />
S.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158541/cformview-und-csplitterwnd</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 20:37:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158541.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Sep 2006 12:37:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CFormView und CSplitterWnd on Wed, 06 Sep 2006 12:37:40 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe hier ein CSplitterWnd ohne Doc/View erstellt wie in <a href="http://www.c-plusplus.net/forum/topic,4696.html" rel="nofollow">http://www.c-plusplus.net/forum/topic,4696.html</a> beschrieben.<br />
Mein CSplitterWnd besteht aus zwei Spalten, eine enthält eine Klasse CSimulationView abgeleitet von<br />
CView und die andere enthält eine Klasse CSimulationDlg, abgeleitet von CFormView.</p>
<p>Code:</p>
<pre><code class="language-cpp">//MainFrm.cpp, OnCreate
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// Ansicht erstellen, um den Clientbereich des Rahmens zu belegen
	//SplitterWnd erstellen
	if (!m_wndSplitterView.CreateStatic(this, 2, 1))
	{
		TRACE0(&quot;Splitterfenster konnte nicht erstellt werden\n&quot;);
		return -1;
	}

	//Fenster mit den Daten über die Simulation (links)
        //Erzeugt leider ein Assertion Failed!
	   if(!m_wndSplitterView.CreateView(0,0,RUNTIME_CLASS(CSimulationDlg),CSize(100,100),NULL))
	{
		TRACE0(&quot;Konnte CSimulationDlg nicht erstellen!\n&quot;);
		return -1;
	}

	//Simulationsfenster (rechts)
	if(!m_wndSplitterView.CreateView(1,0,RUNTIME_CLASS(CSimulationView),CSize(100,100),NULL))
	{
		TRACE0(&quot;Konnte CSimulationView nicht erstellen!\n&quot;);
		return -1;
	}  
    //...
}
</code></pre>
<p>Leider erzeugt der Code einen Fehler und zwar an dieser Stelle erzeugt er ein Assertion Failed:</p>
<pre><code class="language-cpp">//MFC Class CSplitterWnd
//BOOL CSplitterWnd::CreateView(int row, int col,
	CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext)

if (!pWnd-&gt;Create(NULL, NULL, dwStyle,
		rect, this, IdFromRowCol(row, col), pContext))
	{
		TRACE(traceAppMsg, 0, &quot;Warning: couldn't create client pane for splitter.\n&quot;);
			// pWnd will be cleaned up by PostNcDestroy
		return FALSE;
	}
	ASSERT((int)_AfxGetDlgCtrlID(pWnd-&gt;m_hWnd) == IdFromRowCol(row,col)); //schlägt fehl
</code></pre>
<p>Ich hab leider keine Ahnung wieso die ID meines CFormViews anders sein soll als wie von IdFromRowCol angegeben.<br />
Ich mein, Create wird ja eben mit IdFromRowCol als Parameter für die ID aufgerufen, und ich habe auch IdFromRowCol und CFormView::Create debuggt.<br />
IdFromRowCol gibt AFX_IDW_PANE_FIRST zurück und in CFormView::Create steht</p>
<pre><code class="language-cpp">SetDlgCtrlID(nID); //nID==AFX_IDW_PANE_FIRST
</code></pre>
<p>Hoffe ihr könnt mir weiterhelfen <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="😉"
    /><br />
S.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132275</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Wed, 06 Sep 2006 12:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to CFormView und CSplitterWnd on Wed, 06 Sep 2006 12:48:12 GMT]]></title><description><![CDATA[<p>Ok, hm, es schein als würde SetDlgCtrlID(nID) in CFormView::Create fehlschlagen(es gibt 0 zurück). Aber wieso schlägt es fehl...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132283</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Wed, 06 Sep 2006 12:48:12 GMT</pubDate></item><item><title><![CDATA[Reply to CFormView und CSplitterWnd on Wed, 06 Sep 2006 13:35:10 GMT]]></title><description><![CDATA[<p>Naja, jetzt hab ich in CSimulationDlg::OnCreate folgendes geschrieben:</p>
<pre><code class="language-cpp">SetLastError(0);
SetDlgCtrlID(AFX_IDW_PANE_FIRST);
TRACE1(&quot;GetDlgCtrlID(): %d\n&quot;,GetDlgCtrlID());
TRACE1(&quot;GetLastError: %d\n&quot;,GetLastError());
</code></pre>
<p>Ergebnis:</p>
<pre><code>GetDlgCtrlID(): 0
GetLastError: 1401
</code></pre>
<p>Passt aber überhaupt nicht, den Code 1401 soll heißen: &quot;Ungültiger Menühandle&quot;. Wo ist hier bitte ein Menü <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="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132328</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Wed, 06 Sep 2006 13:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to CFormView und CSplitterWnd on Wed, 06 Sep 2006 17:13:44 GMT]]></title><description><![CDATA[<p>Ok, die Lösung:<br />
Der Style WS_CHILD war bei der Dialogresource nicht gesetzt. Ich hatte in zwar manuell gesetzt, indem ich in die Ressourcendatei an die entsprechende Stelle WS_CHILD gesetzt hatte, aber irgendwie hat das Visual Studio nicht interessiert <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="😕"
    /> . Jetzt habe ich die richtige Einstellung im Dialogeditor gefunden und gesetzt und holla siehe da es geht :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132535</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Wed, 06 Sep 2006 17:13:44 GMT</pubDate></item></channel></rss>