<?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[mit ButtonClick Funktion eines anderen Dialogs ausführen]]></title><description><![CDATA[<p>hi,</p>
<p>hier mal kurz der aufbau meiner anwendung:</p>
<pre><code class="language-cpp">MainFrm(MDI) - CSplitterWnd -|- CView(links) - CTabCtrl(links) -|- CDialog(A)
                             |                                  |
                             |                                  |- CDialog(B)
                             |
                             |- CView(rechts) - CTabCtrl(rechts) -|- CDialog(1)
                                                                  |
                                                                  |- CDialog(2)
                                                                  |
                                                                  |- CDialog(3)
</code></pre>
<p>ich möchte nun durch clicken des Buttons &quot;IDC_CmdTEST&quot; (c_cmdTest) im Dialog &quot;IDD_DIALOG3&quot; (CDialog3)</p>
<pre><code class="language-cpp">CDialog3::OnCmdTest()
{

}
</code></pre>
<p>die Funktion &quot;TestFunc&quot; im IDD_DIALOGA ( public: TestFunc(); )</p>
<pre><code class="language-cpp">CDialogA::TestFunc()
{

}
</code></pre>
<p>ausführen.</p>
<p>mein versuch:<br />
datei: &quot;Dialog3.cpp&quot;</p>
<pre><code class="language-cpp">...
#include &quot;DialogA.h&quot;
...

...
CDialog3::OnCmdTest();
{
  CDialogA::TestFunc();
}
...
</code></pre>
<p>==&gt; bringt mir Fehler...</p>
<p>--&gt; Wie muss der Code aussehen, dass es funktioniert?<br />
Was mache ich da falsch?</p>
<p>vielen dank.<br />
thinux</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145246/mit-buttonclick-funktion-eines-anderen-dialogs-ausführen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 08:09:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145246.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Apr 2006 09:55:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Wed, 26 Apr 2006 09:55:04 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>hier mal kurz der aufbau meiner anwendung:</p>
<pre><code class="language-cpp">MainFrm(MDI) - CSplitterWnd -|- CView(links) - CTabCtrl(links) -|- CDialog(A)
                             |                                  |
                             |                                  |- CDialog(B)
                             |
                             |- CView(rechts) - CTabCtrl(rechts) -|- CDialog(1)
                                                                  |
                                                                  |- CDialog(2)
                                                                  |
                                                                  |- CDialog(3)
</code></pre>
<p>ich möchte nun durch clicken des Buttons &quot;IDC_CmdTEST&quot; (c_cmdTest) im Dialog &quot;IDD_DIALOG3&quot; (CDialog3)</p>
<pre><code class="language-cpp">CDialog3::OnCmdTest()
{

}
</code></pre>
<p>die Funktion &quot;TestFunc&quot; im IDD_DIALOGA ( public: TestFunc(); )</p>
<pre><code class="language-cpp">CDialogA::TestFunc()
{

}
</code></pre>
<p>ausführen.</p>
<p>mein versuch:<br />
datei: &quot;Dialog3.cpp&quot;</p>
<pre><code class="language-cpp">...
#include &quot;DialogA.h&quot;
...

...
CDialog3::OnCmdTest();
{
  CDialogA::TestFunc();
}
...
</code></pre>
<p>==&gt; bringt mir Fehler...</p>
<p>--&gt; Wie muss der Code aussehen, dass es funktioniert?<br />
Was mache ich da falsch?</p>
<p>vielen dank.<br />
thinux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045524</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Wed, 26 Apr 2006 09:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Wed, 26 Apr 2006 10:04:08 GMT]]></title><description><![CDATA[<p>Du brauchst auch noch das Objekt vom Typ &quot;CDialogA&quot;, das hinter deinem Dialogfenster steckt. Und das solltest du bekommen, indem du dich vom Mainframe aus durch die Fenster-Hierarchie durchhangelst (oder indem du in der OnInit eine Liste aller Unterdialoge zusammenstellst, die du an zentraler Stelle lagerst):</p>
<pre><code class="language-cpp">CDialog3::OnCmdTest();
{
  CDialogA* dlgA = /*hol dir das Dialog-Objekt*/
  dlgA-&gt;TestFunc();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1045537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045537</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 26 Apr 2006 10:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Wed, 26 Apr 2006 12:51:26 GMT]]></title><description><![CDATA[<p>Und wenn du keine Variablen aus CDialogA in der TestFunc brauchst, bzw. alle Werte direkt der Funktion übermittelst, dann kannst du TestFunc in der .h als static erklären. Dann kannst du auch die Funktion per CDialogA::TestFunc(); aufrufen. Aber wenn die Funktion so allgemein ist, fragt man sich, was sie in CDialogA zu suchen hat, dann wäre es sinnvoll die Funktion in eine Klasse weiter vorne zu integrieren.<br />
Aber ansonsten das von CStoll verwenden. Ich denke sowieso, dass du eher dies gebrauchen wirst. Wollte nur noch ergänzen.<br />
Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045674</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 26 Apr 2006 12:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Wed, 26 Apr 2006 19:41:59 GMT]]></title><description><![CDATA[<p>ok. vielen dank euch beiden</p>
<p>werds mal versuchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045975</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Wed, 26 Apr 2006 19:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Wed, 26 Apr 2006 20:11:53 GMT]]></title><description><![CDATA[<p>...noch n paar fragen dazu:</p>
<p>wie muss dieses durchhangeln syntaxmäßig aussehen? und muss ich in diesem fall alle diese header includen?</p>
<p>mit</p>
<blockquote>
<p>oder indem du in der OnInit eine Liste aller Unterdialoge zusammenstellst, die du an zentraler Stelle lagerst</p>
</blockquote>
<p>meinst du im OnCreate im MainFrame, oder?? OnInit in dem Dialog von dem der Funktionsaufruf ausgeht??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045989</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Wed, 26 Apr 2006 20:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Thu, 27 Apr 2006 06:51:26 GMT]]></title><description><![CDATA[<p>thinux schrieb:</p>
<blockquote>
<p>meinst du im OnCreate im MainFrame, oder?? OnInit in dem Dialog von dem der Funktionsaufruf ausgeht??</p>
</blockquote>
<p>Das ist ans sich egal. Wenn Du z.B. dazu übergehst in deinen CWinApp Objekt entsprechende Zeiger auf Deine View einzubauene, die dann bei erzeugen gefüllt werden hättest Du immer Zugriff. Oder bau Dir ein Singleton, dass nur die Fenster verwaltet...</p>
<p>In OnCreate würde ich es nur machen, wenn die Klasse nur einmal als Dialog/View verwendet wird. Eine Wiederverwendbarkeit ist dann sofort ausgeschlossen, denn eine neue Instanz würde den selben globalen Zeiger überschreiben.</p>
<p>Ich würde es eher in CMainFRame beim Erzeugen in den entsprechenden Variablen ablegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046121</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 27 Apr 2006 06:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Thu, 27 Apr 2006 17:59:14 GMT]]></title><description><![CDATA[<p>ok, gut.</p>
<p>aber ich bekomms einfach nicht hin...<br />
kann mir jemand vielleicht ein code-beispiel geben?</p>
<blockquote>
<p>(oder indem du in der OnInit eine Liste aller Unterdialoge zusammenstellst, die du an zentraler Stelle lagerst)</p>
</blockquote>
<blockquote>
<p>Ich würde es eher in CMainFRame beim Erzeugen in den entsprechenden Variablen ablegen.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1046634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046634</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Thu, 27 Apr 2006 17:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Tue, 02 May 2006 15:54:14 GMT]]></title><description><![CDATA[<p>ihr wisst doch wie's geht??</p>
<p>kann mir denn niemand konkret sagen wie ich das umsetzten muss?<br />
gebt mir doch bitte etwas beispiel-code</p>
<p>mfg thinux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049700</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Tue, 02 May 2006 15:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Tue, 02 May 2006 16:44:30 GMT]]></title><description><![CDATA[<p>thinux schrieb:</p>
<blockquote>
<p>ihr wisst doch wie's geht??<br />
kann mir denn niemand konkret sagen wie ich das umsetzten muss?<br />
gebt mir doch bitte etwas beispiel-code</p>
</blockquote>
<p>Das ist doch albern. Ich habe es doch geschrieben. Wieviel tausend Zeilen muss man denn liefern? <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="😃"
    /><br />
Nocheinmal: Deklariere z.B. eine Member-Variable in Deinem CWinApp. Dieses Objekt kannst Du Dir immer besorgen oder es ist sowieso global definiert. Wenn das Mainframe den View anlegt speicherst Du den Zeiger dort... Da Dein Layout ja statisch ist dürftest Du damit kein Problem haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049730</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 02 May 2006 16:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Thu, 04 May 2006 17:15:47 GMT]]></title><description><![CDATA[<p>also so sieht mein Pointer in Dialog3.cpp aus</p>
<pre><code class="language-cpp">CDialogA* pDialogA = ( CDialogA* ) GetDlgItem( IDD_DIALOGA );
</code></pre>
<p>und so will ich dann die funktion in DialogA von Dialog3 aus</p>
<pre><code class="language-cpp">pDialogA-&gt;TestFunc();
</code></pre>
<p>(ich habe das der einfachheit halber mal mit nur 2 dialogen auf einem TabCtrl ohne splitter gemacht)</p>
<p>und die dialoge sind so erzeugt:</p>
<pre><code class="language-cpp">dlg = new CDialogA;
	ASSERT(dlg);
	m_DlgArray.Add(dlg);
	VERIFY(dlg-&gt;Create(IDD_DIALOGA, m_TabCtrl));
</code></pre>
<p>falls das eine rolle spielt???</p>
<p>der fehler:<br />
&quot;Nicht abgefangene Ausnahme in DP1.exe (MFC42D.DLL): 0xC0000005: Access Violation.&quot;</p>
<blockquote>
<p>Da Dein Layout ja statisch ist dürftest Du damit kein Problem haben.</p>
</blockquote>
<p>meinst du damit, dass die function &quot;static&quot; ist? dem ist nicht so...</p>
<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="😕"
    /> <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="😕"
    /> <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/1051024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051024</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Thu, 04 May 2006 17:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Sat, 06 May 2006 09:10:19 GMT]]></title><description><![CDATA[<p>thinux schrieb:</p>
<blockquote>
<pre><code class="language-cpp">CDialogA* pDialogA = ( CDialogA* ) GetDlgItem( IDD_DIALOGA );
</code></pre>
<p>und so will ich dann die funktion in DialogA von Dialog3 aus</p>
<pre><code class="language-cpp">pDialogA-&gt;TestFunc();
</code></pre>
</blockquote>
<p>Das dürfte daran scheitern, daß Dialog A kein Element von Dialog B ist (sondern ein anderes Element des übergeordneten TabControl)</p>
<blockquote>
<p>(ich habe das der einfachheit halber mal mit nur 2 dialogen auf einem TabCtrl ohne splitter gemacht)</p>
<p>und die dialoge sind so erzeugt:</p>
<pre><code class="language-cpp">dlg = new CDialogA;
	ASSERT(dlg);
	m_DlgArray.Add(dlg);
	VERIFY(dlg-&gt;Create(IDD_DIALOGA, m_TabCtrl));
</code></pre>
<p>falls das eine rolle spielt???</p>
</blockquote>
<p>Da hast du doch den Pointer auf deinen Dialog gespeichert, also mußt du ihn nur noch bei Bedarf aus m_DlgArray auslesen.</p>
<blockquote>
<blockquote>
<p>Da Dein Layout ja statisch ist dürftest Du damit kein Problem haben.</p>
</blockquote>
<p>meinst du damit, dass die function &quot;static&quot; ist? dem ist nicht so...</p>
</blockquote>
<p>Nein, damit meinte er, daß sich der Aufbau deiner Fensterstruktur nicht ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051349</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 06 May 2006 09:10:19 GMT</pubDate></item><item><title><![CDATA[Reply to mit ButtonClick Funktion eines anderen Dialogs ausführen on Sat, 06 May 2006 20:52:50 GMT]]></title><description><![CDATA[<p>aha ok.</p>
<p>ich denk jetzt hab ichs.<br />
vielen dank euch allen.</p>
<p>ps. ein stichwort, dass hie noch nicht erwähnt wurde ist &quot;extern&quot;.<br />
(also zb. &quot;extern CWndApp theApp;&quot; um dann über theApp-&gt;... auf den zugriff zu bekommen)</p>
<pre><code class="language-cpp">CDialog3 *dlg;
	dlg = (CDialog3 *) theApp.m_pMainWnd;
	dlg-&gt;TestFunc();
</code></pre>
<p>es macht keinen unterschied &quot;wo&quot; der Dialog in der Fensterstrucktur steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051758</guid><dc:creator><![CDATA[thinux]]></dc:creator><pubDate>Sat, 06 May 2006 20:52:50 GMT</pubDate></item></channel></rss>