/*--------------------------------------------------------------------------------
 
    Name: WindowProc
 
    Description:
        Behandlungsroutine für eingehende Nachrichten unseres Fensters.
 
    Parameters:
        hwnd - Das Handle des Fensters, für das die Nachricht gedacht ist.
        msg - Die Nachrichten-ID, die an das Fenster gesand wurde.
        wparam - Parameter 1 der Nachricht.
        lparam - Parameter 2 der Nachricht.
 
    Return Value:
        0, wenn die Nachricht bearbeitet wurde.
 
    Remarks:
        Auf den Tastendruck [ESC] wird das Flag zum Beenden des Programms
        gesetzt.
 
--------------------------------------------------------------------------------*/
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
        //
        // Auf Tastendruck von [ESC] das Flag zum Beenden des Programms setzen
        //
        case WM_KEYDOWN:
            switch(wparam)
            {
                case VK_ESCAPE:
                    g_Quit = true;
                    break;
            }
 
            return 0;
 
        //
        // Bei eingehender WM_CLOSE-Nachricht das Programm beenden
        //
        case WM_CLOSE:
            g_Quit = true;
 
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage(0);
 
            return 0;
    }
 
    //
    // Alle unbehandelten Nachrichten an die Standard-Behandlung weiterleiten
    //
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}