<?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[Absturz wenn Fremde Klasse Aufruf erzeugt]]></title><description><![CDATA[<p>Mich plagt jetzt schon ein paar Stunden die Klasse eines nicht modalen<br />
Dialoges.</p>
<p>Dort wird eine Funktion des Hauptdialoges gerufen, welche bei</p>
<pre><code class="language-cpp">GetDlgItem(IDC_BUTTON8)-&gt;EnableWindow(true);
</code></pre>
<p>fehlschlägt.</p>
<p>Es ist immer dann der Fall, wenn aus dem nicht modalen Dialog gerufen wird.<br />
Das Programm schmiert ab und im Debugger lande ich in der winocc.cpp an<br />
dieser Stelle:</p>
<pre><code class="language-cpp">BOOL CWnd::EnableWindow(BOOL bEnable)
{
	ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

 :arrow_right: 	if (m_pCtrlSite == NULL)
		return ::EnableWindow(m_hWnd, bEnable);
	else
		return m_pCtrlSite-&gt;EnableWindow(bEnable);
}
</code></pre>
<p>Der Aufruf erfolgt so aus dem nicht modalen Dialog:</p>
<pre><code class="language-cpp">CString h =&quot;123&quot;;
CTestDlg zug;
zug.dropperpfad(h);
</code></pre>
<p>In der Hauptanwendung ist die Funktion so angelegt:</p>
<pre><code class="language-cpp">void CTestDlg::dropperpfad(CString d_listpfad)
{
GetDlgItem(IDC_BUTTON8)-&gt;EnableWindow(true);
}
</code></pre>
<p>IDC_BUTTON8 existiert und ist inaktiv gesetzt.</p>
<p>Der Aufruf aus der Hauptanwendung bringt keine Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186061/absturz-wenn-fremde-klasse-aufruf-erzeugt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 14:00:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186061.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jul 2007 14:49:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 14:49:41 GMT]]></title><description><![CDATA[<p>Mich plagt jetzt schon ein paar Stunden die Klasse eines nicht modalen<br />
Dialoges.</p>
<p>Dort wird eine Funktion des Hauptdialoges gerufen, welche bei</p>
<pre><code class="language-cpp">GetDlgItem(IDC_BUTTON8)-&gt;EnableWindow(true);
</code></pre>
<p>fehlschlägt.</p>
<p>Es ist immer dann der Fall, wenn aus dem nicht modalen Dialog gerufen wird.<br />
Das Programm schmiert ab und im Debugger lande ich in der winocc.cpp an<br />
dieser Stelle:</p>
<pre><code class="language-cpp">BOOL CWnd::EnableWindow(BOOL bEnable)
{
	ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

 :arrow_right: 	if (m_pCtrlSite == NULL)
		return ::EnableWindow(m_hWnd, bEnable);
	else
		return m_pCtrlSite-&gt;EnableWindow(bEnable);
}
</code></pre>
<p>Der Aufruf erfolgt so aus dem nicht modalen Dialog:</p>
<pre><code class="language-cpp">CString h =&quot;123&quot;;
CTestDlg zug;
zug.dropperpfad(h);
</code></pre>
<p>In der Hauptanwendung ist die Funktion so angelegt:</p>
<pre><code class="language-cpp">void CTestDlg::dropperpfad(CString d_listpfad)
{
GetDlgItem(IDC_BUTTON8)-&gt;EnableWindow(true);
}
</code></pre>
<p>IDC_BUTTON8 existiert und ist inaktiv gesetzt.</p>
<p>Der Aufruf aus der Hauptanwendung bringt keine Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318326</guid><dc:creator><![CDATA[Kunibert]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:49:41 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 15:46:37 GMT]]></title><description><![CDATA[<p>Du erstellst eine neue Klasseninstanz des Dialogs und da existiert eben kein Fenster und auch keine Controls.<br />
Wenn du auf den Vorhanden Dialog zugreifen willst muss du die vorhanden Klasseninstanz nehmen.<br />
Übergib den this an dem modlessdialog ider eben eine zeiger auf das Control.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318362</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 17:06:06 GMT]]></title><description><![CDATA[<p>Hallo Unix-Tom,</p>
<p>meinst du ich soll statt der Dlg-Klasse einfach folgendes verwenden?</p>
<p>[cpp]CString h =&quot;123&quot;;<br />
<strong>CTest zug;</strong><br />
zug.dropperpfad(h);[/cpp]</p>
<p>Ich hoffe ich stelle mich nicht allzu blöde an, wo das doch<br />
ganz sicher zu den Basics gehört <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318410</guid><dc:creator><![CDATA[Kuni@home]]></dc:creator><pubDate>Wed, 04 Jul 2007 17:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 17:57:08 GMT]]></title><description><![CDATA[<p>Ok, dieser ominöse this-Zeiger ist wohl der Knackpunkt?!</p>
<p>Kann mir bitte jemand sagen wie man damit in diesem Fall arbeitet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318442</guid><dc:creator><![CDATA[Kuni@home]]></dc:creator><pubDate>Wed, 04 Jul 2007 17:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 18:23:54 GMT]]></title><description><![CDATA[<p>Hmm,..ich mache es doch eigentlich genauso wie hier auch<br />
beschrieben...??</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169814-and-highlight-is-dialog+funktion.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169814-and-highlight-is-dialog+funktion.html</a></p>
<p>I need some correction if i am that wrong please <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318464</guid><dc:creator><![CDATA[Kuni@home]]></dc:creator><pubDate>Wed, 04 Jul 2007 18:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 18:28:41 GMT]]></title><description><![CDATA[<p>Ich denke das Dir hier die Grundlagen fehlen und es würde zu weit führen dir diese beizubringen.<br />
Als Ansatz:<br />
this ist ein zeiger auf seine eigene Klasse (Man möge mir verzeihen das ich keine Fachbegriffe verwendet habe)</p>
<p>Wenn du eine anderen Dialog erstellst kannst du diesem den this-Zeiger übergeben und kannst dann vom anderen Dialog (Klasse) mittels dem thiszeiger auf die andere Klasse zugreifen.<br />
Dies ist aber nur ene von vielen Möglichkeiten und sicher nicht die schönste.<br />
Es würde z.B. auch mit eine Message gehen.<br />
Aber wie gesagt fehlen dir dazu die Grundlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318469</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 04 Jul 2007 18:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 19:05:23 GMT]]></title><description><![CDATA[<p>Hmm, verstehen würde ich das schon gerne.</p>
<p>Wenn:</p>
<pre><code class="language-cpp">int x = 10;
</code></pre>
<p>dann ist das doch identisch mit</p>
<pre><code class="language-cpp">this-&gt;x=10;
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">(*this).x=10;
</code></pre>
<p>Das ist etwas was ich inzwischen bereits versucht habe.<br />
Ich hoffe richtig...</p>
<pre><code class="language-cpp">this-&gt;GetDlgItem(IDC_EDIT1)-&gt;SetWindowText(x);
</code></pre>
<p>Der Fehler bleibt jedoch der gleiche = Absturz.</p>
<p>Ich wäre dir dankbar, wenn du mir dennoch helfen könntest.<br />
Es ist ja nicht so, dass ich daraus nichts lernen könnte, oder wollte.</p>
<p>Gruß<br />
Kunibert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318485</guid><dc:creator><![CDATA[Kuni@home]]></dc:creator><pubDate>Wed, 04 Jul 2007 19:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 19:19:04 GMT]]></title><description><![CDATA[<p>du kannst nicht einfach von deinem 2ten dialog per this auf den ersten zugreifen.<br />
du übergibst eine zeiger auf den dialog.<br />
schau mal in die FAQ. Da habe ich vor jahren mal eine Code gepostet der eine this an einen Thread übergibt.<br />
Diese Arbeit solltest dir die Lösung schon wert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318501</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 04 Jul 2007 19:19:04 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Wed, 04 Jul 2007 19:50:06 GMT]]></title><description><![CDATA[<p>Ich habe die 6 Seiten FAQ durchwühlt, aber bin mir nicht sicher wie<br />
ich da nun wirklich vorgehe (ganz ehrlich).</p>
<pre><code class="language-cpp">CString h =&quot;c:\\test&quot;; 

CTestDlg* xg = NULL;
xg = new CTestDlg(this); // du meinst diesen Part oder?
xg-&gt;dropperpfad(h);
</code></pre>
<p>Ich vermute da, dies auch falsch ist, dass es mir auch niemand weiter<br />
versuchen wird beizubringen, was ich verstehen kann, aber schade finde.</p>
<p>Ich halte mich an google und versuche weiter mein Glück <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="😡"
    /><br />
Sollte ich die Lösung noch finden poste ich hier, damit irgendwann mal<br />
jemand, der auch so frishc dabei ist wie ich, sich die Arbeit nicht nochmal machen muss!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318511</guid><dc:creator><![CDATA[Kunibert]]></dc:creator><pubDate>Wed, 04 Jul 2007 19:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 05:06:18 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39101.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39101.html</a></p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39041.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39041.html</a></p>
<p>Auch wenn es um Threads geht aber der Klasse welche von CWinTrhread abgeleitet ist wird der this des Dialogs übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318600</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Thu, 05 Jul 2007 05:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 05:27:54 GMT]]></title><description><![CDATA[<p>Ich habe es doch m.E. schon so gemacht:</p>
<p>1. include der Hauptklasse in die neue Klasse des Unterdialoges.<br />
2. Zeiger auf Hauptklasse:</p>
<pre><code class="language-cpp">CHauptklasse* p_x;
</code></pre>
<p>3. Aufruf einer Funktion des Hauptdialoges über deren Zeiger</p>
<pre><code class="language-cpp">p_x-&gt;Funktion(x);
</code></pre>
<p>In dem Beispiel wird ja noch zuvor SetOwner gerufen. Da ich aus dem Unterdialog<br />
den Hauptdialog aufrufe vermute ich mal ich muss hier nicht mit</p>
<pre><code class="language-cpp">p_x-&gt;SetOwner(this),
</code></pre>
<p>sondern sowas wie</p>
<pre><code class="language-cpp">p_x-&gt;SetOwner(GetParent());
</code></pre>
<p>verwenden ?</p>
<p>Dennoch ist im Hauptdialog (wo ich auch ankomme in der Funktion), der<br />
Fehler, dass er bei Zugriff auf Steuerelemente des selben, abstürzt.</p>
<p>Aber die Funktion ist doch schon im Hauptdialog angekommen und die Funktion<br />
auch Teil dessen:</p>
<pre><code class="language-cpp">CHauptdialogDlg::Funktionxy(CString x);
</code></pre>
<p>Ich gebe mir wirklich mühe das zu verstehen <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/1318609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318609</guid><dc:creator><![CDATA[Kunibert]]></dc:creator><pubDate>Thu, 05 Jul 2007 05:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 08:10:56 GMT]]></title><description><![CDATA[<p>ich denke SendMessage(..) wird mich da wohl ebenso ans Ziel bringen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318675</guid><dc:creator><![CDATA[Kunibert]]></dc:creator><pubDate>Thu, 05 Jul 2007 08:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 08:19:13 GMT]]></title><description><![CDATA[<p>Ist denn p_x auch Initialisiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318682</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Thu, 05 Jul 2007 08:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 09:00:03 GMT]]></title><description><![CDATA[<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="😕"
    /> Ich bin mir nicht sicher was du meinst.<br />
Ich denke der Zeiger auf die Hauptklasse reicht aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318729</guid><dc:creator><![CDATA[Kunibert]]></dc:creator><pubDate>Thu, 05 Jul 2007 09:00:03 GMT</pubDate></item><item><title><![CDATA[Reply to Absturz wenn Fremde Klasse Aufruf erzeugt on Thu, 05 Jul 2007 09:01:24 GMT]]></title><description><![CDATA[<p>im &quot;ten Dialog muss du eine Funktion setowner (name egal) haben. In der Klasse des 2ten Dlg braucht du auch<br />
CHauptklasse* p_x;</p>
<p>In der Funktion setowner</p>
<p>p_x = pOwner;</p>
<p>Nun kannst du im 2ten Dialog auf die Klasse des Hauptdialogs zugreifen mit</p>
<p>p_x-&gt;wasauchimmer()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318730</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Thu, 05 Jul 2007 09:01:24 GMT</pubDate></item></channel></rss>