<?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[Zugriff auf Dokumentklasse]]></title><description><![CDATA[<p>Ich habe mir eine Klasse erstellt welche für die Fehlerbehandlung zuständig ist. Im Falle eines Fehlers wird die Funktion RuntimeError aufgerufen und die Variable nActualRuntimeFunction (zeigt an welche Funktion die Fehlerbehandlung aufruft, aktualisiert.<br />
Von CError möchte ich nun auf eine Funktion in C...Doc zugreifen, um die nActualRuntimeFunction von Int in CString zu konvertieren.</p>
<pre><code class="language-cpp">void CError::RuntimeError(void)
{
	CError ErrorDlg;
	ErrorDlg.DoModal();
	CSipromTDoc* pDoc = dynamic_cast&lt;CSipromTDoc*&gt;(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	m_ActualRuntimeFunction.SetWindowText(pDoc-&gt;CastInt2String(m_nActualRuntimeFunction));
}
</code></pre>
<p>Beim Zugriff auf C...Doc krieg ich dann ne Ausnahme.<br />
Im Befehlsstack steht zu diesem Zeitpunkt:<br />
SipromT.exe!malloc(unsigned int nSize = 3765269347)</p>
<p>Wo liegt der Fehler in meinem Code??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179968/zugriff-auf-dokumentklasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 10:03:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179968.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Apr 2007 08:30:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 08:30:31 GMT]]></title><description><![CDATA[<p>Ich habe mir eine Klasse erstellt welche für die Fehlerbehandlung zuständig ist. Im Falle eines Fehlers wird die Funktion RuntimeError aufgerufen und die Variable nActualRuntimeFunction (zeigt an welche Funktion die Fehlerbehandlung aufruft, aktualisiert.<br />
Von CError möchte ich nun auf eine Funktion in C...Doc zugreifen, um die nActualRuntimeFunction von Int in CString zu konvertieren.</p>
<pre><code class="language-cpp">void CError::RuntimeError(void)
{
	CError ErrorDlg;
	ErrorDlg.DoModal();
	CSipromTDoc* pDoc = dynamic_cast&lt;CSipromTDoc*&gt;(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	m_ActualRuntimeFunction.SetWindowText(pDoc-&gt;CastInt2String(m_nActualRuntimeFunction));
}
</code></pre>
<p>Beim Zugriff auf C...Doc krieg ich dann ne Ausnahme.<br />
Im Befehlsstack steht zu diesem Zeitpunkt:<br />
SipromT.exe!malloc(unsigned int nSize = 3765269347)</p>
<p>Wo liegt der Fehler in meinem Code??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274392</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 08:30:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 08:35:51 GMT]]></title><description><![CDATA[<p>Erstmal sieht es seltsam aus, daß eine Methode der CError-Klasse noch ein neues CError-Objekt anlegt und dessen DoModal() aufruft. Du hast doch schon ein Objekt (*this), das alle nötigen Informationen hat.</p>
<p>PS: Und greift die Methode CastInt2String() auf Daten des Dokuments zu? Wenn nein, warum steckt sie in der Dokument-Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274397</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 08:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 08:41:01 GMT]]></title><description><![CDATA[<p>Also könnte ich auch einfach schreiben?</p>
<pre><code class="language-cpp">this-&gt;DoModal();
</code></pre>
<p>In diesem Fall greift die Methode CastInt2String nur auf Variablen von CError zu.</p>
<p>Doch in einem späteren Entwicklungsschritt wird sie auch auf Variablen von C...Doc zugreifen.<br />
Würdest du die Methode einmal in CError und einmal in C...Doc implementieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274402</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 08:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 08:53:40 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Also könnte ich auch einfach schreiben?</p>
<pre><code class="language-cpp">this-&gt;DoModal();
</code></pre>
</blockquote>
<p>Wenn es überhaupt nötig ist - was soll CError überhaupt machen, wenn ein Fehler aufgetreten ist?</p>
<blockquote>
<p>In diesem Fall greift die Methode CastInt2String nur auf Variablen von CError zu.</p>
</blockquote>
<p>Randfrage: Woher weiß die Methode dann, aus welchem CError-Objekt sie ihre Variablen holen soll?</p>
<blockquote>
<p>Doch in einem späteren Entwicklungsschritt wird sie auch auf Variablen von C...Doc zugreifen.<br />
Würdest du die Methode einmal in CError und einmal in C...Doc implementieren?</p>
</blockquote>
<p>Ich würde sie nur einmal anlegen (da, wo sie am besten hinpasst) und ihr eventuell nötige Zusatzinformationen als Parameter mitgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274411</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 08:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 10:22:31 GMT]]></title><description><![CDATA[<p>Wenn ein Fehler aufgetreten ist öffnet sich ein Dialogfeld(nur in Debug mode) und gibt die Variable nActualRuntimeFunction aus.<br />
nActualRuntimeFunction wird in jeder Funktion mit einem anderen Wert initialisiert, daher weiß ich welche Funktion einen Fehler auslöst.<br />
Ich habe jetzt das dynamic_cast&lt;&gt; durch einen einfachen C cast ersezt und so funktioniert es glaub ich auch.</p>
<p>Ich muss allerdings einen nicht-modalen Dialog erstellen. Da ja sonst die Variable im Textfeld nicht ausgegeben wird.</p>
<p>Und da hab ich schon das nächste Problem:<br />
Ich kriege beim Kompilieren die Fehlermeldung CError typ neudefinition</p>
<pre><code class="language-cpp">void CError::OnBnClickedBtnCancel()
{
	OnCancel();
}

void CError::InitialDialog(void)
{	
	UpdateData (FALSE);
}

CError* CError::Instance(CWnd* pParentWnd)
{
	BOOL bWOldState=FALSE;

	CError* pWDlg = new CError;

	if (pParentWnd==NULL) pWDlg-&gt;m_pParentWnd =  AfxGetApp()-&gt;m_pMainWnd; // can be NULL!
	else pWDlg-&gt;m_pParentWnd = pParentWnd;

	if (!pWDlg-&gt;Create(IDD_ERRORDLG, pWDlg-&gt;m_pParentWnd))
	{
		DeleteObject( pWDlg);
		pWDlg=NULL;
		return NULL;
	}
	if (pWDlg-&gt;m_pParentWnd != NULL)
	  bWOldState = pWDlg-&gt;GetParentWnd()-&gt;EnableWindow(FALSE); // under window = incative

	pWDlg-&gt;EnableWindow (TRUE);
	if (bWOldState) pWDlg-&gt;m_bOldEnableState=FALSE;
	else pWDlg-&gt;m_bOldEnableState=TRUE;

	pWDlg-&gt;ShowWindow(SW_SHOW);
	return pWDlg;
}

void CError::Done(void)
{
	if (::IsWindow(GetSafeHwnd())) 
	{			
	 if (m_pParentWnd!=NULL) m_pParentWnd-&gt;EnableWindow(m_bOldEnableState);
	 if (::IsWindow(GetSafeHwnd())) DestroyWindow(); 
	}
}

void CError::OnCancel(void)
{
 	notifyCancel();
}
void CError::PostNcDestroy(void)
{	
	delete this;
}
void CError::OnCancelMode()
{	
	CDialog::OnCancelMode();
}

void CError::SetActualRuntimeFunction(Uint16_t nActualRuntimeFunction)
{
	m_nActualRuntimeFunction = nActualRuntimeFunction;
}

Uint16_t CError::GetActualRuntimeFunction(void)
{
	return m_nActualRuntimeFunction;
}

void CError::RuntimeError(void)
{	
	CError* pError;
	MSG Msg;

	/*creates the non-modal dialog*/
	pError=CError::Instance(NULL);		
	pError-&gt;InitialDialog();
	pError-&gt;UpdateData(FALSE);

	while(::PeekMessage(&amp;Msg, NULL,0,0,PM_NOREMOVE))
	{
		if (!AfxGetApp()-&gt;PumpMessage())
		{
			::PostQuitMessage(0); 
			break;
		}
	}
	pError-&gt;UpdateData(FALSE);

	CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	m_ActualRuntimeFunction.SetWindowText(pDoc-&gt;CastInt2String(m_nActualRuntimeFunction));
}

BEGIN_MESSAGE_MAP(CError, CDialog)
	ON_BN_CLICKED(IDC_BTN_CANCEL, OnBnClickedBtnCancel)
END_MESSAGE_MAP()
</code></pre>
<p>Was könnte denn daran falsch sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274470</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 10:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 10:28:16 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Ich muss allerdings einen nicht-modalen Dialog erstellen. Da ja sonst die Variable im Textfeld nicht ausgegeben wird.</p>
</blockquote>
<p>Nein, mußt du nicht - du mußt nur die Kennziffer übergeben, bevor du DoModal() aufrufst.</p>
<blockquote>
<p>Und da hab ich schon das nächste Problem:<br />
Ich kriege beim Kompilieren die Fehlermeldung CError typ neudefinition</p>
</blockquote>
<p>Wenn du jetzt noch dazusagst, WO die Meldung kommt, könnte ich dazu auch einige Ratschläge loswerden <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1274475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274475</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 10:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 10:28:36 GMT]]></title><description><![CDATA[<p>Hab den Fehler gefunden. war mal wieder ein fehler bei den includes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274476</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 10:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:04:07 GMT]]></title><description><![CDATA[<p>Ich kann nun den nicht-modalen dialog erstellen und zerstören, wenn ich aber eine Textausgabe mache, stürzt mein Programm ab und ich bekomme ein ASSERT.</p>
<pre><code class="language-cpp">void CError::RuntimeError(void)
{	
	BOOL bCancel=FALSE;
	CError* pError;
	MSG Msg;

	/*creates the non-modal dialog*/
	pError=CError::Instance(&amp;bCancel, AfxGetMainWnd());		
	pError-&gt;InitialDialog();
	pError-&gt;ShowWindow(false);
	pError-&gt;UpdateData(FALSE);

	while(bCancel == FALSE)
	{
		while(::PeekMessage(&amp;Msg, NULL,0,0,PM_NOREMOVE))
		{
			if (!AfxGetApp()-&gt;PumpMessage())
			{
				::PostQuitMessage(0); 
				break;
			}
		}
	CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	m_ActualRuntimeFunction.SetWindowText(pDoc-&gt;CastInt2String(m_nActualRuntimeFunction));

	pError-&gt;ShowWindow(true);
	pError-&gt;UpdateData(FALSE);
	}
	pError-&gt;Done();
}
</code></pre>
<p>Weiß jemand wo der Fehler liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274502</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:13:31 GMT]]></title><description><![CDATA[<p>Zeig doch mal den Code, der diese Methode aufruft. Der Ansatz sieht in meinen Augen zumindest fragwürdig aus - normalerweise erzeugt das Hauptprogramm das Dialogobjekt, übergibt (optional) einige Werte und ruft dann selber DoModal() auf. Und der Dialog stellt sich selber dar (da ist es nicht nötig, noch einen Bruder zu Hilfe zu holen ;)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274506</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:13:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:17:19 GMT]]></title><description><![CDATA[<p>Zum testen hab ich den aufruf der Funktion in der Initialisierung der View.</p>
<pre><code class="language-cpp">void CSipromTView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()-&gt;RecalcLayout();
	ResizeParentToFit();
	CError MyError;
	MyError.RuntimeError();
}
</code></pre>
<p>IMHO sollte das nicht der Grund für den Fehler sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274507</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:29:21 GMT]]></title><description><![CDATA[<p>Der Grund für den Fehler dürfte irgendwo in deinem abenteuerlichen Klassenkonzept liegen. Soweit ich das überblicke, dient die Klasse CError nur dazu, den Benutzer über einen Fehler zu informieren - also sollte sie das auch machen. Dazu braucht sie aber kein zweites CError-Objekt, dem sie die Arbeit übergeben soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274517</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:36:19 GMT]]></title><description><![CDATA[<p>Welches zweite Error-Objekt meinst du denn? MyError?<br />
MyError muss ich doch erstellen um die Funktion MyError.RuntimeError(); aufzurufen.</p>
<p>Den Dialog könnte ich auch aus der Applikation erstellen, aber was ändert das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274525</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:39:25 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Welches zweite Error-Objekt meinst du denn? MyError?<br />
MyError muss ich doch erstellen um die Funktion MyError.RuntimeError(); aufzurufen.</p>
</blockquote>
<p>MyError ist nicht das Problem. Aber warum holst du dir in RuntimeError noch ein weiteres Objekt (pError)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274529</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:41:34 GMT]]></title><description><![CDATA[<p>Habe es zuerst mit this versucht, dann krieg ich aber in der Programmzeile</p>
<pre><code class="language-cpp">pError=CError::Instance(&amp;bCancel, AfxGetMainWnd());
</code></pre>
<p>die Fehlermeldung Operand= benötigt L-Wert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274532</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:41:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:46:20 GMT]]></title><description><![CDATA[<p>Wozu brauchst du diese Zeile denn überhaupt? Du hast doch bereits ein Dlg-Objekt (MyError aus Sicht des Views alias *this aus Sicht deiner Methode) - und genau dieses sollte den Fehler auch weitermelden:</p>
<pre><code class="language-cpp">void CError::RuntimeError()
{
  ...//initialisiere Membervariablen
  DoModal();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1274537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274537</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:46:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 11:54:22 GMT]]></title><description><![CDATA[<p>Das hab ich jetzt nicht so richtig kapiert.<br />
was macht denn</p>
<pre><code class="language-cpp">void CError::RuntimeError()
{
  ...//initialisiere Membervariablen
  DoModal();
}
</code></pre>
<p>Ich weiß nicht wie du einen nicht-modalen Dialog erstellst, ich mache es immer auf diese Art. Deine Methode kenn ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274548</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 11:54:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 12:00:00 GMT]]></title><description><![CDATA[<p>Wozu brauchst du überhaupt einen Nicht-modalen Dialog? In den meisten Anwendungsfällen reicht ein modaler Dialog völlig aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274558</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 27 Apr 2007 12:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Fri, 27 Apr 2007 12:55:11 GMT]]></title><description><![CDATA[<p>Der Dialog soll sich öffnen und den Wert der Variablen ausgeben.<br />
Wie kann ich das denn mit modalen dialog machen?</p>
<pre><code class="language-cpp">void CError::RuntimeError(void)
{
   this-&gt;DoModal();
   m_editFeld.SetWindowText(m_nActualRuntimeFunction);
}
</code></pre>
<p>Würde das funktionieren wenn der Wert der Variable in CError abgelegt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274600</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 27 Apr 2007 12:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Mon, 30 Apr 2007 06:38:20 GMT]]></title><description><![CDATA[<p>Die Dialog-Elemente (inklusive der Titelleiste) kannst du nur solange ansprechen, wie der Dialog tatsächlich existiert. Das heißt, du müsstest die Daten in einer &quot;normalen&quot; (je nach Typ int, double, CString o.ä.) Membervariablen zwischenlagern und in der (afair) OnInitialUpdate()-Methode dein SetWindowText aufrufen.</p>
<p>(btw, von wo aus wird eigentlich m_nActualRuntimeFunction befüllt?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276033</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Apr 2007 06:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Wed, 02 May 2007 06:52:37 GMT]]></title><description><![CDATA[<p>m_nActualRuntimeFunction wird in der Funktion gefüllt die den Fehler verursacht.</p>
<pre><code class="language-cpp">CError MyError;
MyError.SetActualRuntimeFunction(xxxx);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1277292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277292</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 02 May 2007 06:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Wed, 02 May 2007 07:56:01 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Ich kann nun den nicht-modalen dialog erstellen und zerstören, wenn ich aber eine Textausgabe mache, stürzt mein Programm ab und ich bekomme ein ASSERT.</p>
<pre><code class="language-cpp">void CError::RuntimeError(void)
{	
	BOOL bCancel=FALSE;
	CError* pError;
	MSG Msg;

	/*creates the non-modal dialog*/
	pError=CError::Instance(&amp;bCancel, AfxGetMainWnd());		
	pError-&gt;InitialDialog();
	pError-&gt;ShowWindow(false);
	pError-&gt;UpdateData(FALSE);
   
	while(bCancel == FALSE)
	{
		while(::PeekMessage(&amp;Msg, NULL,0,0,PM_NOREMOVE))
		{
			if (!AfxGetApp()-&gt;PumpMessage())
			{
				::PostQuitMessage(0); 
				break;
			}
		}
	CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	m_ActualRuntimeFunction.SetWindowText(pDoc-&gt;CastInt2String(m_nActualRuntimeFunction));
	
	pError-&gt;ShowWindow(true);
	pError-&gt;UpdateData(FALSE);
	}
	pError-&gt;Done();
}
</code></pre>
<p>Weiß jemand wo der Fehler liegt?</p>
</blockquote>
<p>1. Warum verwendest Du nicht DoModal, wenn Du schon eine eigene Nachrichtenschleife implementierst?<br />
2. Du solltest den Dokument-Zeiger den Du erhälst auf NULL testen und durch DYNAMIC_DOWNCAST umwandeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277317</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 02 May 2007 07:56:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Wed, 02 May 2007 07:59:22 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>m_nActualRuntimeFunction wird in der Funktion gefüllt die den Fehler verursacht.</p>
<pre><code class="language-cpp">CError MyError;
MyError.SetActualRuntimeFunction(xxxx);
</code></pre>
</blockquote>
<p>Du machst es dir nur unnötig kompliziert <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="😉"
    /> Und außerdem besteht (vermutlich) kein direkter Kontakt zwischen diesem MyError und dem, dessen RuntimeError()-Methode du später aufrufen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277320</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 02 May 2007 07:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Wed, 02 May 2007 09:23:12 GMT]]></title><description><![CDATA[<p>Wie würdest du es denn machen?<br />
Ich muss doch auf eine Methode zugreifen die in einer anderen Klasse implementiert ist.<br />
Das geht doch mit</p>
<pre><code class="language-cpp">CError MyError;
MyError.SetActualRuntimeFunction(xxxx);
</code></pre>
<p>oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277372</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 02 May 2007 09:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dokumentklasse on Wed, 02 May 2007 09:36:36 GMT]]></title><description><![CDATA[<p>Ja, technisch geht es so. Allerdings überleben die Member eines Objekts nicht, wenn es zerstört wird. D.h. wenn du woanders einen CError anlegst, weiß der überhaupt nichts von diesem Aufruf.</p>
<p>Ich würde gleich dort, wo der Fehler aufgetreten ist, die entsprechende Meldung anzeigen lassen (und im Bestfall die beiden Methoden SetActualRuntimeFunction() und RuntimeError() zu einer verschmelzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277384</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 02 May 2007 09:36:36 GMT</pubDate></item></channel></rss>