Fenster anzeigen



  • Hi,
    ich habe ein kleines Problem.
    Und zwar habe ich mir auf Win-Api.de das Tutorial, welches das Anzeigen eines Fensters erklärt, angesehen. Nachdem ich den Code fertig hatte, konnte ich das Projekt leider nicht kompilieren, da mit Visual C++ eine Fehlermeldung ausgibt:

    1>------ Erstellen gestartet: Projekt: Windows, Konfiguration: Debug Win32 ------
    1>Verknüpfen...
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)" in Funktion "_WinMain@16".
    1>G:\Users\fabian\Documents\Visual Studio 2008\Projects\Windows\Debug\Windows.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://g:\Users\fabian\Documents\Visual Studio 2008\Projects\Windows\Windows\Debug\BuildLog.htm" gespeichert.
    1>Windows - 2 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Habe nochmal nachgesehen, ob alles stimmt und konnte keinen Fehler entdecken. Könnt ihr mir da helfen?

    Edit: Hoppla, Code vergessen >_<

    #include <windows.h>
    #include <iostream>
    
    const char szAppName[] = "Hallo Welt!";
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    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);
    	wc.lpszClassName = szAppName;
    
    	RegisterClass(&wc);
    
    	hWnd = CreateWindow(szAppName, "Hallo Welt Titel!", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
    	ShowWindow(hWnd, iCmdShow);
    	UpdateWindow(hWnd);
    }
    


  • haiyyu schrieb:

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    

    Du hast diese Funktion nicht definiert.



  • Danke für die Antwort 🙂
    Wie muss die definition aussehen, damit der Code funktioniert?



  • Eine ganz einfache könnte für den Anfang so aussehen:

    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) ;
    }
    

Anmelden zum Antworten