Wo liegt hier der fehler?
-
Hi alle zusammen
Es ist so ich habe früher c++/cli programmiert bin jetzt noch dabei mir WinAPI an zu eignen.
Jetzt meine frage kann mir bitte jemand sagen warum hier ein startup fehler vor liegt?
[code]
if(!RegisterClass (&wndclass)) //Hier liegt der fehler aber wo?
{
.....
}MFG Basti
-
gib das & weg
-
Nee da sagt er mir immer noch das gleiche
Zugriffsverletzung beim Lesen an Position 0xcccccccc
-
Zeig mal die Deklaration und Initialisierung von
wndclass
.Grüssli
-
Das ist der gesamte code.
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszMenuName = szAppName; if(!RegisterClass (wndclass)) { //UniCode- Compilierung ist die einzige realistische Fehlermöglichkeit MessageBox(NULL, TEXT("Programm arbeit mit Unicode und setzt WindowsNT vorraus!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow (szAppName, //Name der Fensterklasse TEXT ("Das erste echte Programm"), //Fenstertitel WS_OVERLAPPEDWINDOW, //Fensterstil CW_USEDEFAULT, //x-Position des Fensters CW_USEDEFAULT, //y-position des Fensters CW_USEDEFAULT, //Fensterbreite CW_USEDEFAULT, //Fensterhöhe NULL, //übergeordnetes Fenster NULL, //Menü hInstance, //Programm-Kopiezähler NULL); //zusätzliche Parameter ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage (msg, NULL, 0,0)) { TranslateMessage(msg); DispatchMessage(msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, ps); GetClientRect(hwnd, rect); DrawText (hdc, TEXT("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint (hwnd, ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
das & habe ich erstmal wieder eingebaut
-
In der letzten Zeile deiner Fensterklasse hast du zweimal die Zeile
wndclass.lpszMenuName = szAppName;
stattdessen muss es heißen
wndclass.lpszClassName = szAppName;Wenn du schon das "berühmte" erste Windows-Programm von Petzold abkupferst, dann vermeide bitte Schreibfehler.
Übrigens immer schön Referenzen(&) verwenden wo es das Beispiel tut, aber da wird dir dein Compiler sicher auf die Sprünge helfen.
-
Ok danke.
Den fehler habe ich wohl über lesen. Ich werde versuchen mich dran zu halten und schreibfehler zu vermeiden