Fehlermeldungen bei Compilieren von einfachen Formular
-
Hallo!
Ich habe versucht, mit Microsoft Visual Studio 2005 C++ ein einfaches Formular zu erstellen (aus einem Lehrbuch).
Ich bekomme aber beim kompilieren immer Fehlermeldungen.
Zuerst bekam ich eine, die ich aber unter
Projekteigenschaften -> C/C++ -> Codegenerierung -> Laufzeitbibliothek -> Multithreaded-Debug-DLL (/MDd)
ausschalten konnte.
Nun erhalte ich folgende Fehlermeldungen:
------ Erstellen gestartet: Projekt: Formular, Konfiguration: Debug Win32 ------
Kompilieren...
cMain.cpp
.\cMain.cpp(3) : error C2061: Syntaxfehler: Bezeichner 'UNIT'
.\cMain.cpp(5) : error C2065: 'message': nichtdeklarierter Bezeichner
.\cMain.cpp(5) : error C2050: Switch-Ausdruck ist keine Ganzzahl
.\cMain.cpp(9) : error C3861: "PostQiutMessage": Bezeichner wurde nicht gefunden.
.\cMain.cpp(14) : error C2065: 'wparam': nichtdeklarierter Bezeichner
.\cMain.cpp(14) : error C2065: 'lparam': nichtdeklarierter Bezeichner
.\cMain.cpp(25) : error C2440: '=': 'LRESULT (__stdcall *)(HWND)' kann nicht in 'WNDPROC' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
.\cMain.cpp(31) : error C3861: "GetStockOject": Bezeichner wurde nicht gefunden.
.\cMain.cpp(40) : error C3861: "CreateWindowEX": Bezeichner wurde nicht gefunden.
Das Buildprotokoll wurde unter "file://c:\Visual C++\Projects\Formular\Formular\Debug\BuildLog.htm" gespeichert.
Formular - 9 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Hier der Code:
#include <windows.h> LRESULT CALLBACK WindowProc(HWND hwnd, UNIT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_DESTROY: { PostQiutMessage(0); break; } return 0; } return (DefWindowProc(hwnd, message, wparam, lparam)); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { WNDCLASSEX winclass; const char AppName[] = "myClass"; winclass.cbSize = sizeof(WNDCLASSEX); winclass.style = CS_HREDRAW; winclass.lpfnWndProc = WindowProc; winclass.cbClsExtra = 0; winclass.cbWndExtra = 0; winclass.hInstance = hInstance; winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); winclass.hCursor = LoadCursor(NULL, IDC_ARROW); winclass.hbrBackground = (HBRUSH) GetStockOject(WHITE_BRUSH); winclass.lpszMenuName = NULL; winclass.lpszClassName = AppName; winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!(RegisterClassEx(&winclass))) return 0; CreateWindowEX (NULL, AppName, "Mein Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 400, 300, NULL, NULL, hInstance, NULL); MSG message; while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return 0; }Kann mir jemand sagen, wie man die Fehler verhindern kann, oder kann mir jemand einen anderen Quellcode senden, wo das erzeugen eines Formulars funktioniert?
Danke
-
PinkoPalino schrieb:
.\cMain.cpp(3) : error C2061: Syntaxfehler: Bezeichner 'UNIT'
.\cMain.cpp(9) : error C3861: "PostQiutMessage": Bezeichner wurde nicht gefunden.
.\cMain.cpp(31) : error C3861: "GetStockOject": Bezeichner wurde nicht gefunden.schlecht abgetippt würde ich meinen

- UINT
- PostQuitMessage
- GetStockObject
die meisten anderen fehler sind eine folge davon...
:xmas2:
-
ten schrieb:
PinkoPalino schrieb:
.\cMain.cpp(3) : error C2061: Syntaxfehler: Bezeichner 'UNIT'
.\cMain.cpp(9) : error C3861: "PostQiutMessage": Bezeichner wurde nicht gefunden.
.\cMain.cpp(31) : error C3861: "GetStockOject": Bezeichner wurde nicht gefunden.schlecht abgetippt würde ich meinen

- UINT
- PostQuitMessage
- GetStockObject
die meisten anderen fehler sind eine folge davon...
:xmas2:Ich weiß zwar nicht, was zu mit 'schlecht abgetippt' meinst, aber sein Problem ist schlicht und einfach eine nicht vorhandene oder fehlerhafte SDK-Einbindung.
Guck Dir mal den Thread an, da wird beschrieben, wie man die Windows-Header korrekt einbindet
.
-
CodeFinder schrieb:
Ich weiß zwar nicht, was zu mit 'schlecht abgetippt' meinst...
und ich wusste nicht, dass windows api-funktionen wie PostQiutMessage und GetStockOject hat. naja, hab' ich eben wieder was dazugelernt...
-
Oha, sorry
, nit genau gelesen, jo klar hast Recht :xmas1:
-
Danke!
Immer diese blöden Fehler. Jetzt funktionierts!
PS:
Ein weiterer kleiner Fehler is im obigen Quellcode:
In Zeile 40 bei CreateWindowEx:
Das x zum Schluss hatte ich groß geschrieben, kommt aber klein.Hier der neue Quelltext:
#include <windows.h> LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_DESTROY: { PostQuitMessage(0); break; } return 0; } return (DefWindowProc(hwnd, message, wparam, lparam)); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { WNDCLASSEX winclass; const char AppName[] = "myClass"; winclass.cbSize = sizeof(WNDCLASSEX); winclass.style = CS_HREDRAW; winclass.lpfnWndProc = WindowProc; winclass.cbClsExtra = 0; winclass.cbWndExtra = 0; winclass.hInstance = hInstance; winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); winclass.hCursor = LoadCursor(NULL, IDC_ARROW); winclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); winclass.lpszMenuName = NULL; winclass.lpszClassName = AppName; winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!(RegisterClassEx(&winclass))) return 0; CreateWindowEx(NULL, AppName, "Mein Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 400, 300, NULL, NULL, hInstance, NULL); MSG message; while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return 0; }