Probleme mit Quellcode auf Borland C++Builder
-
Moin,
ich habe folgendes (schwerwiegendes?)Problem:
Während meiner Ausbildung wurde mir C/C++ auf dem Borland C++ Compiler vermittelt. Dies beschränkte sich aber auf simple Dos-Konsolenanwendungen.
Nach meiner Ausbildung stieg ich auf den MS Visual C++ compiler um und im Betrieb wurde mir die Windowsprogrammierung ohne Zuhilfenahme der MFC beigebracht; sprich echte API Programmierung.
Kleines Beispiel:
#include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); //Deklaration der Windows-Nachrichten-Prozedur int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow) { char szName[] = "Fensterklasse"; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; // CS = "class style" wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hI; wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = szName; RegisterClass (&wc); HWND hwnd = CreateWindow (szName, "", WS_SYSMENU | WS_THICKFRAME, 0, 0, 200, 100, NULL, NULL, hI, NULL); ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); // Nachrichten-Schleife MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } // Windows-Nachrichten-Prozedur LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20); EndPaint (hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); }
Da ich der Meinung bin, der MS Compiler ist nicht so gut wie der von Borland bin ich wieder umgestiegen.
Leider kann ich jetzt keinen meiner Quelltexte mehr Compilieren. Woran liegt das. Sagt mir jetzt bitte nicht man kann auf dem Borland Compiler nicht API Programmieren sondern muss mit vordefinierten Bibliotheken wie VCL proggen.
Edit:
Bitte die Code-Tags benutzen. Danke![ Dieser Beitrag wurde am 24.04.2003 um 16:22 Uhr von Jansen editiert. ]
-
Original erstellt von <AZUBINrOne>:
Leider kann ich jetzt keinen meiner Quelltexte mehr Compilieren.Was genau heisst das?
-
Das heißt, dass ich z.B. diesen Quelltext ohne eine Fehlermeldung oder Warnung auf dem Microsof Compiler compilieren kann... und dann ein kleines putziges Programm habe, welches lediglich ein Fenster ist.... und derselbe Quelltext auf dem Borland Compiler über 50 Warnungen und Fehlermeldungen auswirft.
Kann das ne Einstellungssache des Compilers sein; das der MS Compiler schon automatisch auf Win32 API Anwendungsprojekte eingestellt ist oder kann Borland das wirklich nicht verarbeiten. Eigentlich müsste man doch auf jedem Compiler, mit dem man Windows Programme schreiben kann, ganz puristisch WinAPI proggen.
Wenn ich jetzt mit der Microsoft Foundation Class Library unter Microsoft VC++ proggen würde, wäre dass verständlich ,dass der Borland das nicht frisst, der hat ja dafür die VCL.
-
Wie soll dir jemand helfen, wenn du die Fehlermeldungen nicht zeigst?
Grundsätzlich lassen sich mit dem BCB sowohl reine API-Programme als auch MFC-Anwendungen erstellen. Und auch dein Beispielcode lässt sich hier problemlos kompilieren.
PS.
Ich gehe davon aus, dass du weisst, wie man ein Projekt für eine API-Anwendung erstellt?
Datei -> Neu -> Konsolenexperte -> rechts alle Haken raus bis auf 'Multithreaded' (BCB5/6)[ Dieser Beitrag wurde am 24.04.2003 um 16:47 Uhr von Jansen editiert. ]
-
Hi
Der Code geht auch mit BCB 4.0!!!
mit Fenstertyp = Window(GUI))
nicht mit " = Konsole ???
-
hallo,
@<AZUBINrOne>:
das programm lässt sich ohne die kleineste änderung übersetzen, man erhält als fensterausgabe ein kleines fensterchen mit der aufschrift:
"ich bin ein fenster."
ich verwende den borland C++Builder 5.0 Enterprise
und bin folgendermaßen vorgegangen um das ding zu compilieren:
1. neu | konsolenanwendung (nur zur tarnung, da es den typ win-api nicht gibt).
2. im dialog folgende optionen: C++ | Multithreads dann OK.
3. alles löschen was im editor steht, deinen code reinkopieren.
4. auf grünen pfeil drücken zum compilieren und gleichzeitigen ausführen, programm läuft, keine fehler, warnungen, hinweise oder sonst irgendwas...mfg
murphysto
-
Ähmm .... welcher der Punkte war denn noch nicht erwähnt worden, oder nicht offensichtlich ("alles löschen was im editor steht")?