Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"Compiler"«
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup". MSVCRTD.lib
Fehler 2 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. Fensterklasse.exe 1
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
// M A I N . C P P ///////////////////////////////////// #include "CWindow.hpp" int __stdcall WinMain(HINSTANCE instance, HINSTANCE prevInstance, char* cmdLine, int show) { return 0; } // //////////////////////////////// // C W I N D O W . C P P // I N C L U D E S ///////////////////////////////////// #include "CWindow.hpp" // C L A S S /////////////////////////////////////////// // ///////////////////////////////////////////////////// // P R I V A T E /////////////////////////////////////// WINDOW::WINDOW (void) { } // WINDOW() WINDOW::~WINDOW (void) { } // ~WINDOW() LRESULT CALLBACK WINDOW::WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { return DefWindowProc (hWnd, msg, wParam, lParam); } // WndProc() // ///////////////////////////////////////////////////// // P U B L I C ///////////////////////////////////////// void WINDOW::Create (WNDCX* wc) { } // Create() void WINDOW::Show (int cmdShow) { } // Show() void WINDOW::Update (void) { } // Update() int WINDOW::Close (void) { return 0; } // Close() // //////////////////////////////// // C W I N D O W . H P P #if !defined (_CWINDOW_HPP_) #define _CWINDOW_HPP_ // I N C L U D E S ///////////////////////////////////// #include <windows.h> // S T R U C T S /////////////////////////////////////// // WNDCLASSEX typedef struct _wndclassex { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; } WNDCX, *PWNDCX; // C L A S S /////////////////////////////////////////// class WINDOW { // ///////////////////////////////////////////////// // P R I V A T E /////////////////////////////////// private: // M e m b e r _ F u n c t i o n s WINDOW (void); ~WINDOW (void); LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); // ///////////////////////////////////////////////// // P U B L I C ///////////////////////////////////// public: // M e m b e r _ V a r i a b l e s ///////////// HWND hWnd; MSG msg; // M e m b e r _ F u n c t i o n s ///////////// void Create (WNDCX* wc); void Show (int cmdShow); void Update (void); int Close (void); }; // class WINDOW #endif |
Administrator
Zitat von »"Deviloper"«
Das ist der schlechteste Programmierstil den ich seid langem gesehen habe.
Zitat von »"Deviloper"«
Was gibt das bitte? Das ist der schlechteste Programmierstil den ich seit langem gesehen habe. Irgendwie nen bissel abklatsch von Patrick drin, dann nen paar Sachen, auf die nichtmal ein Anfänger kommt so zu machen, usw Also das ist echt grausig. Und ja der Fehler ist, das du_CONSOLE als Preprozessorparameter gesetzt hast.
Zitat von »"David_pb"«
So beim Überfliegen:
1 ) Keine WinAPI Macros auflösen
2 ) Kommentierung überdenken (deine wirkt irgendwie hässlich und zerreißt den Code)
3 ) Keine typedef structs mehr verwenden
4 ) Daten mehr kapseln (Membervariablen nicht öffentlich verfügbar machen z.B.)
5 ) Const-Correctness beachten
6 ) Referenzen sind Zeigern vorzuziehen
7 ) Keine vorhandenen Strukturen "neu erfinden"
8 ) Unnötigen Code vermeiden
Jo, das war erstmal das was ich beim groben drüberschauen entdecken konnt!
Zitat von »"Deviloper"«
Soo ...
1 ) APIENTRY, LPSTR, usw.
2 ) Nein. Das ist einfach zu viel und z.Teil auch falsch
3 ) Joa und selbst wenn du es nicht entfernt hättest. typedef struct nutzte man in C, um den Strukturen Namen zu geben. In C++ kannst du einfach den Namen hinter struct angeben.
4 ) private in dem Fall keine. protected sollte m_hWnd sein. MSG sollte überhaupt keine Membervariable sein. Der Konstruktor sollte public sein. Der Destruktor ebenfalls.
5 ) Nicht "hä". Funktionen die nichts an den Membervariablen ändern, sind const. Parameter die nicht verändert werden: const.
6 ) z.B.: du kannst bei create besser const ::WNDCLASSEX& als Parameter nehmen. (s. 5., const correctness)
8 ) z.B.: Konstruktor, Destruktor usw. ... wenn du jetzt m_hWnd mit NULL initialisieren würdest(Initialisierungsliste) und im Destruktor guckst ob das Fenster existiert und wenn ja es mit DestroyWindow zerstörst, dann ist der Code nicht überflüssig.
Werbeanzeige