Grund-wissen/anforderungen für WinAPI



  • Hi

    Muss ehrlich gesagt schon mal sagen von WinAPI habe ich keinerlei Ahnung 😕 , das Einzige was ich bis jetzt gesehen habe sind einige Quellcodes wie zum Beispiel für ne simple MessageBox ➡ 😮
    Bei den meisten Tut's die ich mal so kurz überflogen habe ist immer die Rede von einem recht grossen Grundwissen, besonders über die Win-abläufe allgemein oder irgendwas mit Bibliotheken, etc.
    Wie, Wo und Was muss ich nun genau wissen um überhaupt erst an WinAPI denken zu dürfen?
    Ich wäre sonst auch noch froh für möglichst viele Link's usw.
    Auch zu Windows, denn da komme ich einfach so mit denn häufig gebrauchten Einstellungen zurecht, aber jetzt mal so Sachen wie BIOS oder Schnittstellen...
    Wie lange und wie viele Zeilen bräuchte es ca. um ein Programm zu schreiben bei dem man mittels eines Editors und Spezialwerkzeugen 3D Formen erstellen kann und dann deren Oberfäche, Volumen, Kantenlängen, etc. berechnen könnte?
    Sagen wir mal eckige, runde Formen nicht.
    Einfach mal so das ich mir in ungefähr etwa einstufen kann was das für eine Arbeit gibt.
    Dauert so etwas für Solo ein Jahr oder viele Jahre, so in diesem Sinne, oder auch so ungefähr die Zeilen, braucht es dazu ein paar 100'000 oder ein paar Millionen...
    Ihr wisst was ich meine 😉

    MfG Sämi



  • Du solltest mal n halbes Jahr mit Windows gearbeitet haben, n bisschen am System rumspielen und Lust zum Ausprobieren haben. Dann is das alles kein Problem 😉

    Greetz 😃



  • Für dein Programm wäre vielleicht die MFC ein gutes Hilfsmittel.
    Und nein, WinAPI-Wissen und MFC schließen sich nicht aus, im Gegenteil.

    Eigentlich kann ich das nicht schätzen, würde aber sagen, wenn du dir jetzt einen Überblick über die MFC machst, du in etwa 2 Monaten einen Selbsteinschätzung machen kannst, wie lange dein Projekt etwa dauern wird.
    Da du ja ernsthaft interessiert zu seien scheinst, halte ich 1 - 1.5 Jahre für einen realistischen Zeitraum bis zur Alpha, das nötige Mathewissen abrufbereit vorausgesetzt.

    Hängt auch davon ab, ob du noch OpenGL oder DirectX miteinbeziehen willst.

    Tipp: Mach einen Vorgänger für 2D Formen, dann fang das Projekt neu an und vermeide dort die Fehler, die du zwangsläufig gemacht haben wirst.



  • Hi.

    Das Problem ist hald einfach das ich niemals das nötige Geld habe für Microsoft Visual C++ .NET.
    Deswegen muss ich mich hald mit Dev-C++ abgeben und bin somit auch gezwungen hald alles mit der WinAPI zu machen.
    Ausserdem ist die WinAPI nur ein zwischen Ziel da ich dann später auch gerne mal Spiele proggen würde.
    Aber wenn ich die WinAPI nicht verstehe kann ich die Spieleprogrammierung erstrecht vergessen.
    Ausserdem noch, wie gut muss man dazu eigentlich in Mathe sein?
    Ich selbest werde jedenfalls nie an der Uni Mathe studieren können da ich hierzu zu doof bin.
    Wenn es jedoch mehr braucht als mann an der Volksschule lernen kann...
    Na ja 🙄
    Jedoch wäre ich trotzdem noch froh für Link's in einen tieferen Einblick in Windows und die Schnittstellen davon.
    Ach ja, wie schwierig ist die WinAPI eigentlich dann noch wenn man die WinDOS Programmierung einigermassen kann?

    MfG Sämi



  • Also du weißt, dass du Visual C++ in der Express Version legal herunterladen kannst?
    Da ist dann aber kein MFC bei.

    Für Schüler/Azubis/Studis gibt es das komplette Visual Studio für ~130€.
    Da ist MFC bei.
    Und CDs mit der MSDN drauf.
    Die MSDN solltest du kennen, das ist die Doku die du suchst,
    sie gibt es auch online.
    Auch für Nicht-Schüler gibt es eine reine VC++ Version mit MFC zu kaufen für etwa das gleiche Geld.

    Aber sonst reicht natürlich auch der Dev-C.
    Du kannst natürlich alles ausschließlich mit der WinAPI machen,
    aber gerade bei großen GUIs wird es doch etwas umständlich.
    Wie wäre es wxWidgets? Und ergänzend dazu dann das WinAPI Wissen für Sachen,
    die wxW nicht bereitstellt.

    Zu der Mathefrage, letztendlich ist es doch so, dass du dem Rechner sagst, wie er zu der gesuchten Lösung kommt.
    Alles was du mit genügend Zeit auf dem Papier ausrechnen kannst, kannst du auch dem Rechner beibringen. Beurteile das selbst.

    Hier ein paar Links:
    http://msdn.microsoft.com/library/
    http://www.wxwidgets.org/
    http://www.amazon.de/exec/obidos/ASIN/3860631888/qid=1143284024/sr=8-1/ref=pd_ka_1/028-9566710-2064563

    Ich bin damals auch direkt von der Dosprogrammierung mit TPascal zur WinAPI mit dem VC++ gewechselt. War recht problemlos.



  • hi,

    versuchs mal hier:

    http://www.willemer.de/informatik/windows/winprg.htm

    wie lange du brauchst haengt sicher davon ab wieviel zeit du investieren kannst. sicher bist du mit einem projekt nicht auf einem guten wissensstand. ich bin bereits seit ca. 4 jahren bei, hab denke ich auch gut ahnung davon aber entdecke immer wieder neue sachen die man ausprobieren kann. wichtig ist nur, dass man genuegent zeit zur verfuegung hat.

    gruss
    msp



  • Ach ja, ich halte Englischkenntnisse (lesend) erst einmal für wesentlich wichtiger als höhere Mathematik.



  • Vorsicht! Wenn Du mit MFC arbeitest, solltest Du auf jeden Fall über die Grundlagen der objektorientierten Programmierung (C++) bescheid wissen. Bei der reinen API ist das nicht nötig.
    Also, mal kurz gesagt: Die WinAPI ist C, die MFC ist C++ (objektorientierte Erweiterung von C). Der Vorteil von MFC ist: Die Programme sind wesentlich kürzer. Der Nachteil: Mitunter mußt Du trotzdem auf die API zurückgreifen.

    Wer mal mit BASIC o. ä. angefangen hat, dem wird der Umstieg auf C relativ leicht fallen (zumindest ging es mir so). Auf C++ ist das schon schwieriger wegen der Objektorientierung.

    Ich halte es für sehr sinnvoll, sich zuerst mal mit C und der WinAPI zu beschäftigen. Schon deshalb, weil man dadurch einige Einblicke in den Funktionsaufbau und die Kontrollstrukturen von Windows bekommt. Zum anderen, weil MFC oder VCL (das Borland-Pendant zur MFC) auf der WinAPI aufbauen und mit dieser besser verstanden werden können.

    Übrigens: Der umfangreiche Overhead bei WinAPI ist nur scheinbar. Wenn Du mal die Grundstruktur eines Programms fertig und funktionstüchtig (und verstanden!) hast, kannst Du sie immer wieder verwenden, mußt sie nur ins neue Programm kopieren und dann entsprechend abändern.

    Hier ein paar Links mit hervorragenden Tutorials:

    win-api.de
    Tutorials zu den Grundlagen der WinAPI.

    pronix.linuxdelta.de
    Vom Linux nicht verwirren lassen. Hier findest Du reichhaltige Tutorials zu C, C++ und WinAPI. Die C/C++-Tutorials sind sehr umfangreich, weil teilweise identisch mit Büchern, die es im Handel gibt.

    henkessoft.de
    Tutorials zur MFC.



  • Hi.

    Irgendwie werde ich immer verwirrter.
    Dann heisst das also das die WinAPI garnicht auf der OOP basiert sondern einfach auf der nackten C?
    Dann würde das ja auch heissen das es da keine Klassen gibt was zum kotzen ist?
    Gibt es auch noch ein paar weitere Tutorials für denn Einstieg in die WinAPI.
    Denn das von win-api.de ist mir für denn Anfang noch etwas zu komplex.
    Bitte nur deutsche Link's (I can't english, Ich habe erst seid der 7ten Klasse Englisch in der Schule).

    MfG Sämi



  • Crossbow schrieb:

    Dann heisst das also das die WinAPI garnicht auf der OOP basiert sondern einfach auf der nackten C?

    Zumindest der größte Teil.

    Crossbow schrieb:

    Dann würde das ja auch heissen das es da keine Klassen gibt was zum kotzen ist?

    Klassen gibt es nur bei COM.

    Crossbow schrieb:

    Gibt es auch noch ein paar weitere Tutorials für denn Einstieg in die WinAPI. Denn das von win-api.de ist mir für denn Anfang noch etwas zu komplex.

    Wenn das Komplex ist frage ich mich was einfach sein soll... vermutlich Consolen-Anwendungen. Da musst Du googlen...

    Crossbow schrieb:

    I can't english

    Dann wird es aber höchste Zeit, dass Du mal mehr lernst 😉 ohne Englisch bist Du beim Programmieren verloren...



  • Lass Dich nicht entmutigen. 🙂

    Die WinAPI ist nicht so schwer, wie man sich das vielleicht vorstellt. Das Problem ist viel eher, dass sie sehr komplex ist. Im Prinzip rufst Du ja nur Funktionen auf. 😃

    Das Problem an der WinAPI ist, dass es eine Bibliothek ist, die über die Jahre gewachsen ist. Entstanden ist sie, als C++ noch nicht das war, was es heute ist, folglich sind ein paar Dinge aus heutiger Sicht evtl. nicht so schön gelöst, damals ging es aber halt nicht anders. Ich glaube die 'relativ' neue GDI+ ist in C++ geschrieben, wo dann auch namespaces etc. verwendet werden, bin mir aber nicht sicher. Ansonsten ist die WinAPI durchaus OO programmiert worden, nur halt in C. Würde man heute in C++ eine Klasse Window anlegen und diese dann ableiten, so hat man bei der WinAPI den Ansatz, dass alle Funktionen, die sich auf Fenster beziehen Parameter besitzen, die ein Handle auf ein Fenster erwarten.
    Ein kleines Beispiel:
    Heute würde man es so machen:

    class Window {
        public:
            show();
            hide();
    };
    

    In der WinAPI sieht das halt so aus:

    ShowWindow(Handle, SW_SHOW);
    ShowWindow(Handle, SW_HIDE);
    

    Daher kann man sich aber auch relativ leicht einen Wrapper schreiben, z.B.

    class Window {
        public:
            Window() {
                // code um ein Fenster zu erzeugen
            }
            show() {
                ShowWindow(m_Handle, SW_SHOW);
            }
            hide() {
                ShowWindow(m_Handle, SW_HIDE);
            }
        private:
            HWND m_Handle;
    };
    // Verwendung:
    Window win;
    win.show();
    

    Naja, ist zwar wesentlich umfangreicher, aber die Idee sollte (hoffentlich) klar geworden sein.

    Kämpf Dich durch die Tutorials, es lohnt sich, auch wenn es am Anfang sehr viel ist. Wenn Du ein wenig Geld übrig hast, dann kann ich Dir nur den Petzold empfehlen, den gibt es bei Amazon bereits für 29,90.

    Ach ja, und freunde Dich ein wenig mit der MSDN an, die wirst Du auf jeden Fall brauchen. 🙂



  • CROSS_BOW -> habe mich gerade nicht geloggt (;

    Hi

    Mal ne konkrete Frage, wozu ist denn C++ überhaupt da?
    Wenn wir die WinAPI C verwendet wird...
    Bessergesagt, wozu gibt es überhaupt C++ Compiler bzw. Entwicklungsumgebungen ohne Builder für Windows Fenster so wie bei MFC oder CBB?
    Das ist ja der absolute Witz, denn es gibt keine Anwendungen mehr die auf DOS basieren und komerziell angewendet werden.
    Was bringen denn somit all diese C++ Tutorials und Bücher wie C++ für Dummies die sich mit der Konsolen Programmierung auseinander setzten?
    Das ist ein fertiger Witz.
    Gibt es auch WinAPI Bücher die keinerlei Vorkenntnisse in C voraussetzten?
    Höchstens ein Grundwissen in der C++ DOS Programmierung.
    Also wirklich für absolute Anfänger?

    MfG Sämi



  • Das wirst du wohl selten finden. Ich kenn zumindest keins.

    Cross_Bow schrieb:

    Wenn wir die WinAPI C verwendet wird...
    Bessergesagt, wozu gibt es überhaupt C++ Compiler bzw. Entwicklungsumgebungen ohne Builder für Windows Fenster so wie bei MFC oder CBB?
    Das ist ja der absolute Witz, denn es gibt keine Anwendungen mehr die auf DOS basieren und komerziell angewendet werden.
    Was bringen denn somit all diese C++ Tutorials und Bücher wie C++ für Dummies die sich mit der Konsolen Programmierung auseinander setzten?
    Das ist ein fertiger Witz.

    Um mit der WinAPI programmieren zu können, braucht man gewisse Grundkentnisse über C++. Zum Beispiel sehe ich öfters, dass einige statt dieser Methode:

    Zahl += 3;
    Zahl2 -= 5;
    

    Diese ewig lange Variante nehmen:

    Zahl = Zahl + 3;
    Zahl2 = Zahl2 - 5;
    

    Um sowas zu vermeiden sind gewisse Grundkentnisse nötig.

    Mfg Ominion



  • Also wie schon gesagt, das visual studio brauchst net kaufen, wenn du auf mfc verzichten kannst. Meiner ansicht nach ist mfc eh ein sterbender ast.

    Nimmt das visual studio express umsonst, das macht alles was man braucht. Man nimmt halt die .NET framework anstatt der MFC.
    Fuer windows forms is das programmieren mit .NET einfacher als mit MFC.

    Die winapi ist immer gut zu kennen, weil auch in .NET benutzt ich sie noch teilweise, wenn .net es mal nicht so macht oder auch um ogl darunter zum laufen zu bringen.

    Fuer deine Anwendung wurde ich aber schlicht .NET hernehmen und mit der vc express version, bekommst dafuer alles was du brauchst umsonst, (fuer ein jahr). Dann sollte der das produckt laut plan ca 30-50 euro kosten, was es auch wert ist, denn entgegen der studentenversionen kann man diese auch kommerziell nutzten.



  • Flow_cplus schrieb:

    Man nimmt halt die .NET framework anstatt der MFC.
    Fuer windows forms is das programmieren mit .NET einfacher als mit MFC.

    Es ist noch viel einfacher, wenn Du C# verwendest.

    Und das .NET-Framework hat nun überhaupt nichts mit der WinAPI zu tun.



  • Jochen Kalmbach schrieb:

    Und das .NET-Framework hat nun überhaupt nichts mit der WinAPI zu tun.

    behauptet ja auch niemand.



  • Hmmm, habe mich jetzt eigentlich hald mal für Visual C++ entschieden.
    Jedoch begreife ich das immer noch nicht so ganz mit dem MFC, Freamworker, .NET, etc.
    Wo liegen nun da die unterschiede, und vorallem, was gehört zu was?
    Mein beschriebens Programm war nur ein Beispiel!
    Das war nicht unbedingt ein Ziel das ich verwirklichen will.
    Es wäre zwar ganz nett, aber 1.5 Jahre in so ein Furz zu investieren...
    Ich selbst wäre vieleicht auch noch froh für ein Compiler bzw. ne Entwicklungsumgebung oder so, die zwar etwas einfacher als die WinAPI zu bedienen ist so wie eben Visual C++ zum Beispiel oder Visual Studio .NET, die als gute Grundlage für die WinAPI dient.
    Fragt sich jetzt einfach wo genau das nun eher der Fall ist, bei vc++ oder bei vsn, oder bei garkeinem?
    Und in ner Woch oder zwei gehe ich sowieso bei jemandem aushelfen und verdiene dabei etwas Geld womit ich mir dann schon bald Visual C++ .NET kaufen könnte wenn sich so eine Investition auch wirklich lohnen würde?

    MfG Sämi

    P.s: Nehmt es mit bitte nicht über wenn ich am Anfang noch etwas schwer von begriff bin bzw. Hirnlose Fragenstelle so wie zu Beispiel hier.
    Und besonders immer das selbe Frage nur etwas anders formuliert so das ich denn Unterschied nicht mehr finde 😃 ^^



  • Cross_BOW schrieb:

    Wo liegen nun da die unterschiede, und vorallem, was gehört zu was?

    In Windows gibt es Grundsätzlich zwei Welten zu Unterscheiden:
    1. Unmanaged (native) (Alte-Welt)
    2. Managed (.NET-Framework) (Neue-Welt)

    Der Punkt 2 gibt es erst seit 2002.
    MFC/WinAPI ist noch Punkt 1 (wobei die MFC auch Richtung .NET geht; aber nur wenn man es aktiviert).
    Windows-Forms ist .NET und setzt die .NET-Runtime auf dem Zielrechner voraus.

    Cross_BOW schrieb:

    Ich selbst wäre vieleicht auch noch froh für ein Compiler bzw. ne Entwicklungsumgebung oder so, die zwar etwas einfacher als die WinAPI zu bedienen ist so wie eben Visual C++ zum Beispiel oder Visual Studio .NET, die als gute Grundlage für die WinAPI dient.

    Als Entwicklungsumgebund Rate ich Dir zu VC2005 Express mit dem aktuellen PSDK:
    http://blog.kalmbachnet.de/?postid=58
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-130812.html

    Cross_BOW schrieb:

    Fragt sich jetzt einfach wo genau das nun eher der Fall ist, bei vc++ oder bei vsn, oder bei garkeinem?

    Was der Fall? WinAPI. Die WinAPI hat nichts mit einem Compiler oder einer IDE zu tun.

    [/quote]Und in ner Woch oder zwei gehe ich sowieso bei jemandem aushelfen und verdiene dabei etwas Geld womit ich mir dann schon bald Visual C++ .NET kaufen könnte wenn sich so eine Investition auch wirklich lohnen würde?[/quote]Besorg Dir zuerst mal die Express-Version, die ist kostenlos und für WinAPI genau das richtige.



  • Andernseits stellt sich zwar trotzdem nochmal's die Frag ob WinAPI Grundkenntnisse bzw. C Kenntnisse für die 3D Spieleprogrammierung wirklich erforderlich sind?
    Was meint ihr zu dem Buch von David Scherfgen: 3D Spiele Programmierung?
    Reichen da auch solide Grundkenntnisse in der DOS Programmierung?

    MfG Sämi



  • Boah alter diese Frage kommt nun echt jeden 3.Tag. Und es ist immer die gleiche Antwort. Ja es ging jedem irgendwann mal so als er angefangen hat. Lies dieses Buch dann ist dir danach auch alles klar : http://www.amazon.de/exec/obidos/ASIN/3860631888/qid%3D1143284024/sr%3D8-1/ref%3Dpd_ka_1/302-2410603-1318445

    Wenn du zum lesen zu faul bist dann lass lieber die Finger von Winapi. Ist doch alles klar. und dafür brauch man eigentlich nicht jeden 3.Tag einen 10 seitigen Thread!



  • CROSS_BOW schrieb:

    Andernseits stellt sich zwar trotzdem nochmal's die Frag ob WinAPI Grundkenntnisse bzw. C Kenntnisse für die 3D Spieleprogrammierung wirklich erforderlich sind?
    Was meint ihr zu dem Buch von David Scherfgen: 3D Spiele Programmierung?
    Reichen da auch solide Grundkenntnisse in der DOS Programmierung?

    MfG Sämi

    Nimm den visual c++ express version IDE/compiler mit der beschreiben PSDK und moeglicherweise noch der Directx sdk. Spiel mal damit, kauf KEIN buch sondern schau mal ein paar tutorials an in winapi, .NET, dx, ogl etc.... nur so die ersten schritte jeweils.

    Wenn du mal ein bischen Gefuehl fuer die Sachen hast, dann entscheide was du lernen willst und kauf dann eventuell ein buch, wenns noetig ist.


Anmelden zum Antworten