#include "windows.h"                    // fr alle Windows-Anwendungen
#include "generic.h"                    // speziell fr dies Programm

extern  int PASCAL      WinMain
(
        HANDLE          hInstance,      // aktuelle Instanz
        HANDLE          hPrevInstance,  // vorige Instanz (unbenutzt)
        LPSTR           lpCmdLine,      // Kommandozeile (unbenutzt)
        int             nCmdShow        // Anfangsfenster (unbenutzt)
)
{
auto    FARPROC         lpProcAbout;    // Zeiger auf "ber"-Funktion

lpProcAbout = MakeProcInstance( About, hInstance );

DialogBox( hInstance,                   // aktuelle Instanz
           "AboutBox",                  // Ressourcen-Vorlage
           0,                           // Elternfenster (unbenutzt)
           lpProcAbout );               // Instanzadresse

FreeProcInstance( lpProcAbout );

return 0;
}

extern  BOOL FAR PASCAL About
(
        HWND            hDlg,           // Fensternummer des Dialogs
        unsigned        message,        // Nachricht
        WORD            wParam,         // Nachrichtenparameter
        LONG            lParam
)
{
auto    RECT            aRt;

switch (message)
    {
    case WM_INITDIALOG:                 // Dialog initialisieren
        // Dialogfenster zentrieren
        GetWindowRect( hDlg, &aRt );
        OffsetRect( &aRt, -aRt.left, -aRt.top );
        MoveWindow( hDlg,
                ((GetSystemMetrics( SM_CXSCREEN ) -
                        aRt.right ) / 2 + 4) & ~7,
                 (GetSystemMetrics( SM_CYSCREEN ) -
                        aRt.bottom) / 2,
                aRt.right, aRt.bottom, 0 );
        return TRUE;

    case WM_COMMAND:                    // Befehle
        switch (wParam)
            {
            case IDOK:                  // "OK"-Schalter bettigt
                //
                // Hier knnte man die Arbeit durchfhren
                //
            case IDCANCEL:              // Dialog schlieen
                EndDialog( hDlg, TRUE );  // Dialogende
                return TRUE;
            }
        break;
    }
return FALSE;                           // Nachricht nicht bearbeitet
}
