[C++] Minecraft Skin Downloader

  • Hiho,
    Version 1.0 meines Minecraft Skin Downloaders ist fertig. Ich verzichte mal auf einen Changelog, da auch im Backend sehr viel passiert ist. (Statt URLDownloadToFile wird nun cURL benutzt usw..)

    So sieht's nun aus:

    (Design ist leicht von einem anderen Skin Stealer inspiriert worden, da es mir hier eher um den Lerneffekt ging, dafür danke an S1lver94)

    Source - Download - VT (1/46)

    Source auf paste2.org
    main.cpp - functions.cpp
    language.h - prototypes.h - globals.h - defines.h - includes.h


    Zu der Source: Um es kompilieren zu können, muss man die Lib curl in seinem Compiler einfügen. Wie das geht, könnt ihr recht einfach googeln.

    Kritik ist gern gesehen! (Aber bedenkt, ich bin noch ziemlich auf Anfängerniveau..)

    Alte Versionen
    V0.1 - Source - Download - VT (1/46)

    [CENTER][/CENTER]

  • Code
    [COLOR=#408080][I]/* Vorwärtsdeklarationen der in diesem Codemodul enthaltenen Funktionen */[/I][/COLOR]
    ATOM				MyRegisterClass(HINSTANCE hInstance);BOOL				InitInstance(HINSTANCE, [COLOR=#B00040]int[/COLOR]);LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM); [COLOR=#282828]INT_PTR[/COLOR][COLOR=#282828] [/COLOR][COLOR=#282828]CALLBACK[/COLOR][COLOR=#282828]	[/COLOR][COLOR=#282828]About[/COLOR][COLOR=#282828]([/COLOR][COLOR=#282828]HWND[/COLOR][COLOR=#282828],[/COLOR][COLOR=#282828] [/COLOR][COLOR=#282828]UINT[/COLOR][COLOR=#282828],[/COLOR][COLOR=#282828] [/COLOR][COLOR=#282828]WPARAM[/COLOR][COLOR=#282828],[/COLOR][COLOR=#282828] [/COLOR][COLOR=#282828]LPARAM[/COLOR][COLOR=#282828]);[/COLOR]

    Die Prototyp Funktionen kannst du auch komplett in eine Header Datei umlagern um es so übersichtlicher zu machen.

    Allgemein kannst du Klassen in Header Dateien definieren so ersparst du dir die Prototypen in der Main Datei.

    Ansonsten da noch nicht so viel in dem Code gemacht wird sieht das ganze in Ordnung aus.

  • Zitat von Delinquenz;316020

    Das wurde so von meinem VS2012 automatisch gemacht - die Hälfte von dem Code ist eher vom Compiler als von mir.

    Ja klar, aber das war jetzt auch eher allgemein auf die Prototyp Funktionen bezogen.

  • Zitat von 0xFFFF;316021

    Ja klar, aber das war jetzt auch eher allgemein auf die Prototyp Funktionen bezogen.


    Wollte mich nur rechtfertigen :)

    Ok, werde ich berücksichtigen. Will das Tool später noch ausbauen, muss aber noch in VB schauen, wie es später aussehen soll.

    (Ja, ich designe meine Tools in VB vor)

    [CENTER][/CENTER]

  • Was ich nicht versteh ist "switch (wmId)" wenn du nur eine Abfrage hast. ._.

    Rest würd ich nur etwas überarbeiten, z.b. das hier:

    Zitat


    skinDownload = URLDownloadToFile(NULL, downloadUrl.c_str(), target.c_str(), 0, NULL); // Den Befehl zum Downloaden in dem HRESULT skinDownload speichern (um beim Fehlschlagen eine Rückmeldung zu geben) if (FAILED(skinDownload)) { // Wenn es fehlgeschlagen ist, dann MessageBox(hWnd, TEXT("Der Download ist fehlgeschlagen!\nMögliche Ursachen für diesen Fehler wäre die Verbindung oder die Richtigkeit des Namens. (Beachte die Groß- und Kleinschreibung!)"), TEXT("Download fehlgeschlagen!"), MB_OK | MB_ICONEXCLAMATION); } else { // ansonsten MessageBox(hWnd, TEXT("Download erfolgreich ausgeführt!"), TEXT("Download"), MB_OK | MB_ICONINFORMATION); }

    zu:

    Zitat


    skinDownload = URLDownloadToFile(NULL, downloadUrl.c_str(), target.c_str(), 0, NULL); // Den Befehl zum Downloaden in dem HRESULT skinDownload speichern (um beim Fehlschlagen eine Rückmeldung zu geben) if ( skinDownload != S_OK ) { // Wenn es fehlgeschlagen ist, dann MessageBox(hWnd, TEXT("Der Download ist fehlgeschlagen!\nMögliche Ursachen für diesen Fehler wäre die Verbindung oder die Richtigkeit des Namens. (Beachte die Groß- und Kleinschreibung!)"), TEXT("Download fehlgeschlagen!"), MB_OK | MB_ICONEXCLAMATION); } else { // ansonsten MessageBox(hWnd, TEXT("Download erfolgreich ausgeführt!"), TEXT("Download"), MB_OK | MB_ICONINFORMATION); }

    Siehe hier: URLDownloadToFile function (Windows) nutz die Return Code's, damit kannst du dem User bessere Error's ausgeben woran es liegt.

    Der Rest sieht sauber aus, wobei ich nicht versteh warum du TEXT nutzt, _T() würde es auch tun oder garnichts. :D

  • Danke für die Antwort =)

    Ja, das mit dem FAILED() hatte ich irgendwie nur kurz nachgeschaut, stimmt. Werde zukünftlich immer einen Blick ins MSDN werfen.

    TEXT() finde ich persönlich übersichtlicher :P

    Das mit den switch(wmId) ist auch Standard und stimmt, hätte es bei meinem Programm zu einer If-Anweisung um modellieren können. Wollte das Programm später noch ausbauen, weshalb bei mehreren Buttons wohl eine Switch-Anweisung geeigneter wäre.

    Generell habe ich den von meinem Compiler generierten Code noch ziemlich in Ruhe gelassen wie ihr merkt, da ich anfangs noch leichte Schwierigkeiten mit den Funktionen des Codes hatte.

    [CENTER][/CENTER]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!