Grund-wissen/anforderungen für WinAPI



  • flower schrieb:

    völliger quatsch wiedermal. ohne petzold kommst du in der windows welt überhaupt nirgends hin. wenn du natürlich irgendein kleiner frickler sein willst dann kauf dir kein buch und folge dem rat von flow cplus

    Ich finde das stimmt so nicht. Ich habe den petzold zwar und finde ihn echt gut, aber gerade die documentation aus der dxsdk, psdk oder auch der .net hilfe von mircosoft sind echt gut und machen es nicht gerade noetig ein buch zu kaufen.

    Und auch halb brauchbare tutorials von 18jaerhigen sind ok fuer den einstieg, mal soll ja nur mal ne idee von den ganzen techniken bekommen, damit man weiss was man womit machen kann und ob man jetzt dx, winapi .net oder mfc lernt und wovon wieviel ... etc..

    Ich mag buecher, ich hab regale voll davon nur progammier und pc buecher, (zuhause in Deutschland), den petzold habe ich zeitweise oft zu hand genommen, aber man kann das alles auch online aus der sdk holen und die ist gerade zum nachschlagen eh schneller.



  • Es gibt eigentlich gar keinen Sinn für mich dieses Buch zu kaufen.
    Weil dieses Buch mir zu komplex ist!
    Ich bin kein Genie das alles auf anhieb rafft und sich alles merken kann was es liest so wie ihr.
    Ich weiss, es gibt viele solche Leute, aber ich bin hald eben keiner.
    Wenn ihr schon nur die 2 - 3 Tut's da von der WinAPI lobt, dann ist sowieso klar das dieses Buch nix für mich ist.
    Da stehen ne paar Seiten Code und dann 3-4 Zeilen Text und dann wieder Code.
    Da wird kaum was erklärt, da wird einfach die Systematik erklärt aber nicht wozu jeder einzelne Befehl ist was für mich fatal ist.
    Wenn ich euch sage das dieses Tut (http://tutorial.schornboeck.net) für mich gerade angemessen ist und ich auch da noch rumknorzen muss und nicht alles auf anhieb begreiffe...
    Deswegen diese ewige Diskusion...!
    Da ich aber nicht aufgeben will suche ich und suche.
    Aber so wie es aussieht bin ich jetzt dann wirklich gezwungen das ganze aufzugeben.
    Viele Leute haben so ein C++ Buch in 2-3 Tagen durchgelsen und wissen dann alles.
    Bei mir braucht es meist ein Tag bis ich schon nur ne Seite wirklich verstehe und mir das meiste merken kann.
    Mit dem MS_DOS wissen weiss man vieleicht was Schleifen, Zeiger, Tempates, etc. sind, aber damit kennt man unmöglich die Befehle aus der WinAPI^was in jedem Tut oder Buch verlangt wird.
    Bei Tutorials die ihr einfach findet werden pro Seite vieleicht 3-4 Befehle erklärt, mehr nicht.
    Zum Beispiel der String, in manchen Tut's wird einfach erklärt das er Zeichenketten mit so und so viel byte oder bit speichert.
    Aber was soll man nun darunter verstehen, und wie speichert man zum Beispiel Zahlen oder Texte die diese Werte übersteigen...
    Diese fragen zerstören das ganze Tutorial.

    MfG Sämi

    P.s: Ein Tutorial ist für denn Anfänger viel Besser wenn es von nem 18 Jährigen geschrieben wurde als von einem mit 30 Jahren Programmier-erfahrung.
    Ganz einfach, weil für denn Erfahreneren alles total logisch ist und er Sachen gar nicht erklärt die für ihn so logisch sind nach all dem, was bei uns aber gerade nicht der Fall ist!



  • Buch hin, Aufnahmefähigkeit her -
    jeder Neuling schaut in den Windows Messageloop wie ein Schwein in's Uhrwerk.

    Du kommst einfach nicht drum herum, dich auch mal in unbekannte Gewässer vorzuwagen. Such dir halt ein Tutorial wo ein kleines lauffähiges Programm steht und gehe das dann Zeile für Zeile ab und was noch viel wichtiger ist,
    ändere immer kleine Sache und schau dir an, was passiert.



  • @CrossBow

    Nu schmeiß mal nicht gleich die Flinte ins Korn, jeder fängt mal klein an. Und viele hier (unter anderem ich) haben zuerst die Tutorials gemacht.
    Das Petzold-Buch ist auch für Anfänger gut verständlich und enthält umfangreiche und detaillierte Erklärungen. Es ist sozusagen ein Standardwerk für alle, die mit API zu tun haben, auch für Anfänger. Nix mit "3-4 Zeilen" Text. "3-4 Seiten" trifft es besser.
    Bevor Du Dir das Buch kaufst, nimm Dir halt mal die Tutorials vor. Ob Du es kapierst, kannst Du erst sehen, wenn Du sie durchgearbeitet hast. Danach kannst Du Dich immer noch für oder gegen das Buch entscheiden.

    Viele Leute haben so ein C++ Buch in 2-3 Tagen durchgelsen und wissen dann alles.

    Ja, solche Leute nennt man Fachidioten.

    Den, der nach 2-3 Tagen schon "Alles" weiß, mußt Du mir mal zeigen.



  • hi,

    entmutigen wollen wir dich hier alle sicher nicht geh ich mal von aus). fang erstmal an und wenn du fragen hast, dafuer ist ja das forum hier und dir wird hier mit sicherheit geholfen und auch etwas dazu erklaert wenn du es ausdruecklich moechtest und die fragen korrekt formuliert sind.

    wie waers wenn du selber ein tutorial schreibst. dann lernt man auch recht gut mit und wenn du es mit eigenen worten versuchst zu beschrieben was jenes und dieses tut dann hast du es auch verstanden.

    oder du versuchst zb einen ganz einfachen rechner zu basteln (zahlen von 0-9) mit addition, subtraktion, division und multiplikation. das denke ich ist fuer den anfang nicht so schwer wenn du mal verstanden hast wie ein helloworld winapi programm funktioniert. wie gesagt, wenn du fragen hast helfen wir dir hier gern.

    gruss
    msp



  • Ominion schrieb:

    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.

    quatsch. es ist völlig egal welche variante man wählt. letztere ist meiner meinung sogar besser weil lesbarer...



  • Hi.

    Na ja, also zu direkten fragen der WinAPI habe ich eigentlich nicht's dagegen.
    Fangen wir doch gleich mal an 😃
    Vieleicht könnte mir ja jemand mal denn Code für Hello World in der WinAPI geben und den Zeile für Zeile erklären und auch was so alles dahinter steckt.
    Vieleicht einfach mal soweit (also nicht alles an einem Tag) das ich wie schon erwähnt soweit in der Lage wäre ein einfaches Rechenprog zu schreiben.
    Evtl, wäre ich noch froh für die If/Else Anweisung bezüglich der WinAPI, also wie man sie dort anwendet, evtl. noch was über die wichtigsten Variablen wie int, string und char.
    Damit wäre ich für denn Anfang schon mal befriedigt 😃

    MfG Sämi



  • Dafür ist dieses Forum nicht da. Dieses Forum war ursprünglich mal als Austausch für Entwickler gedacht. Wir können und wollen hier nicht immer nur Newbie Fragen diskutieren. Nichts gegen dich Cross_Bow, aber es gibt echt genügend Möglichkeiten sich erstmal selbst etwas zu informieren und wenn du dann KONKRETE Fragen oder Probleme hast, können wir dir gerne helfen. Aber ein bisschen Eigenarbeit musst du ehrlich gesagt schon leisten.



  • CROSS_BOW schrieb:

    Evtl, wäre ich noch froh für die If/Else Anweisung bezüglich der WinAPI, also wie man sie dort anwendet, evtl. noch was über die wichtigsten Variablen wie int, string und char.

    Also irgendwie sieht das für mich so aus, als würdest Du denken, dass die WinAPI eine Programmiersprache ist, das ist sie aber NICHT. Die WinAPI ist die Schnittstelle für das Windows-Betriebssystem, nicht mehr, aber auch nicht weniger.

    Ich hab' mich mal an einem Hello-World probiert:

    #include <windows.h>
    
    // Funktion für die Nachrichtenbehandlung für unser Fenster
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    // Name unserer Fensterklasse
    const char szAppName[] = "HelloWorldFenster";
    
    // Programm-Einstiegspunkt
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
    
    	// eine Variable vom Typen WindowClass anlegen
    	WNDCLASS wc;
    	// Es soll bei vertikalen und horizontalen Größenänderungen neu gezeichnet 
    	// werden
    	wc.style         =  CS_HREDRAW | CS_VREDRAW;
    	// Zeiger auf Nachrichten-Behandlungs-Funktion, welche aufgerufen wird, 
    	// wenn Nachrichten an unser Fenster gesendet werden
    	wc.lpfnWndProc   =  WndProc;
    	// kommt später
    	wc.cbClsExtra    =  0;
    	// kommt später
    	wc.cbWndExtra    =  0;
    	// Instanz-Handle weiterreichen
    	wc.hInstance     =  hInstance;
    	// Cursor für unser Fenster laden (normaler Zeiger)
    	wc.hCursor       =  LoadCursor(NULL, IDC_ARROW);
    	// Icon, welches in der Titelleiste angezeigt wird
    	wc.hIcon         =  LoadIcon(NULL, IDI_APPLICATION);
    	// Brush für den Hintergrund laden
    	wc.hbrBackground =  reinterpret_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
    	// Name dieser erstellten Fensterklasse übergeben
    	wc.lpszClassName =  szAppName;
    	// Unser Fenster hat kein Menu
    	wc.lpszMenuName  =  0;
    
    	// Fensterklasse bei Windows registrieren
    	RegisterClass(&wc);
    
    	// Fenster auf Basis der oben erstellten Fensterklasse erstellen
    	HWND hWnd  = CreateWindowEx(0,                    // kommt später
    	                            szAppName,            // Name der Fensterklasse
    	                            "Hello World",        // Text in der Titelleiste
    	                            WS_OVERLAPPEDWINDOW,  // Standard-Fenster
    	                            100,                  // x-Position
    	                            100,                  // y-Position
    	                            200,                  // Breite des Fensters
    	                            200,                  // Höhe des Fensters
    	                            0,                    // Später
    	                            0,                    // Später
    	                            0,                    // Später
    	                            0);                   // Später
    
    	ShowWindow(hWnd, SW_SHOW);  // Fenster anzeigen
    	UpdateWindow(hWnd);         // Fenster aktualisieren
    
    	// Nachrichten-Schleife starten
    	MSG msg;
    	while (GetMessage(&msg, NULL, 0, 0)) {  // nächste Nachricht holen
    		TranslateMessage(&msg);  // später
    		DispatchMessage(&msg);   // später
    	}
    
    	return 0;  // Programm beenden
    }
    
    // Nachrichten-Behandlungs-Funktion
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    	// welches Nachricht wurde denn geschickt?
    	switch (message) {
    		case WM_DESTROY:  // Fenster wird zerstört
    			PostQuitMessage(0);  // Nachricht schicken, um Anwendung zu beenden
    		break;                   // Hierdurch wird die Nachrichten-Schleifen beendet
    	}
    
    	// Keine der oben genannten Nachrichten?
    	// Dann Nachricht an die Standard-Nachrichten-Verwaltung weiterleiten
    	return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    Mehr sage ich jetzt aber auch nicht mehr dazu.



  • mantiz schrieb:

    Ich hab' mich mal an einem Hello-World probiert:

    das kannste auch einfacher haben:

    MessageBox (0, "Hello, World", "HelloWorldWindow", 0);
    

    😉



  • hmpf 😃



  • Ziemlich sinnfreie Kommentare mantiz! Man muss in den Kommentaren irgendwie erklären warum man etwas macht, sonst bringt es nichts.



  • Er wollte jede Zeile kommentiert haben, klar macht das keinen Sinn, aber so wollte er es haben. Man kann in ein paar Zeilen Code nicht erklären, wie Windows arbeitet, dazu muss man schon ein 'wenig' mehr lesen und verstehen.

    Aber ist mir auch egal, mach's besser.



  • Mantiz' Template finde ich eine gute Vorlage zum Selbstausprobieren.
    Damit kann man schoen rumspielen.
    Sollte direkt mal in die FAQ.

    EDIT: Musste man bei der Hintergrundfarbe nicht noch einen abziehen oder so?



  • SeppSchrot schrieb:

    Musste man bei der Hintergrundfarbe nicht noch einen abziehen oder so?

    Ich glaube das muss man nur machen, wenn man sich nen Brush von den Systemfarben holt. Keine Ahnung, wie da die defines heißen. Ich hab' bisher immer mit direkten Farbangaben gearbeitet und das hat auch immer gepasst. Im obigen Beispiel ist der Hintergrund auf jeden Fall weiss. 🙂



  • Irgendwie komme ich mir verarscht vor 😃

    "Mission erfüllt" 😃



  • mantiz: *daumen hoch* 👍 🙂 *bookmark* Das hilft mir als WinAPI-Neuling auch sehr.

    net: Natürlich geht das sicher auch in einem Befehl, aber dafür lernt man bei dieser ausführluichen Variante doch etwas mehr. *g



  • Ihr versteht doch gar nix. 🙄

    Kauft euch endlich Petzold, ich kann dieses unqualifizierte Gelaber nicht mehr ertragen. Wenn ihr (Also die Neulinge jetzt) meint anhand dieses Codes alles verstanden zu haben, dann erklärt mir doch mal was die Nachrichtenschleife ist und wie sie funktioniert. Sowas bringt euch so ein dummes Tutorial nicht bei, da steht immer nur "SO jetzt tippt ihr dies ein und dann tippt ihr das ein". Petzold ist ein Muss für einen Newbie. Und Jeffrey Richter ist auch ein Muss. Danach könnt ihr Tutorials lesen und werdet merken wie schlecht die meisten sind (nicht alle)!



  • Also jetzt mal ganz ehrlich: Wenn euch das oben weitergeholfen hat, dann freut es mich natürlich, aber ein solcher Aufbau ist in fast jedem WinAPI-Tutorial zu finden, zumindest in denen, die ich mir angesehen habe. Um ein paar Experimente zu machen ist dies auch sehr gut geeignet.

    Aber: Ein Tutorial, so gut es auch sein mag, kann euch nicht alles erklären. Es ist ein Tutorial und keine Anleitung, wie man zum WinAPI-Gott wird. Ich weiß nicht wieviel ich bereits gelesen hab' (Tutorials, Petzold, ...) und ich weiß echt wenig. Wenn ihr euch mit so einem Thema befassen wollt, dann müsst ihr euch damit abfinden, dass ihr viel lesen und ausprobieren müsst.

    Aber hey, es macht doch Spass, also lasst euch nicht entmutigen, mich bringt auch keiner mehr davon ab, soviel Spass hab' ich dabei. 😃



  • Irgendwie wird WinAPI hier immer mit GUI assoziiert. 🙄


Anmelden zum Antworten