<?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[Splitter &amp;amp; GetDocument]]></title><description><![CDATA[<p>hallo,</p>
<p>folgende Situation:<br />
in einer SDI-Anwendung möchte ich einen zweiten Fenster öffnen wenn der Benutzer eine bestimmte Aktion durchführt.<br />
dieses zweiten Fenster habe ich mit einen eingenen Splitter geteilt in zwei Zeilen.<br />
jeden Teil habe ich einen View zugeordnet.</p>
<p>Problem:<br />
wie greife ich in meinem View (zweite teil des zweiten fenster) auf das Dokument von meiner SDI-Anwendung.</p>
<pre><code>int CGueltigkeitsBestaetigungView2 :: OnCreate ( LPCREATESTRUCT lpCreateStruct )
{
   ASSERT_VALID ( this );

   if ( CFormView :: OnCreate ( lpCreateStruct ) == -1 )
   {
      return -1;
   }

   //--  Hole nach dem Erzeugen des Views den nun gueltigen Document Zeiger
   m_pDoc = GetDocument ( );

   ASSERT_VALID ( m_pDoc );

   return 0;
}

#ifdef _DEBUG
CMainDoc* CGueltigkeitsBestaetigungView2::GetDocument()  // non-debug version is inline
{
   //ASSERT( m_pDocument-&gt;IsKindOf( RUNTIME_CLASS( CMainDoc ) ) );
   ASSERT ( strcmp ( m_pDocument-&gt;GetRuntimeClass ( )-&gt;m_lpszClassName, &quot;CMainDoc&quot; ) == 0 );
   return ( CMainDoc* ) m_pDocument;
}
#endif //_DEBUG

void CGueltigkeitsBestaetigungView2 :: SetDocument ( CMainDoc *pDoc )
{
   m_pDoc = pDoc;

   ASSERT_VALID ( m_pDoc );
}
</code></pre>
<p>ich habe mit GetDocument ausprobiert einen zeiger auf das dokument zu holen<br />
aber m_pDocument ist null</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186788/splitter-amp-getdocument</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 00:38:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186788.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jul 2007 11:54:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Thu, 12 Jul 2007 11:54:27 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>folgende Situation:<br />
in einer SDI-Anwendung möchte ich einen zweiten Fenster öffnen wenn der Benutzer eine bestimmte Aktion durchführt.<br />
dieses zweiten Fenster habe ich mit einen eingenen Splitter geteilt in zwei Zeilen.<br />
jeden Teil habe ich einen View zugeordnet.</p>
<p>Problem:<br />
wie greife ich in meinem View (zweite teil des zweiten fenster) auf das Dokument von meiner SDI-Anwendung.</p>
<pre><code>int CGueltigkeitsBestaetigungView2 :: OnCreate ( LPCREATESTRUCT lpCreateStruct )
{
   ASSERT_VALID ( this );

   if ( CFormView :: OnCreate ( lpCreateStruct ) == -1 )
   {
      return -1;
   }

   //--  Hole nach dem Erzeugen des Views den nun gueltigen Document Zeiger
   m_pDoc = GetDocument ( );

   ASSERT_VALID ( m_pDoc );

   return 0;
}

#ifdef _DEBUG
CMainDoc* CGueltigkeitsBestaetigungView2::GetDocument()  // non-debug version is inline
{
   //ASSERT( m_pDocument-&gt;IsKindOf( RUNTIME_CLASS( CMainDoc ) ) );
   ASSERT ( strcmp ( m_pDocument-&gt;GetRuntimeClass ( )-&gt;m_lpszClassName, &quot;CMainDoc&quot; ) == 0 );
   return ( CMainDoc* ) m_pDocument;
}
#endif //_DEBUG

void CGueltigkeitsBestaetigungView2 :: SetDocument ( CMainDoc *pDoc )
{
   m_pDoc = pDoc;

   ASSERT_VALID ( m_pDoc );
}
</code></pre>
<p>ich habe mit GetDocument ausprobiert einen zeiger auf das dokument zu holen<br />
aber m_pDocument ist null</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323817</guid><dc:creator><![CDATA[sibourg]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:54:27 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Thu, 12 Jul 2007 15:12:33 GMT]]></title><description><![CDATA[<p>Erzeuge den View mit dem entsprechenden Create Context, dann wird der View automatisch diesem Dokument zugeordnet.</p>
<p>Fülle die CCreateContext Struktur entsprechend aus und erzeuge den View damit. Schau Dir mal das ganze im MFC Quellcode an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323990</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 12 Jul 2007 15:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Tue, 17 Jul 2007 07:57:16 GMT]]></title><description><![CDATA[<p>danke Martin für deine Antwort.</p>
<p>ich habe die Funktion jetzt so umgeschrieben.</p>
<pre><code>int CGueltigkeitsBestaetigungView2 :: OnCreate ( LPCREATESTRUCT lpCreateStruct )
{
   ASSERT_VALID ( this );

   if ( CFormView :: OnCreate ( lpCreateStruct ) == -1 )
   {
      return -1;
   }

   CRuntimeClass *runtimeClass = NULL;
   runtimeClass = RUNTIME_CLASS( CGueltigkeitsBestaetigungView2 );

   CCreateContext context;
   context.m_pNewViewClass   = runtimeClass;
   m_pDoc = dynamic_cast&lt;CMainDoc*&gt;(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument()); 
   //context.m_pCurrentDoc     = GetDocument();
   context.m_pCurrentDoc     = m_pDoc;

   context.m_pNewDocTemplate = context.m_pCurrentDoc-&gt;GetDocTemplate();
   context.m_pCurrentFrame   = (CFrameWnd*) AfxGetMainWnd();
   context.m_pLastView       = NULL;

   //--  Hole nach dem Erzeugen des Views den nun gueltigen Document Zeiger
   //m_pDoc = GetDocument ( );

   ASSERT_VALID ( m_pDoc );

   return 0;
}

/*#ifdef _DEBUG
CMainDoc* CGueltigkeitsBestaetigungView2::GetDocument()  // non-debug version is inline
{
   //ASSERT( m_pDocument-&gt;IsKindOf( RUNTIME_CLASS( CMainDoc ) ) );
   ASSERT ( strcmp ( m_pDocument-&gt;GetRuntimeClass ( )-&gt;m_lpszClassName, &quot;CMainDoc&quot; ) == 0 );
   return ( CMainDoc* ) m_pDocument;
}
#endif //_DEBUG*/
</code></pre>
<p>.</p>
<p>aber GetDocument liefert immer null. ich habe die abgeleitete variante und die basis-variante ausprobiert aber beide liefern null.<br />
zeiger auf das dokument habe ich jetzt mit</p>
<pre><code>m_pDoc = dynamic_cast&lt;CMainDoc*&gt;(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
</code></pre>
<p>geholt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326982</guid><dc:creator><![CDATA[sibourg]]></dc:creator><pubDate>Tue, 17 Jul 2007 07:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Tue, 17 Jul 2007 09:12:59 GMT]]></title><description><![CDATA[<p>Falscher Ansatz. OnCreate benutzt diesen CCreateContext!</p>
<p>Du sollst diesen CCreateContext ausfüllen bevor Du den View erzeugst.</p>
<p>Wie erzeugst Du den View? Zeige den Code davon!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327033</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 17 Jul 2007 09:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Tue, 17 Jul 2007 11:47:01 GMT]]></title><description><![CDATA[<pre><code>BOOL CGueltigkeitsBestaetigungFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
   CRect cr; 
   GetClientRect( &amp;cr);

   //teilen des Hauptfensters in 2 Zeilen
   if ( !m_mainSplitter.CreateStatic( this, 2, 1 ) ) 
   { 
      AfxMessageBox( _T(&quot;Error setting up splitter frames?&quot;), 
         MB_OK);
      return FALSE; 
   }

   if ( !m_mainSplitter.CreateView( 0, 0, 
      RUNTIME_CLASS(CGueltigkeitsBestaetigungView1), 
      CSize(cr.Width(), 50), pContext ) ) 
   { 
      AfxMessageBox( _T(&quot;Error setting up splitter frames!&quot;), MB_OK);
      return FALSE; 
   }
   if ( !m_mainSplitter.CreateView( 1, 0, 
      RUNTIME_CLASS(CGueltigkeitsBestaetigungView2), 
      CSize(cr.Width(),cr.Height()-50), pContext ) ) 
   { 
      AfxMessageBox( _T(&quot;Error setting up splitter frames!&quot;), MB_OK);
      return FALSE; 
   }

   // Lock a Bar

   m_bInitSplitter = true;
   return TRUE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1327173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327173</guid><dc:creator><![CDATA[sibourg]]></dc:creator><pubDate>Tue, 17 Jul 2007 11:47:01 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Tue, 17 Jul 2007 12:14:06 GMT]]></title><description><![CDATA[<p>Ist hier der pContext mit dem richtigen CDocument ausgefüllt?<br />
Denn dieses Dokument wird verwendet um im View m_pDocument zu setzten. Und diese Daten werden verwendet um den View auch dem Dokument zuzuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327209</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 17 Jul 2007 12:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Wed, 18 Jul 2007 11:33:05 GMT]]></title><description><![CDATA[<p>nein pContext ist mit dem richtigen CDocument in dieser Stelle noch nicht ausgefüllt.<br />
ich habe die Aufrufe in Debuger verfolgt. so ist die Reihenfolge:</p>
<p>zuerst wird ein objekt von der zu teilende Fensterklasse erzeugt</p>
<pre><code>// Gültigkeitsbestätigung
   CGueltigkeitsBestaetigungFrame* pFrm = NULL;
   pFrm = new CGueltigkeitsBestaetigungFrame(m_pDoc);
   if ( pFrm  )
   {
      CFrameWnd *pFrame = (CFrameWnd *)AfxGetApp()-&gt;m_pMainWnd;
      CRect rect ( 0, 0, 750, 400 );
[b]      pFrm-&gt;Create( pFrame);[/b]   }
</code></pre>
<p>selbst implementierte Funktion create</p>
<pre><code>BOOL CGueltigkeitsBestaetigungFrame::Create( CWnd *pParent)
{
   .......
   // hier wird das Fenster erzeugt
   BOOL ret = [b]CFrameWnd :: Create [/b]( NULL,
      csFehlerausgabeTitel,
      WS_OVERLAPPEDWINDOW | WS_POPUP,
      rect,
      pParent ); 
......
}
</code></pre>
<p>der Befehl CFrameWnd :: Create ruft OnCreate MFC-methode</p>
<pre><code>int CGueltigkeitsBestaetigungFrame :: OnCreate
(
 LPCREATESTRUCT lpCreateStruct
 )
{
   [b]// hier kann der lpCreateStruct ausfühllen werden oder ?[/b]
   if ( [b]CFrameWnd :: OnCreate ( lpCreateStruct )[/b] == -1 )
   {
      return -1;
   }

      return 0;
}
</code></pre>
<p>der Befehl CFrameWnd :: OnCreate ( lpCreateStruct) ruft wiederum<br />
die MFC-Methode</p>
<pre><code>BOOL CGueltigkeitsBestaetigungFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
//hier werden die Views erzeugt
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1327721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327721</guid><dc:creator><![CDATA[sibourg]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Splitter &amp;amp; GetDocument on Wed, 18 Jul 2007 12:19:46 GMT]]></title><description><![CDATA[<p>Du musst bei CFrameWnd::Create den CCreateContext mit übergeben!</p>
<p>Denn alle weiteren Fenster (Views) werden in diesem Conext angelegt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327756</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:19:46 GMT</pubDate></item></channel></rss>