<?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[GAMELOOP in MFC]]></title><description><![CDATA[<p>Hi ihr Nachtprogger ;)..ich poste dies hier auch mal im MFC Forum, weil ich es vorher ins Spieleforum gepostet habe *lol</p>
<p>..habe schon ein ein paar Sachen mit DirectDraw7 geproggt,<br />
allerdings nur im Fullscreenmodus. Nun möchte ich einen Spiele-Editor<br />
schreiben, und habe mich entschieden auf MFC umzusteigen. Das kann ja nicht so schwer sein, DACHTE ich, da ich ja vorher auch supi mit DirectDraw7 klargekommen bin! Aber ich bekomme nichtmal nen einfaches Fenster hin,<br />
auf dem ein Bitmap geblittet wird. Habe schon etliche Tutorials durch, komme aber nicht weiter! Das eigentliche Problem ist nicht directdraw, sonder das erstellen eines Game-Loops in MFC. Habe DirectDraw successfully initialisiert,<br />
aber nun muss ich irgendwie ne Heartbeat Funktion haben.</p>
<p>Habe nach eingen Tutorials folgende Lösung:</p>
<p>Initialisierung - Das funktioniert einwandfrei</p>
<pre><code class="language-cpp">BOOL CEditorApp::InitInstance()
{
	AfxEnableControlContainer();

	// *** MEINE INTIALISIERUNG ***

	initDDraw(AfxGetMainWnd()-&gt;GetSafeHwnd());
}
</code></pre>
<p>Nun die Hearbeatfunktion. Habe von CWinApp die <strong>OnIdle</strong> funktion überladen und in dieser meine Heartbeatfunktion aufgerufen!</p>
<pre><code class="language-cpp">class CEditorApp : public CWinApp
{
public:
	CEditorApp();

// Überladungen
	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CEditorApp)
	public:
	virtual BOOL InitInstance();
	virtual BOOL OnIdle(LONG lCount);
	//}}AFX_VIRTUAL

// Implementierung

	//{{AFX_MSG(CEditorApp)
		// HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen-Assistenten eingefügt und entfernt.
		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
</code></pre>
<pre><code class="language-cpp">BOOL CEditorApp::OnIdle(LONG lCount)
{
         CWinApp::OnIdle(lCount);

	heartBeat();

	return TRUE;
}
</code></pre>
<p>Aber die <strong>OnIdle Funktion</strong> wird garnicht aufgerufen! Weiss jemand wie es richtig geht, oder hat jemand schon Erfahrung mit Spielen in MFC und kann mir eine Alternative/Beispiel posten ? Das wäre echt MASTA-HILFREICH!</p>
<p>Vielen Dank im voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/80413/gameloop-in-mfc</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:34:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/80413.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Jul 2004 23:03:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GAMELOOP in MFC on Tue, 20 Jul 2004 23:03:33 GMT]]></title><description><![CDATA[<p>Hi ihr Nachtprogger ;)..ich poste dies hier auch mal im MFC Forum, weil ich es vorher ins Spieleforum gepostet habe *lol</p>
<p>..habe schon ein ein paar Sachen mit DirectDraw7 geproggt,<br />
allerdings nur im Fullscreenmodus. Nun möchte ich einen Spiele-Editor<br />
schreiben, und habe mich entschieden auf MFC umzusteigen. Das kann ja nicht so schwer sein, DACHTE ich, da ich ja vorher auch supi mit DirectDraw7 klargekommen bin! Aber ich bekomme nichtmal nen einfaches Fenster hin,<br />
auf dem ein Bitmap geblittet wird. Habe schon etliche Tutorials durch, komme aber nicht weiter! Das eigentliche Problem ist nicht directdraw, sonder das erstellen eines Game-Loops in MFC. Habe DirectDraw successfully initialisiert,<br />
aber nun muss ich irgendwie ne Heartbeat Funktion haben.</p>
<p>Habe nach eingen Tutorials folgende Lösung:</p>
<p>Initialisierung - Das funktioniert einwandfrei</p>
<pre><code class="language-cpp">BOOL CEditorApp::InitInstance()
{
	AfxEnableControlContainer();

	// *** MEINE INTIALISIERUNG ***

	initDDraw(AfxGetMainWnd()-&gt;GetSafeHwnd());
}
</code></pre>
<p>Nun die Hearbeatfunktion. Habe von CWinApp die <strong>OnIdle</strong> funktion überladen und in dieser meine Heartbeatfunktion aufgerufen!</p>
<pre><code class="language-cpp">class CEditorApp : public CWinApp
{
public:
	CEditorApp();

// Überladungen
	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CEditorApp)
	public:
	virtual BOOL InitInstance();
	virtual BOOL OnIdle(LONG lCount);
	//}}AFX_VIRTUAL

// Implementierung

	//{{AFX_MSG(CEditorApp)
		// HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen-Assistenten eingefügt und entfernt.
		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
</code></pre>
<pre><code class="language-cpp">BOOL CEditorApp::OnIdle(LONG lCount)
{
         CWinApp::OnIdle(lCount);

	heartBeat();

	return TRUE;
}
</code></pre>
<p>Aber die <strong>OnIdle Funktion</strong> wird garnicht aufgerufen! Weiss jemand wie es richtig geht, oder hat jemand schon Erfahrung mit Spielen in MFC und kann mir eine Alternative/Beispiel posten ? Das wäre echt MASTA-HILFREICH!</p>
<p>Vielen Dank im voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/564820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/564820</guid><dc:creator><![CDATA[FinalbrainXP]]></dc:creator><pubDate>Tue, 20 Jul 2004 23:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Wed, 21 Jul 2004 05:37:33 GMT]]></title><description><![CDATA[<p>Was willst du genau. Wenn du es mit DX machen willst gehörst du ins Spieleforum.<br />
Wenn du ein Programm erstellst hast du ein Grundskelett dieses. Die MessageLoop ist da bereits drin. Solange du im HauptThread keine Berechnungen machst wird diese auch die Nachrichten bekommen. (GUI trennt man sowieso von Funktionalität)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/564849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/564849</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 21 Jul 2004 05:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Wed, 21 Jul 2004 16:32:55 GMT]]></title><description><![CDATA[<p>Was ich genau will ? Steht doch oben im Text! Ich suche einen Einstiegspunkt<br />
in dem MFC-Grundgerüst, wo ich zusätzlich zur repitierenden Messagebehandlung<br />
meine Heartbeatfunktion inkludieren kann! Wenn du mich schon belehren willst, dann bitte mit einem Beispiel, und nicht mit so was wie &quot;Ähhhm..das gehört aber nicht<br />
hierhin!&quot;! Habe es ja ZUSÄTZLICH auch nochmal im Spieleforum, falls du es gelesen hättest! Dachte hier wäre das MFC-Forum...und das ist doch EINDEUTIG eine<br />
MFC-pezifische Frage! <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>
<p>MFG</p>
<p>Finalbrain</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565336</guid><dc:creator><![CDATA[FinalbrainXP]]></dc:creator><pubDate>Wed, 21 Jul 2004 16:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Wed, 21 Jul 2004 17:28:53 GMT]]></title><description><![CDATA[<p>Meinst du evtl. einen Timer ?</p>
<p>Devil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565377</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Wed, 21 Jul 2004 17:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Wed, 21 Jul 2004 21:48:31 GMT]]></title><description><![CDATA[<p>Ich kenne mich mit deinen Ausdrücken nicht aus. Scheinbar im MFC niemand.<br />
Was ist eine Heartbeatfunktion?</p>
<p>Weiters habe ich dir gesagt was zu tun ist. Welchen Code sollte ich also posten.<br />
Die MFC stellt ein Grundgerüst einer Windowsanwendung (SDI,MDI,Dialog) zur verfügung. Diese beinhalten eine MessageLoop.<br />
Wenn du darin etwas Zeichen willst dann in z.B. OnPaint.<br />
Wenn du komplexere Sachen machen willst brauchst du dann eine Thread den du z.B. in OnInitInstanz starten kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565538</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 21 Jul 2004 21:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Thu, 22 Jul 2004 12:53:30 GMT]]></title><description><![CDATA[<p>danke für deine Antwort...weil genau diesen MessageLoop(Heartbeatfunktion)<br />
suche ich..weil ich da keinen gefunden habe wie in normaler Win-API. Werde das mal mit der OnPaint-Methode versuchen. Ansonsten meinst du einen Thread starten.....kannst du mir ein Beispiel geben, wie man einen Thread startet, weil cih neu in der Windows programmierung bin und sonst nur threads unter unix gemacht habe..(Fork() etc...)</p>
<p>Gruss</p>
<p>Finalbrain <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/566046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/566046</guid><dc:creator><![CDATA[FinalbrainXP]]></dc:creator><pubDate>Thu, 22 Jul 2004 12:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Thu, 22 Jul 2004 13:39:21 GMT]]></title><description><![CDATA[<p>Die MessageLoop ist in der MFC-BIB drin. Da musst du schon die MFC-Klasse durchgehen.<br />
Selbst kann man das mit<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39085" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=39085</a></p>
<p>Zu Threads findest du auch was in der FAQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/566111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/566111</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Thu, 22 Jul 2004 13:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to GAMELOOP in MFC on Thu, 22 Jul 2004 23:45:22 GMT]]></title><description><![CDATA[<p>Vielen Dank, werde es ausprobieren! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Greetz from Finalbrain <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/566474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/566474</guid><dc:creator><![CDATA[FinalbrainXP]]></dc:creator><pubDate>Thu, 22 Jul 2004 23:45:22 GMT</pubDate></item></channel></rss>