Windows Anwendung mit main() statt WinMain()?



  • Hi zusammen 😃
    Ich habe gerade etwas mit einem leeren Projekt herumgespielt und habe ein Fenster erstellt in dessen Hintergrund eine Konsole läuft
    Allerdings gibt es in meinem Programm keine WinMain, wie normalerweise bei solchen Anwendungen üblich, sondern eine normale main-Funktion.
    Nun frage ich mich, wieso dies Funktioniert und welche Nachteile diese wahrscheinlich brachiale Vorgehen hat. Ich habe schon vorher versucht eine Konsole hinter einem Windows-Programm laufen zu lassen,
    allerdings musste man dies immer sehr umständlich mit einprogrammieren.
    Vielleicht ist es hilfreich anzumerken, dass ich zuvor immer,
    wenn ich ein Fenster programmieren wollte ein Win32-Projekt und wenn ich eine Konsole haben wollte eine Win32-Konsolenanwendung benutzt habe.

    Ich hoffe es ist in gewissem Maße verständlich, was ich zu fragen versuche
    und ich hoffe ihr könnt mir helfen.

    Gruß Honky



  • Es ist eigentlich egal.
    Du kannst in Win-Projekten eine Konsole aufmachen und in Konsolenprojekten Fenster. Die Konsole beim Konsolenprojekt weg zu kriegen ist nicht ganz so einfach.



  • Aber hat das nicht irgendeinen Nachteil für das Fenster?
    Ich hab zum beispiel gemerkt (wenn ich nicht programmiertechnisch etwas verkackt habe), dass sich mein Fenster nichtmehr so einfach neu zeichnet.
    Wenn ich es größer ziehe, dann bleibt der neue Teil der Client Area schwarz.
    Da muss ich mich noch ein bisschen dransetzen.



  • *snip*



  • irgendwie verstehe ich deine frage nicht. ist etwas verwirrend ausgedrückt...^^

    du kannst zur laufzeit ein fenster und/oder eine console erstellen, unabhängig vom projekttyp. der sinn der consolenanwendung liegt darin, dass du die console verwenden sollst. allerdings geht mit AllocConsole nur eine Console pro prozess laut msdn.



  • Honky schrieb:

    Wenn ich es größer ziehe, dann bleibt der neue Teil der Client Area schwarz.

    Das eine hat mit dem anderen nichts zu tun...



  • Tut mir leid, dass ich so viel Verwirrung gestiftet habe. 😃

    Und das Problem mit dem schwarzen Hintergrund war einzig und allein,
    dass ich statt CreateSolidBrush() in der WndClassEx GetStockObject() verwendet habe,
    was ich normalerweise nie tue und als ich das verändert habe funktionierte alles.

    Trotzdem danke für eure Hilfe


Anmelden zum Antworten