Anfänger - Programm funktioniert, aber....



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    die beste art für mich zu lernen ist wenn jemand meinen code korrigiert und // kommentiert
    kompiliert und testets und danach postet.

    ich weiss ist viel verlangt, aber für mich die ideale art zu lernen, weill dann sehe ich was ich falsch gemacht habe

    mann kan ja meine zeilen auch auskommentieren und neu schreiben. dann sehe ich den unterschied

    🙂

    Die beste Art wäre, vernünftig anzufangen mit C wenn du alte WinApi programmieren möchtest.
    Für C++ gibt es Wrapper wie wxWidgets, Qt, oder alterndes MFC den WinApi32 ist alles andere als C++ und die Basics solltest du schon können bevor du mit Winapi rumhandtierst.

    mFg Ara

    ps: jeder hat mal angefangen doch ohne grundlagen landest du mit jedem code hier 😉



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    und siehst du auf die schnelle wo ich den fehler mit dem window titel mache? da kommt nur M anstatt My Window

    Ich würds mal auf das Mischen der A- und W-Varianten und damit char und wchar_t schieben. WinMain etwas umgeschrieben:

    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int ncmdshow)
    {
    	WNDCLASS wc = {0};
    
    	wc.hbrBackground = (HBRUSH)COLOR_WINDOW ;
    	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wc.hInstance = hInst;
    	wc.lpszClassName = TEXT("myWindowClass");
    	wc.lpfnWndProc = WindowProcedure;
    
    	if(!RegisterClass(&wc))
    	  return -1;
    
    	registerDialogClass(hInst);
    
    	CreateWindow(TEXT("myWindowClass"), TEXT("My Window"), WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,900,600,NULL,NULL,NULL,NULL);
    
    	MSG msg ={0};
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    	  TranslateMessage(&msg);
    	  DispatchMessage(&msg);
    	}
    
    	return 0;
    }
    

    SetWindowText/GetWindowText/AppendMenu solte ebenfalls das A rangestellt werden, wenn du mit chars arbeitest. Wie geschrieben, besser wäre es natürlich auf TCHARs umzustellen (siehe oben).

    Und die Messageloop ist völlig okay, wenn weder ein Windowhandle noch ein Rangefilter angegeben wurde. Siehe hier.



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    [sinngemäß] schreib meinen code um und versehe ihn mit Kommentaren.

    Sonst geht es Dir noch halbwegs gut?

    @peroja sagte in Anfänger - Programm funktioniert, aber....:

    also... mein code ist "kaputt"

    Ja. Lies die verdammte Dokumentation.

    @yahendrik sagte in Anfänger - Programm funktioniert, aber....:

    	while(GetMessage(&msg,NULL,0,0))
    	{
    	  TranslateMessage(&msg);
    	  DispatchMessage(&msg);
    	}
    

    ist immer noch kaput.



  • @peroja: Ich sehe auch das Mischen von ANSI und WideString als das Problem an.
    Hier ein paar (englische) Artikel dazu:

    Du solltest also (bei WinAPI-Projekten) immer mit "UNICODE" kompilieren (außer du willst noch für Win98 kompilieren ;- )
    Und generell auf die explizite Angabe von A und W verzichten und, wie schon geschrieben, String-Literale mit dem _T- oder TEXT-Makro benutzen. Und dann TCHAR als Datentyp (anstatt explizit char oder wchar_t).



  • Hallo,

    Ich hab mich natürlich nicht Ermutigen lassen und geh unbeirrt meinen Weg. Ich kenne die Grundregeln von C/C++
    Ich bin 2 Wochen lang jeden Tag mehrere Stunden drann gewesen und ich denke schon dass man sich da so einiges Aneignet.
    Ich bleibe bei WIN32 API und ich hab jetzt auch ein bisschen Microsoft Literatur geschmöckert, aber das war ehrlich gesagt nicht sehr Hilfreich. Ich hab mir auch SFML angesehen, was ich Geil finde für Games, aber das möchte ich nicht.
    Das was ich machen will, könnte ich wohl easy in VB coden, jedoch das ist mir wiederum zu "billig". Mich reizen komplizierte herausforderungen. Deshalb wird es bei C++ Win32 bleiben.

    Das Einzige was ich ändere ist meine IDE. Ich werde auf Visual Studio zurückgreifen. CodeBlocks ist geil aber irgendwie fehlt da was.

    Ich hab unterdessen gelernt wie man Radiobuttons und Dropdown Selectoren benutzt und deren Variable übergibt



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Ich kenne die Grundregeln von C/C++
    Ich bin 2 Wochen lang jeden Tag mehrere Stunden drann gewesen und ich denke schon dass man sich da so einiges Aneignet.
    Ich bleibe bei WIN32 API und ich hab jetzt auch ein bisschen Microsoft Literatur geschmöckert,

    Kannst du gern machen, will dich auch gar nicht davon abbringen.
    Ich will dir aber nur aus eigener Erfahrung sagen, dass das bei mir ganz schlecht funktioniert hat. Ich konnte schon andere Programmiersprachen, und dachte mir, C++ ist auch wieder das gleiche... Hab mit MFC angefangen, kaum was verstanden. Und es wurde "nichts" erklärt. Weil C++ eben nicht MFC ist, und MFC Bücher halt auch wenig C++ erklären (sonst wären das schlechte MFC Bücher). Mit der Win API ist das auch so ähnlich.
    Das Ergebnis war, dass ich danach so etwa zehn Jahre auf Kriegsfuß mit C++ stand, bis ich das endlich richtig verstanden hatte.



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Ich kenne die Grundregeln von C/C++

    diese sprache gibt es nicht und die winapi ist eigentlich C und nicht C++.



  • @Wade1234 sagte in Anfänger - Programm funktioniert, aber....:

    @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Ich kenne die Grundregeln von C/C++

    diese sprache gibt es nicht und die winapi ist eigentlich C und nicht C++.

    Genau solche Klugscheissereien treiben mich an 😁
    Es fahren sowohl Güterzüge wie auch Schnellzüge in einem Bahnhof.
    Beide Transportieren etwas, beide fahren auf Schienen. auchklugscheissenkann



  • @Mechanics sagte in Anfänger - Programm funktioniert, aber....:

    @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Ich kenne die Grundregeln von C/C++
    Ich bin 2 Wochen lang jeden Tag mehrere Stunden drann gewesen und ich denke schon dass man sich da so einiges Aneignet.
    st du gern machen, will dich auch gar nicht davon abbringen.
    Ich will dir aber nur aus eigener Erfahrung sagen, dass das bei mir ganz schlecht funktioniert hat. Ich konnte schon andere Programmiersprachen, und dachte mir, C++ ist auch wieder das gleiche... Hab mit MFC angefangen, kaum was verstanden. Und es wurde "nichts" erklärt. Weil C++ eben nicht MFC ist, und MFC Bücher halt auch wenig C++ erklären (sonst wären das schlechte MFC Bücher). Mit der Win API ist das auch so ähnlich.
    Das Ergebnis war, dass ich danach so etwa zehn Jahre auf Kriegsfuß mit C++ stand, bis ich das endlich richtig verstanden hatte.

    Nun, ich denke jeder hat so seine Fähigkeiten und Eigenschaften. Mein kleiner Bruder ist nicht Behindert und Geistig völig normal, aber hat jetzt nicht die Geduld so etwas zu tun, Er ist dafür ein begeisterter Sportler. Ich hingegen war eher der "nervöse" und ungeduldige aber immer auf der suche nach Geistigem Futter. Ich war von jeher her extrem neugierig. Ich kann komplexe Aufgaben aufnehmen und habe die Geduld dazu. Jeder ist Verschieden.
    Im übrigen bin ich gar kein Programmierer sondern wo ganz anders zuhause. (Film) Aber es interessiert mich eben.



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Ich kann komplexe Aufgaben aufnehmen und habe die Geduld dazu.

    Das hat weniger mit Komplexität und Geduld zu tun. Es ist einfach die falsche Herangehensweise und geht am eigentlichen Problem vorbei. Du kriegst damit schon hin, was du willst. Nur ist es nicht das, was wichtig gewesen wäre, und das wirst du gar nicht merken.



  • @peroja
    C++ ist halt ne ziemliche Sau, da stimme ich @Mechanics voll zu. Gründe dafür gibt es einige. Der ganze ranzige Legacy-Kram der von C übernommen wurde, dass es kaum brauchbare Frameworks dafür gibt, dafür aber etliche "grosse" aber total altmodische, eigenbrötlerische und so gar nicht "moderne" Frameworks (MFC, Qt, ...) und noch einige mehr.

    Und die Lernkurve ist krass steil.

    Eines der grossen Probleme dabei ist dass du in C++ so viele Dinge machen kannst die "funktionieren" (bzw. zu funktionieren scheinen), aber totaler Quatsch sind oder sogar einfach nur falsch. Schlimmer noch: Viele Tutorials sind von Anfängern oder Stümpern geschrieben und bis zum Rand voll mit Fehlern. Dummerweise kannst du als Anfänger das aber nicht riechen. Und nochmal schlimmer: Sogar viele Frameworks ala MFC sind voll Dingen die zumindest ganz schlechter Stil sind.

    Es kommt halt total darauf an was du erreichen willst. Wenn du nur ein bestimmtes GUI Programm basteln willst, dann ist C++ mit Win32 fast sicher das falsche Werkzeug dafür. Und wenn du C++ lernen willst, dann ist ein GUI Programm mit Win32 sicher das falsche Projekt dafür. Und wenn du beides gleichzeitig willst, dann ... ändert das leider nichts daran 😉



  • @peroja sagte in Anfänger - Programm funktioniert, aber....:

    Genau solche Klugscheissereien treiben mich an 😁
    Es fahren sowohl Güterzüge wie auch Schnellzüge in einem Bahnhof.
    Beide Transportieren etwas, beide fahren auf Schienen. auchklugscheissenkann

    ja da hast du wohl recht. 🙄 aber meinst du nicht, dass sich güterzüge und passagierzüge (die man übrigens auch noch deutlich weiter herunter spezialisieren kann) sehr erheblich voneinander unterscheiden? also in irgendwelchen western aus den 1960er jahren mag das ja sehr romantisch aussehen, mit dem güterzug durch die usa zu reisen, aber allgemein würde ich davon abraten.


Anmelden zum Antworten