[C++] Minecraft Skin Downloader

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [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)
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Quellcode

      1. [COLOR=#408080][I]/* Vorwärtsdeklarationen der in diesem Codemodul enthaltenen Funktionen */[/I][/COLOR]
      2. 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.
    • Was ich nicht versteh ist "switch (wmId)" wenn du nur eine Abfrage hast. ._.

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


      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:


      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.