<?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[Wo startet eine MFC-Anwendung?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein einfaches Fenster mit Hilfe der MFC erstellt. Es funktioniert alles, ich frage mich nur warum...</p>
<p>Hier erstmal der Code:</p>
<p>*************** Main.h ***************</p>
<p>#include &lt;afxwin.h&gt;</p>
<p>class Main : CWinApp{</p>
<p>public:<br />
virtual BOOL InitInstance();</p>
<p>private:<br />
RECT rect;</p>
<p>};</p>
<p>**************************************</p>
<p>************** Main.cpp **************</p>
<p>#include &quot;Main.h&quot;</p>
<p>Main myApplication;</p>
<p>BOOL Main::InitInstance(){</p>
<p>CFrameWnd* mainWnd = new CFrameWnd();</p>
<p>rect.left=100;<br />
rect.top=100;<br />
rect.right=200;<br />
rect.bottom=200;<br />
mainWnd-&gt;Create(NULL, &quot;Title&quot;);<br />
mainWnd-&gt;ShowWindow(this-&gt;m_nCmdShow);<br />
mainWnd-&gt;UpdateWindow();</p>
<p>this-&gt;m_pMainWnd = mainWnd;</p>
<p>return TRUE;</p>
<p>}</p>
<p>**************************************</p>
<p>Wie ist der Ablauf hier zu erklären? Bei einem WinAPI- oder Konsolen-Programm gibt es immer irgend eine Main-Methode (bzw. WinMain), aber wo genau fängt dieses Programm an?</p>
<p>Ich würde sagen es wird als erstes die Zeile ausgeführt, bei der ein Objekt vom Typ &quot;Main&quot; angelegt wird, ist das richtig?</p>
<p>Andere Frage: Was bedeutet es überhaupt, wenn ein Objekt mitten &quot;im leeren Raum&quot; erstellt wird (also außerhalb einer Funktion oder Klasse)? Ist das dann einfach ein globales Objekt?</p>
<p>Andere Frage: Wer ruft die Methode &quot;InitInstance&quot; auf? Der Konstruktor von CWinApp kann es nicht sein, denn wenn ich ihn überlagere funktioniert es trotzdem noch.</p>
<p>Kann mir das bitte jemand im Detail erklären?</p>
<p>Danke erst mal!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/50742/wo-startet-eine-mfc-anwendung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 08:15:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/50742.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Oct 2003 17:29:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wo startet eine MFC-Anwendung? on Thu, 02 Oct 2003 17:29:47 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein einfaches Fenster mit Hilfe der MFC erstellt. Es funktioniert alles, ich frage mich nur warum...</p>
<p>Hier erstmal der Code:</p>
<p>*************** Main.h ***************</p>
<p>#include &lt;afxwin.h&gt;</p>
<p>class Main : CWinApp{</p>
<p>public:<br />
virtual BOOL InitInstance();</p>
<p>private:<br />
RECT rect;</p>
<p>};</p>
<p>**************************************</p>
<p>************** Main.cpp **************</p>
<p>#include &quot;Main.h&quot;</p>
<p>Main myApplication;</p>
<p>BOOL Main::InitInstance(){</p>
<p>CFrameWnd* mainWnd = new CFrameWnd();</p>
<p>rect.left=100;<br />
rect.top=100;<br />
rect.right=200;<br />
rect.bottom=200;<br />
mainWnd-&gt;Create(NULL, &quot;Title&quot;);<br />
mainWnd-&gt;ShowWindow(this-&gt;m_nCmdShow);<br />
mainWnd-&gt;UpdateWindow();</p>
<p>this-&gt;m_pMainWnd = mainWnd;</p>
<p>return TRUE;</p>
<p>}</p>
<p>**************************************</p>
<p>Wie ist der Ablauf hier zu erklären? Bei einem WinAPI- oder Konsolen-Programm gibt es immer irgend eine Main-Methode (bzw. WinMain), aber wo genau fängt dieses Programm an?</p>
<p>Ich würde sagen es wird als erstes die Zeile ausgeführt, bei der ein Objekt vom Typ &quot;Main&quot; angelegt wird, ist das richtig?</p>
<p>Andere Frage: Was bedeutet es überhaupt, wenn ein Objekt mitten &quot;im leeren Raum&quot; erstellt wird (also außerhalb einer Funktion oder Klasse)? Ist das dann einfach ein globales Objekt?</p>
<p>Andere Frage: Wer ruft die Methode &quot;InitInstance&quot; auf? Der Konstruktor von CWinApp kann es nicht sein, denn wenn ich ihn überlagere funktioniert es trotzdem noch.</p>
<p>Kann mir das bitte jemand im Detail erklären?</p>
<p>Danke erst mal!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/365163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/365163</guid><dc:creator><![CDATA[Java -&gt; C++ - Umsteiger]]></dc:creator><pubDate>Thu, 02 Oct 2003 17:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wo startet eine MFC-Anwendung? on Thu, 02 Oct 2003 17:37:52 GMT]]></title><description><![CDATA[<p>Wie jede Windows-Anwendung starten auch MFC programme in der WinMain.<br />
Die ist nur für den Benutzer nicht sichtbar. (MFC ist ein OO Wrapper für die WinAPI)</p>
<p>Zu 2:<br />
Das ist ne Globale Instanz der Applikationsklasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/365168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/365168</guid><dc:creator><![CDATA[Jover]]></dc:creator><pubDate>Thu, 02 Oct 2003 17:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wo startet eine MFC-Anwendung? on Thu, 02 Oct 2003 18:06:52 GMT]]></title><description><![CDATA[<p>Zum Einstieg:<br />
<a href="http://www.henkessoft.de/mfc_einsteigerbuch_kapitel5.htm" rel="nofollow">http://www.henkessoft.de/mfc_einsteigerbuch_kapitel5.htm</a></p>
<p>Der Sourcecode der MFC liegt offen. Bei MS VC++ 6 findet man die Dateien bei Installation nach Laufwerk C: z.B. in folgendem Verzeichnis:<br />
C:\Programme\Microsoft Visual Studio\VC98\MFC\SRC\...</p>
<p>Die meiste Zeit befindet sich das Programm in der &quot;Nachrichtenschleife&quot;:<br />
Die MFC-Funktion (siehe thrdcore.cpp) befreien wir zunächst von allen nur im Debug-Modus durchgeführten Schritten, und wir erhalten den folgenden kompakten Sourcecode:</p>
<pre><code class="language-cpp">BOOL CWinThread::PumpMessage() 
{ 
    if (!::GetMessage(&amp;m_msgCur, NULL, NULL, NULL)) return FALSE; 

    if (m_msgCur.message != WM_KICKIDLE &amp;&amp; !PreTranslateMessage(&amp;m_msgCur)) 
    { 
        ::TranslateMessage(&amp;m_msgCur); 
        ::DispatchMessage(&amp;m_msgCur); 
    } 
    return TRUE; 
}
</code></pre>
<p>In dieser Funktion befinden sich typische MFC-Programme die meiste Zeit. Das ist die WinAPI-Nachrichtenpumpe: Nachrichten erfassen, übersetzen und verteilen.</p>
<p>Zum Vergleich die typische Original-WinAPI-Variante:</p>
<pre><code class="language-cpp">// WinAPI-Nachrichtenpumpe 
MSG msg;  
while( GetMessage( &amp;msg, NULL, 0, 0) )  
{  
    TranslateMessage( &amp;msg );  
    DispatchMessage( &amp;msg );  
}  
return msg.wParam;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/365176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/365176</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Thu, 02 Oct 2003 18:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wo startet eine MFC-Anwendung? on Thu, 02 Oct 2003 18:22:04 GMT]]></title><description><![CDATA[<p>WO eine MFC-Windowsanwendung startet:</p>
<p>Natürlich auf einem Rechner mit Windows <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/365189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/365189</guid><dc:creator><![CDATA[~scherzkeksi~]]></dc:creator><pubDate>Thu, 02 Oct 2003 18:22:04 GMT</pubDate></item></channel></rss>