<?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[WinMain Funktion im Programm aufrufen]]></title><description><![CDATA[<p>HI,<br />
Ich fange gerade an ein bissel mit der WinAPI zu proggen und stoße schon auf meine ersten Probleme <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 />
Also,<br />
Die &quot;WinMain&quot; -Funktion ist ja meine Hauptfunktion in Sachen WinAPI. Aber wie kann ich die WinMain im späteren Programmablauf aufrufen, sodass ich erst eine Konsole habe, also ich mit der &quot;main&quot; Funktion aus Dos-Zeiten arbeite? (Wenn mir das Fenster mal abschmiert kann ich dann von der Konsole aus besser debuggen)</p>
<p>Frage2:<br />
Was sind die nötigsten Funktionen/Angaben die ich für ein normales Windows Fenster brauche? Also auf <a href="http://win-api.de" rel="nofollow">win-api.de</a> steht ja recht gut erklärt wie man ein Fenster erstellt, sind das jedoch auch die nötigsten Funktionen oder sind da auch optionale bei? Also ich will die Erstellung meines Fensters erstmal auf das Nötigste reduzieren und dann langsam alles hinzufügen.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189783/winmain-funktion-im-programm-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 17:51:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189783.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2007 19:12:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Thu, 16 Aug 2007 19:12:53 GMT]]></title><description><![CDATA[<p>HI,<br />
Ich fange gerade an ein bissel mit der WinAPI zu proggen und stoße schon auf meine ersten Probleme <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 />
Also,<br />
Die &quot;WinMain&quot; -Funktion ist ja meine Hauptfunktion in Sachen WinAPI. Aber wie kann ich die WinMain im späteren Programmablauf aufrufen, sodass ich erst eine Konsole habe, also ich mit der &quot;main&quot; Funktion aus Dos-Zeiten arbeite? (Wenn mir das Fenster mal abschmiert kann ich dann von der Konsole aus besser debuggen)</p>
<p>Frage2:<br />
Was sind die nötigsten Funktionen/Angaben die ich für ein normales Windows Fenster brauche? Also auf <a href="http://win-api.de" rel="nofollow">win-api.de</a> steht ja recht gut erklärt wie man ein Fenster erstellt, sind das jedoch auch die nötigsten Funktionen oder sind da auch optionale bei? Also ich will die Erstellung meines Fensters erstmal auf das Nötigste reduzieren und dann langsam alles hinzufügen.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345971</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 19:12:53 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Thu, 16 Aug 2007 20:43:08 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>Also,<br />
Die &quot;WinMain&quot; -Funktion ist ja meine Hauptfunktion in Sachen WinAPI. Aber wie kann ich die WinMain im späteren Programmablauf aufrufen, sodass ich erst eine Konsole habe, also ich mit der &quot;main&quot; Funktion aus Dos-Zeiten arbeite? (Wenn mir das Fenster mal abschmiert kann ich dann von der Konsole aus besser debuggen)</p>
</blockquote>
<p>Du hast da wohl eine etwas falsche Vorstellung. Beim Linken deines Programms wird die Entscheidung zwischen Win32-Fensteranwendung oder Konsolenprogramm getroffen und diese Informationen stehen dann in der .exe. Zu diesem Zeitpunkt muss dann je nachdem eine main() oder ein WinMain Funktion vorhanden sein, damit der Linker weiß, wo das Programm beginnt.</p>
<p>Wenn die exe gestartet wird und es ist eine Konsolenanwendung, dann weiß Windows, dass es erst eine Konsole aufmachen muss und dann darf dein Programm loslegen (beginnend mit der main).<br />
Eine WinMain Funktion gibt es in diesem Fall nicht, zumindest ist sie nicht besonders ausgezeichnet.</p>
<p>Du kannst aber trotzdem die Funktionalität von beiden gleichzeitig haben, z.B. in dem du ein Win32 Fensterprogramm erstellst und dann mit AllocConsole deine &quot;Dos-Konsole&quot; aufmachen.</p>
<p>Pille456 schrieb:</p>
<blockquote>
<p>Was sind die nötigsten Funktionen/Angaben die ich für ein normales Windows Fenster brauche? Also auf <a href="http://win-api.de" rel="nofollow">win-api.de</a> steht ja recht gut erklärt wie man ein Fenster erstellt, sind das jedoch auch die nötigsten Funktionen oder sind da auch optionale bei? Also ich will die Erstellung meines Fensters erstmal auf das Nötigste reduzieren und dann langsam alles hinzufügen.</p>
</blockquote>
<p>Es ist eine ganzer Schwung nötig, um ein funktionierendes Fenster zu erzeugen. Das macht die Sache am Anfang etwas undurchsichtig. Da hilft nur, Zeile für Zeile durchbeißen, versuchen das nachzuvollziehen und testweise modifizieren.<br />
Die MSDN hilft als ausführliche Erklärung der einzelnen Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345999</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 16 Aug 2007 20:43:08 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Fri, 17 Aug 2007 03:25:53 GMT]]></title><description><![CDATA[<p>Wenns dir nur um's Debuggen geht: das geht auch so recht schön, den Debug Output kann man im Debugger mitlesen auch wenn das Programm keine Konsole hat. Statt printf/cout/cerr/clog verwendest du zum Ausgeben einfach OutputDebugString bzw. TRACE (wenn du mit MFC arbeitest).</p>
<p>Und... Fenster erzeugen tut man mit CreateWindow <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="😉"
    /><br />
Vorher musst du aber noch eine Fensterklasse registrieren (RegisterClass), und für diese solltest du eine WindowProc schreiben, damit du auf Nachrichten reagieren kannst (sonst hast du ein Fenster was man zwar schön verschieben kann und zumachen und alles, bloss sonst kann man nix damit machen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346038</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 17 Aug 2007 03:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Fri, 17 Aug 2007 14:18:54 GMT]]></title><description><![CDATA[<p>Also schaut das Betriebssystem beim starten des Programmes ob eine main bzw. (bei Windows) WinMain Funktion vorliegt und startet dann diese?</p>
<p>Das ein ganzer Satz an Funktionen nötig ist, ist mir klar, leider ist das (zumindest auf <a href="http://win-api.de" rel="nofollow">win-api.de</a>) recht undurchsichtig erklärt, was für mich dann wieder viel probieren/&quot;googlen&quot; heißt</p>
<p>So nun nochmal meine Frage (bissel anders Formuliert :D):<br />
Wenn Windows eine main-Funktion vorfinden, dann öffnet Windows die Dos-Konsolenebene und ruft dann die main-Funktion auf.<br />
Was macht Windows wenn es eine WinMain-Funktion vorfindet?<br />
Bzw. wofür ist dann genau die WinMain-Funktion gedacht?<br />
Kann ich ein (normales)Fenster auch aus der Konsole heraus erstellen und anzeigen lassen (mit z.B. OpenGL geht das)?</p>
<p>Wie ihr merkt ist mir noch einiges unklar bzw. mir mangelt es an Informationen.<br />
Hat jemand (abgesehen von MSDN und <a href="http://win-api.de" rel="nofollow">win-api.de</a>) noch irgendwelche guten Seiten im Internet, die das Thema behandeln?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346423</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Fri, 17 Aug 2007 14:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Fri, 17 Aug 2007 15:03:13 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn Windows eine main-Funktion vorfinden, dann öffnet Windows die Dos-Konsolenebene und ruft dann die main-Funktion auf.</p>
</blockquote>
<p>Jein. Der Compiler hinterläßt in der Exe-Datei noch einige Zusatzinfos, aus denen Windows (oder DOS) dann schließen kann, welches System gefordert ist. Daher muß man in der Regel in der IDE einstellen, ob man ein Consolen- oder ein GUI-Programm erstellen will.</p>
<blockquote>
<p>Was macht Windows wenn es eine WinMain-Funktion vorfindet?<br />
Bzw. wofür ist dann genau die WinMain-Funktion gedacht?</p>
</blockquote>
<p>Ein Programm unter Windows muß die WinMain-Funktion enthalten, weil damit zusätzliche Parameter übergeben werden (hInstance, hPrevInstance, CmdLine, CmdShow). Bei einer einfachen &quot;main&quot; sind Parameter nicht zwangläufig notwendig.</p>
<blockquote>
<p>Kann ich ein (normales)Fenster auch aus der Konsole heraus erstellen und anzeigen lassen (mit z.B. OpenGL geht das)?</p>
</blockquote>
<p>Kommt auf das Programm an. OpenGL ist plattformübergreifend. WinAPI ist Windows-spezifisch. Da würde das nicht funzen (vermute ich. Habs noch hicht probiert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346452</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Fri, 17 Aug 2007 15:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Fri, 17 Aug 2007 16:09:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Kann ich ein (normales)Fenster auch aus der Konsole heraus erstellen und anzeigen lassen (mit z.B. OpenGL geht das)?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Kommt auf das Programm an. OpenGL ist plattformübergreifend. WinAPI ist Windows-spezifisch. Da würde das nicht funzen (vermute ich. Habs noch hicht probiert)</p>
</blockquote>
<p>Nein. OpenGL bietet gar keine Funktionen, um ein Fenster zu öffnen. Von solch OS spezifischen Sachen weiß es nix, gerade deshalb darf es ja das Prädikat 'portabel' tragen. Bei beiden Varianten (WinMain und main) bist du für das Erstellen und Öffnen des Fensters verantwortlich.</p>
<p>EDIT:<br />
Hier steht's auch noch mal sehr schön:<br />
<a href="http://www.sunlightd.com/Archive/Windows/FAQ.aspx#ConsoleIntro" rel="nofollow">http://www.sunlightd.com/Archive/Windows/FAQ.aspx#ConsoleIntro</a></p>
<blockquote>
<p>By setting a flag in the executable file, Win32 will create a console at startup for the application. This is the only difference, from Win32's point of view, between console and GUI applications.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1346466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346466</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 17 Aug 2007 16:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to WinMain Funktion im Programm aufrufen on Fri, 17 Aug 2007 22:16:45 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>By setting a flag in the executable file, Win32 will create a console at startup for the application. This is the only difference, from Win32's point of view, between console and GUI applications.</p>
</blockquote>
</blockquote>
<p>Naja, das, und dass Konsolenprogramme in z.B. Batchfiles synchron laufen, Windowsprogramme dagegen asynchron.<br />
Andrerseits könnte man sagen cmd.exe (welches ja Batchfiles abarbeitet) ist nicht wirklich Teil von &quot;Win32&quot; - was auch immer &quot;Win32&quot; sein soll <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/1346687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346687</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 17 Aug 2007 22:16:45 GMT</pubDate></item></channel></rss>