extern   LONG FAR PASCAL WinDLLWindowProc
(
    HWNDahWndWinDLL,
    unsigned auMessage,
    WORDawParam,
    LONGalParam
)
{
switch (auMessage)
    {
    case WM_ERASEBKGND:
    if (!IsIconic( ahWndWinDLL ))
        {
        // Nicht symbolisiert, Standardbearbeitung.
        return DefWindowProc(ahWndWinDLL, auMessage,
            awParam, alParam );
        }
    else
        {
        // In WM_PAINT mit WM_ICONERASEBKGND bearbeiten.
        return TRUE;
        }

    case WM_PAINT:
    {
    autoPAINTSTRUCT   aPS;

    if (BeginPaint( ahWndWinDLL, &aPS ))
        {
        if (!IsIconic( ahWndWinDLL ))
        {
        // Fenster nicht symbolisiert, normal bearbeiten.
                                .
                                .
                                .
        }
        else  // Symbolisiert, Instanzsymbol ausgeben.
        {
        // Zuerst den Hintergrund transparent machen.
        DefWindowProc(ahWndWinDLL, WM_ICONERASEBKGND,
              (WORD)aPS.hdc, 0L );
        // Dann das Symbol malen.
        DrawIcon(aPS.hdc, 0, 0,    // Nicht zentriert!
                 (HICON)GetWindowWord( ahWndWinDLL, 0 ) );
        }
        EndPaint( ahWndWinDLL, &aPS );
        }
    }
    break;

    case WM_QUERYDRAGICON:
    // Benutze das Instanzsymbol, wenn der Anwender das
    // Symbol verschiebt.
    return MAKELONG( GetWindowWord( ahWndWinDLL, 0 ), 0 );

        
        
        

   default:
    return DefWindowProc(ahWndWinDLL, auMessage,
                 awParam, alParam );
    }
return 0L;
}
