<?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[Funktion aus externer Klasse in CDialog aufrufen]]></title><description><![CDATA[<p>Tach zusammen..</p>
<p>Ich hab eine Dialogklasse die bestimmte Filme abspielen soll. Welche Filme der Dialog abspielen soll, wird ihm über TCP/IP mitgeteilt.<br />
Dazu wird ein Protokoll ausgewertet, die Kommandos extrahiert und an eine Klasse &quot;CActionControl&quot; geschickt die dann die Kommandos auswertet und an den Dialog &quot;CVisualDlg&quot; weiterleitet.<br />
Wenn ich jetzt versuche in der Klasse CActionControl ein Object von CVisualDlg anzulegen, springt er sofort in den Konstruktor von CVisualDlg<br />
Objekt bilden in CActionControl:</p>
<pre><code>Konstruktor CVisualDlg:
[code]
#include &quot;VisualDlg.h&quot;

void CActionControl::givingCommand(int c_id,int LF,int OL,char VF[128])
{

 	CVisualDlg m_visual;

	m_visual.DoCommand(c_id);
}
</code></pre>
<p>In DoCommand werden diverse Timer aufgerufen die verschiedene Videos starten.<br />
Konstruktor der Klasse CVisualDlg:</p>
<pre><code>CVisualDlg::CVisualDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVisualDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVisualDlg)
	// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt

	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);

}
</code></pre>
<p>Dort wird irgendwie ein neuer Wert(0x00000000) für CWnd gebildet {CVisualDlg hWnd = ???}. Das Problem ist jetzt das der Eventloop für meinen Timer nicht mehr funktioniert. Jedes mal wenn ein Timer gestartet oder zerstört wird kommt eine Fehlermeldung: Debug Assertion Failed<br />
File:afxwin2.inl Line:171<br />
Ich glaube mal das er die Timer events nicht mehr an das richtige Window schickt oder nicht mehr auf die Klasse CVisualDlg zugreifen kann.<br />
Kann mir jemand sagen woran das liegt oder gibt es noch eine andere Möglichkeit<br />
im Dialog Funktionen aufzurufen.<br />
Danke schon mal im voraus!</p>
<p>Beste Grüsse</p>
<p>gyros</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190258/funktion-aus-externer-klasse-in-cdialog-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 16:56:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190258.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Aug 2007 09:09:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Tue, 21 Aug 2007 09:09:01 GMT]]></title><description><![CDATA[<p>Tach zusammen..</p>
<p>Ich hab eine Dialogklasse die bestimmte Filme abspielen soll. Welche Filme der Dialog abspielen soll, wird ihm über TCP/IP mitgeteilt.<br />
Dazu wird ein Protokoll ausgewertet, die Kommandos extrahiert und an eine Klasse &quot;CActionControl&quot; geschickt die dann die Kommandos auswertet und an den Dialog &quot;CVisualDlg&quot; weiterleitet.<br />
Wenn ich jetzt versuche in der Klasse CActionControl ein Object von CVisualDlg anzulegen, springt er sofort in den Konstruktor von CVisualDlg<br />
Objekt bilden in CActionControl:</p>
<pre><code>Konstruktor CVisualDlg:
[code]
#include &quot;VisualDlg.h&quot;

void CActionControl::givingCommand(int c_id,int LF,int OL,char VF[128])
{

 	CVisualDlg m_visual;

	m_visual.DoCommand(c_id);
}
</code></pre>
<p>In DoCommand werden diverse Timer aufgerufen die verschiedene Videos starten.<br />
Konstruktor der Klasse CVisualDlg:</p>
<pre><code>CVisualDlg::CVisualDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVisualDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVisualDlg)
	// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt

	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);

}
</code></pre>
<p>Dort wird irgendwie ein neuer Wert(0x00000000) für CWnd gebildet {CVisualDlg hWnd = ???}. Das Problem ist jetzt das der Eventloop für meinen Timer nicht mehr funktioniert. Jedes mal wenn ein Timer gestartet oder zerstört wird kommt eine Fehlermeldung: Debug Assertion Failed<br />
File:afxwin2.inl Line:171<br />
Ich glaube mal das er die Timer events nicht mehr an das richtige Window schickt oder nicht mehr auf die Klasse CVisualDlg zugreifen kann.<br />
Kann mir jemand sagen woran das liegt oder gibt es noch eine andere Möglichkeit<br />
im Dialog Funktionen aufzurufen.<br />
Danke schon mal im voraus!</p>
<p>Beste Grüsse</p>
<p>gyros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348778</guid><dc:creator><![CDATA[gyrosundmaronen]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Tue, 21 Aug 2007 10:09:34 GMT]]></title><description><![CDATA[<p>Warum packst Du die Initialisierungen, die in DoCommand() stattfinden nicht in CVisualDlg::OnInitDialog()? Wenn Du DoCommand() vor DoModal() oder Create() aufrufst, ist doch noch gar kein Dialogfenster erzeugt worden (deswegen der Nullpointer!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348850</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Tue, 21 Aug 2007 10:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Tue, 21 Aug 2007 11:46:44 GMT]]></title><description><![CDATA[<p>Moin jencas</p>
<p>Der Dialog wurde schon erzeugt. Ich möchte jetzt über die Funktion DoCommand einen neuen Film starten. Diese Filme werden über ein ActiveX-Steuerelement gestartet.<br />
Also ich möchte den Dialog nicht noch einmal starten.<br />
Die Funktionialität ist die gleiche, als wenn ich ein Label über eine Externe Klasse mit Text füllen möchte. Der Dialog existiert schon ich möchte nur auf das Steuerelement zugreifen uf denen meine Filme gestartet werden sollen. Und diese Filme werden über einen Timer gestartet.</p>
<p>Beste Grüsse</p>
<p>gyros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348862</guid><dc:creator><![CDATA[gyrosundmaronen]]></dc:creator><pubDate>Tue, 21 Aug 2007 11:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Tue, 21 Aug 2007 13:18:07 GMT]]></title><description><![CDATA[<p>Du hast aber DoModal nicht aufgerufen! Also gibt es keine Instanz des Dialoges.</p>
<p>Der Einwurf von Jencas stmmt voll und ganz.</p>
<p>Zudem ist es sehr irritierend einen Dialog mit einem m_ Namen auf dem Stack anzulegen. Normalerweise wird m_ nur für Member Variablen verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349028</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 21 Aug 2007 13:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Tue, 21 Aug 2007 14:50:47 GMT]]></title><description><![CDATA[<p>Erstmal Danke für die Hilfe.<br />
Sorry.. Ich weiss nicht ob ich euch richtig verstehe. Aber wenn ich DoModal vom Objekt _visual aufrufe, dann wird er doch nochmal angezeigt(Oder?,berichtigt mich wenn ich falsch liege) was ich aber nicht möchte. Der Dialog wurde schon erzeugt und angezeigt. Ich möchte einfach nur auf ein Steuerelement zugreifen.</p>
<p>Beste Grüsse</p>
<p>gyros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349057</guid><dc:creator><![CDATA[gyrosundmaronen]]></dc:creator><pubDate>Tue, 21 Aug 2007 14:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Wed, 22 Aug 2007 08:15:16 GMT]]></title><description><![CDATA[<p>Würde Dir</p>
<pre><code class="language-cpp">CActionControl* CVisualDlg::GetActionControl()
</code></pre>
<p>weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349562</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 22 Aug 2007 08:15:16 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion aus externer Klasse in CDialog aufrufen on Wed, 22 Aug 2007 08:23:50 GMT]]></title><description><![CDATA[<p>Moin jencas</p>
<p>Habs inzwischen gelöst. Ich hab einfach bei jeder Initialisierung der Sockets den Pointer auf mein Dialog mitgegeben.</p>
<pre><code>DialogKlasse:
m_comSocket = new CCommandSocket(this);

ListenSocket:
CCommandSocket::CCommandSocket(CVisualDlg *pdlg)
{
	_pdlg = pdlg;
}

pRequest = new CRequestSocket(_pdlg);

RequestSocket:
CRequestSocket::CRequestSocket(CVisualDlg *pdlg)
{

	_pdlg = pdlg;
}
CActionControl action(_pdlg);

ActionControl:
CActionControl::CActionControl(CVisualDlg *pdlg)
{
	_pdlg = pdlg;
}
</code></pre>
<p>und dann</p>
<pre><code>_pdlg-&gt;DoCommand();
</code></pre>
<p>aufgerufen.<br />
Und bumms es funktioniert. Jetzt hab ich aber noch ein anderes Probelem. Dazu hab ich aber einen neuen Thread eröffnet.<br />
Danke für die Hilfe...</p>
<p>Beste Grüsse</p>
<p>gyros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349572</guid><dc:creator><![CDATA[gyrosundmaronen]]></dc:creator><pubDate>Wed, 22 Aug 2007 08:23:50 GMT</pubDate></item></channel></rss>