<?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[Newbie-Frage]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Es geht um folgendes: ich programmiere gerade an einem Addon fuer dem MS-Flight Simulator X. Um jetzt die Aircraft-Systeme umzusetzen benoetige ich einerseits die FS-internen Variablen und andererseits meine Eigenen. Bisher hatte ich das ueber globale Variablen geloest was ich aber nun vermeiden moechte. Nun habe ich mir eine Klasse geschrieben die alle Daten enthaelt, sowohl die FS-internen als auch meine. Meine Eigenen muss ich aber veraendern koennen. Folgendes habe ich versucht:</p>
<p>simdata.h:</p>
<pre><code class="language-cpp">class SimData
{
public:
 virtual bool	GenOneActive() = 0;
 virtual bool	GenOneDriveConnected(int x) = 0;
};
</code></pre>
<p>simdata_fsx.h</p>
<pre><code class="language-cpp">class SimData_FSX : public SimData
{
 MODULE_VAR gen_one_active_var; // MODULE_VAR ist eine FS-interne Variable

 public:
  bool	GenOneActive();
  bool	GenOneDriveConnected(int x);
};
</code></pre>
<p>simdata_fsx.cpp</p>
<pre><code class="language-cpp">SimData_FSX::SimData_FSX()
{
 gen_one_active_var.id = GENERAL_ENGINE1_GENERATOR_ACTIVE;
}
bool SimData_FSX::GenOneActive()
	{
	lookup_var(&amp;gen_one_active_var); // hier lese ich die interne FS-Variable aus
	return gen_one_active_var.var_value.n;
	}

bool SimData_FSX::GenOneDriveConnected(int x)
{
	return x; // x moechte ich von ausserhalb selbst veraendern
}
</code></pre>
<p>Innerhalb einer Gauge-Callback Funktion in moechte ich SimData_FSX::GenOneDriveConnected veraendern.</p>
<p>overhead.cpp</p>
<pre><code class="language-cpp">GAUGE_CALLBACK overhead_gauge_cb;

SimData_FSX DataOverhead;

void FSAPI	overhead_gauge_cb (PGAUGEHDR pgauge, int service_id, UINT32 extra_data)

{
	switch(service_id)
               case PANEL_SERVICE_PRE_UPDATE:
               {
					if(LgenDriveConnected == FALSE)
					{
						DataOverhead.GenOneDriveConnected(0);
					}
					else
					{
						DataOverhead.GenOneDriveConnected(1);
					}
				}
break;
}
</code></pre>
<p>Frage 1: funktioniert das so ueberhaupt?<br />
Frage 2: Ich moechte den return-Wert von bool SimData_FSX::GenOneDriveConnected(int x) an anderer Stelle verwenden. Bei den FS-internen Variablen geht das z.B. so:</p>
<pre><code class="language-cpp">case PANEL_SERVICE_PRE_DRAW:
			{
			if(!DataOverhead.MainBatteryOn())
				{
				SHOW_LISTELEMENT(pgauge-&gt;elements_list[0], 6);// Batt Off Sign
				}
			else
				{
				HIDE_LISTELEMENT(pgauge-&gt;elements_list[0], 6);// Batt Off Sign			
				}
			}
break;
</code></pre>
<p>Hoffe ihr habt verstanden was ich tun moechte und koennt mir weiterhelfen. Habe schon im Forum gesucht und einige C++ - Tutorials gelesen. Den richtigen Weg dafuer habe ich trotzdem noch nicht gefunden.</p>
<p>Viele Gruesse<br />
Sven</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175416/newbie-frage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 02:15:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175416.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Mar 2007 09:53:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Newbie-Frage on Sat, 10 Mar 2007 09:53:21 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Es geht um folgendes: ich programmiere gerade an einem Addon fuer dem MS-Flight Simulator X. Um jetzt die Aircraft-Systeme umzusetzen benoetige ich einerseits die FS-internen Variablen und andererseits meine Eigenen. Bisher hatte ich das ueber globale Variablen geloest was ich aber nun vermeiden moechte. Nun habe ich mir eine Klasse geschrieben die alle Daten enthaelt, sowohl die FS-internen als auch meine. Meine Eigenen muss ich aber veraendern koennen. Folgendes habe ich versucht:</p>
<p>simdata.h:</p>
<pre><code class="language-cpp">class SimData
{
public:
 virtual bool	GenOneActive() = 0;
 virtual bool	GenOneDriveConnected(int x) = 0;
};
</code></pre>
<p>simdata_fsx.h</p>
<pre><code class="language-cpp">class SimData_FSX : public SimData
{
 MODULE_VAR gen_one_active_var; // MODULE_VAR ist eine FS-interne Variable

 public:
  bool	GenOneActive();
  bool	GenOneDriveConnected(int x);
};
</code></pre>
<p>simdata_fsx.cpp</p>
<pre><code class="language-cpp">SimData_FSX::SimData_FSX()
{
 gen_one_active_var.id = GENERAL_ENGINE1_GENERATOR_ACTIVE;
}
bool SimData_FSX::GenOneActive()
	{
	lookup_var(&amp;gen_one_active_var); // hier lese ich die interne FS-Variable aus
	return gen_one_active_var.var_value.n;
	}

bool SimData_FSX::GenOneDriveConnected(int x)
{
	return x; // x moechte ich von ausserhalb selbst veraendern
}
</code></pre>
<p>Innerhalb einer Gauge-Callback Funktion in moechte ich SimData_FSX::GenOneDriveConnected veraendern.</p>
<p>overhead.cpp</p>
<pre><code class="language-cpp">GAUGE_CALLBACK overhead_gauge_cb;

SimData_FSX DataOverhead;

void FSAPI	overhead_gauge_cb (PGAUGEHDR pgauge, int service_id, UINT32 extra_data)

{
	switch(service_id)
               case PANEL_SERVICE_PRE_UPDATE:
               {
					if(LgenDriveConnected == FALSE)
					{
						DataOverhead.GenOneDriveConnected(0);
					}
					else
					{
						DataOverhead.GenOneDriveConnected(1);
					}
				}
break;
}
</code></pre>
<p>Frage 1: funktioniert das so ueberhaupt?<br />
Frage 2: Ich moechte den return-Wert von bool SimData_FSX::GenOneDriveConnected(int x) an anderer Stelle verwenden. Bei den FS-internen Variablen geht das z.B. so:</p>
<pre><code class="language-cpp">case PANEL_SERVICE_PRE_DRAW:
			{
			if(!DataOverhead.MainBatteryOn())
				{
				SHOW_LISTELEMENT(pgauge-&gt;elements_list[0], 6);// Batt Off Sign
				}
			else
				{
				HIDE_LISTELEMENT(pgauge-&gt;elements_list[0], 6);// Batt Off Sign			
				}
			}
break;
</code></pre>
<p>Hoffe ihr habt verstanden was ich tun moechte und koennt mir weiterhelfen. Habe schon im Forum gesucht und einige C++ - Tutorials gelesen. Den richtigen Weg dafuer habe ich trotzdem noch nicht gefunden.</p>
<p>Viele Gruesse<br />
Sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1242743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1242743</guid><dc:creator><![CDATA[schwudde]]></dc:creator><pubDate>Sat, 10 Mar 2007 09:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to Newbie-Frage on Sat, 10 Mar 2007 16:01:19 GMT]]></title><description><![CDATA[<p>Zu viel Sourcecode und keiner weiß eigentlich was du willst. Schon allein der Threadtitel ist nichtssagend, den Thread klickt niemand freiwillig an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1242936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1242936</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 10 Mar 2007 16:01:19 GMT</pubDate></item></channel></rss>