Fehler suche



  • Hi ich brauch Hilfe. Ich finden einfach nicht denn Fehler

    #include <windows.h>
    #include <stdlib.h>
    #include <string.h>
    #include <tchar.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    const char szAppName[] = "Ein eigenes Fenster";
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInterstance,
    				   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);
    
       wc.lpszClassName =  szAppName;
       wc.lpszMenuName  =  NULL;
    
       RegisterClass(&wc);
    
       hWnd = CreateWindow(szAppName,
                           "Titelleiste",
                           WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Fensterbreite              */
                           CW_USEDEFAULT,          /* Fensterhoehe               */
                           NULL,
                           NULL,
                           hInstance,
                           NULL);
    
    ShowWindow(hWnd, iCmdShow);
       UpdateWindow(hWnd);
       while (GetMessage(&msg, NULL, 0,0))
       {
       	TranslateMessage(&msg);
       	DispatchMessage(&msg);
       }
    
       return msg.wParam;
    }
    

    Ich bin für jede Hilfe dankbar



  • Hab keine Lust auf Fehlersuchspiele, wenn ich sogar nicht weiß, nach was ich suchen muss.


  • Mod

    Und wo ist Sie Deine tolle Fensterprozedur, WndProc?



  • Nim diesen Code, der funktioniert:

    #include <windows.h>
    
    LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
    
    char szWinName[] = "MyWin"; /* Name der Fensterklasse */
    
    int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, 
                       LPSTR lpszArgs, int nWinMode)
    {
      HWND hwnd;
      MSG msg;
      WNDCLASSEX wcl;
    
      /* Eine Fensterklasse definieren */
      wcl.cbSize = sizeof(WNDCLASSEX); 
    
      wcl.hInstance =     hThisInst; /* Handle zu dieser Instanz */
      wcl.lpszClassName = szWinName; /* Name der Fensterklasse */
      wcl.lpfnWndProc =   WindowFunc; /* Fenster Funktion */
      wcl.style =         0; /* Standart Stil */
      wcl.hIcon = 		  LoadIcon(NULL, IDI_APPLICATION); /* Standard Icon */
      wcl.hIconSm = 	  LoadIcon(NULL, IDI_WINLOGO); /* schmales icon */
      wcl.hCursor = 	  LoadCursor(NULL, IDC_ARROW); /* cursorstil */
      wcl.lpszMenuName =  NULL; /* kein Menü */
      wcl.cbClsExtra =    0; /* Keine zusätzliche Klassen Speicher */
      wcl.cbWndExtra =    0; /*Keine zusätzlicher Fenster Speicher */
      wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); /* Macht den Fenster Hintergrund weiß. */
    
      /* Registriert die Fensterklassse. */
      if(!RegisterClassEx(&wcl)) return 0;
    
      /* Die Fenster Klasse ist registriert, einen Fenster kann erstellt werden. */
      hwnd = CreateWindow(
        szWinName, /* Name der Fensterklasse */
        "Windows Test", /* Titel */
        WS_OVERLAPPEDWINDOW, /* Fenster Stil - normal */
        CW_USEDEFAULT, /* X Koordinate - Windows entscheidet */
        CW_USEDEFAULT, /* Y Koordinate - Windows entscheidet */
        CW_USEDEFAULT, /* Breite - Windows entscheidet */
        CW_USEDEFAULT, /* Höhe - Windows entscheidet */
        HWND_DESKTOP, /* Kein übergeordnetes Fenster */
        NULL, /*Kein Menü */
        hThisInst, /* handle auf diese Programminstanz*/
        NULL /* Keine zusätzliche Argumente */
      );
    
      /* Das Fenster anzeigen. */
      ShowWindow(hwnd, nWinMode);
      UpdateWindow(hwnd);
    
      /* Erstellen einer Nachricht Schleife. */
      while(GetMessage(&msg, NULL, 0, 0))
      {
        TranslateMessage(&msg); /* Übersetzen Tastatur Nachrichten */
        DispatchMessage(&msg); /* Kontrolle an Windows übergeben */
      }
      return msg.wParam;
    }
    
    /* Diese Funktion wird von Windows aufgerufen und enthält
    Nachrichten von der Nachricht Warteschlange.*/
    LRESULT CALLBACK WindowFunc(HWND hwnd,
                                UINT message,
                                WPARAM wParam,
                                LPARAM lParam)
    {
      switch(message) {
        case WM_DESTROY: /* Das Programm beenden */
          PostQuitMessage(0);
          break;
        default:
          /* Alle nicht in dem obigen switch-Block
    		 festgestellten Nachrichen werden von Windows verarbeitet*/
          return DefWindowProc(hwnd, message, wParam, lParam);
      }
      return 0;
    }
    

Anmelden zum Antworten