DLLSKEL - Based on GEN32

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.


PURPOSE:
    To demonstrate how to construct a simple Win32 DLL and implicitly load
    it from a Win32 application.  The application calls two of the DLL's
    exported functions.

USES:
    Use this sample as a starting point for building Win32 DLLs.

COMMENTS:
    No module definition file is used in this sample because Win32
    applications do not export functions and all settings in a module
    definition file can be set with linker command-line switches.

    The 32-bit C/C++ compiler supports two new keywords for exporting
    functions from Win32 DLLs and importing them into applications:

      __declspec(dllexport)     // Used to declare exported functions
      __declspec(dllimport)     // Used to declare imported functions

    Both of these keywords go before the function declaration, as in:

       __declspec(dllexport) int FunctionName (int param1, float param2);
       __declspec(dllimport) int FunctionName (int param1, float param2);

    A DLL exports a function by putting the __declspec(dllexport)
    keyword in front of the function declaration and then using the
    -implib:DLLName.LIB linker command line argument.

    An application can then import the function by declaring it with the
    __declspec(dllimport) keyword and linking to the DLL's import library.


    In general, Win32 DLLs should be built to handle multithreaded
    applications robustly because DLLs cannot control which types of
    applications call them.  To do so, link with the multithreaded
    runtime libraries, use the /MT switch, and then make sure that
    global variables and other shared resources (file handles, dynamically-
    allocated memory, etc) are protected by critical sections or mutexes.
    A good place to initialize critical sections and mutexes is in the
    DLL_PROCESS_ATTACH message of DllMain().

MODULE MAP:
  The following files implement the application (APPSKEL.EXE):

    Dispatch- Message dispatching routines
    WinMain - Calls initialization functions and processes the message loop
    AppSkel - Implements the windows procedure for the main application window
    Init    - Performs application and instance specific initialization
    About   - Defines a standard about dialog box.
    Misc    - Defines the applications specific commands not related to
                a specific module.

  The following files implement the DLL (DLLSKEL.DLL):

    DLLMain - The DLL's entry point function
    Exports - Contains the DLL's exported functions


    MAKEFILE     - The application's makefile.  Also executes DLL's makefile.
    DLLSKEL.MAK  - The DLL's makefile


