Fehler bei Mini-programm



  • [

    #define STRICT
    
    #include<windows.h>
    
    LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
    
    const char szAppName[] = "TEST";
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
    {
    	HWND hWnd;
    	MSG msg;
    	WNDCLASS wc;
    
    	wc.style			= CS_HREDRAW | CS_VREDRAW;
    	wc.lpfnWndProc		= WndProc;
    	wc.cbClsExtra		= 0;
    	wc.cbWndExtra		= 0;
    	wc.hInstance		= hInstance;
    	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);
    	wc.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
    	wc.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
    
    	RegisterClass(&wc);
    
    	hWnd = CreateWindow(szAppName,
    						"TitelleistenText",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT, //X-position
    						CW_USEDEFAULT, //Y-Position
    						CW_USEDEFAULT, //width
    						CW_USEDEFAULT, //height
    						NULL,
    						NULL,
    						hInstance,
    						NULL);
    
    	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 )
    {
    	switch(message)
    	{
    	case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    			return 0;
    		}
    	}
    
    	return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    Das habe ich mir aus einem Tut zusammengebastelt.

    Es geht soweit auch, allerdings bekomme ich eine Fehlermeldung von Windows direkt, dass die Datei ein Problem festgestellt hat und beendet werden muss.

    Jetzt wollte ich mal fragen, ob es bei euch geht oder, ob ihr wisst, wo der Fehler liegt.

    MfG



  • "ClassName" fehlt :

    (...) 
     wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
     wc.hbrBackground    = (HBRUSH) GetStockObject(WHITE_BRUSH);
    
     wc.lpszClassName    = szAppName; // <- !
    
     RegisterClass(&wc);
    (...)
    


  • Ach, warum sind alle meine Fehler immer so klein und unscheinbar?

    Trotzdem Danke, ich habe auch wc.lpszMenuName vergessen. Ich hab einfach eine Code-Box ausgelassen 😕



  • oder man füllt das struct erst mit Nullen und sollte es auch ohen gesetzten title funktionieren

    memset(&wc,0, sizeof(WNDCLASS))



  • ss schrieb:

    oder man füllt das struct erst mit Nullen und sollte es auch ohen gesetzten title funktionieren

    memset(&wc,0, sizeof(WNDCLASS))

    Was ist denn der Titel ?
    Also eigentlich ist es uneffizienter, wenn man erst die gesamte Struktur auf 0 setzt und anschließend wieder 90% der Member explizit füllt 🕶 . ( ➡ Dann lieber alles explizit setzen und die paar eben auf 0 setzen, die man nicht benötigt.)


Anmelden zum Antworten