INIT.C
// 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 1993 - 1998 Microsoft Corporation.  All Rights Reserved. 
// 
//  MODULE:   init.c 
// 
//  PURPOSE:   Performs application and instance specific initialization. 
// 
//  FUNCTIONS: 
//    InitApplication() - Initializes window data and registers window. 
//    InitInstance() - Saves instance handle and creates main window. 
// 
//  COMMENTS: 
// 
 
#include <windows.h>            // required for all Windows applications 
#ifdef WIN16 
#include "win16ext.h"           // required only for win16 applications 
#endif 
#include "globals.h"            // prototypes specific to this application 
 
HINSTANCE hInst;                // current instance 
 
char szAppName[9];              // The name of this application 
char szTitle[40];               // The title bar text 
 
// 
//  FUNCTION: InitApplication(HINSTANCE) 
// 
//  PURPOSE: Initializes window data and registers window class. 
// 
//  PARAMETERS: 
//    hInstance - The handle to the instance of this application that 
//          is currently being executed. 
// 
//  RETURN VALUE: 
//    TRUE - Success 
//    FALSE - Initialization failed 
// 
//  COMMENTS: 
// 
//    This function is called at initialization time only if no other 
//    instances of the application are running.  This function performs 
//    initialization tasks that can be done once for any number of running 
//    instances. 
// 
//    In this case, we initialize a window class by filling out a data 
//    structure of type WNDCLASS and calling the Windows RegisterClass() 
//    function.  Since all instances of this application use the same 
//    window class, we only need to do this when the first instance is 
//    initialized. 
// 
 
BOOL InitApplication(HINSTANCE hInstance) 
{ 
    WNDCLASS  wc; 
 
    // Load the application name and description strings. 
 
    LoadString(hInstance, IDS_APPNAME, szAppName, sizeof(szAppName)); 
    LoadString(hInstance, IDS_DESCRIPTION, szTitle, sizeof(szTitle)); 
 
    // Fill in window class structure with parameters that describe the 
    // main window. 
 
    wc.style         = CS_HREDRAW | CS_VREDRAW; // Class style(s). 
    wc.lpfnWndProc   = (WNDPROC)WndProc;        // Window Procedure 
    wc.cbClsExtra    = 0;                       // No per-class extra data. 
    wc.cbWndExtra    = 0;                       // No per-window extra data. 
    wc.hInstance     = hInstance;               // Owner of this class 
    wc.hIcon         = LoadIcon(hInstance, szAppName); // Icon name from .RC 
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW); // Cursor 
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Default color 
    wc.lpszMenuName  = szAppName;               // Menu name from .RC 
    wc.lpszClassName = szAppName;               // Name to register as 
 
    // Register the window class and return FALSE if unsuccesful. 
 
    if (!RegisterClass(&wc)) 
    { 
        return FALSE; 
    } 
    // 
    // **TODO** Call module specific application initialization functions here. 
    // 
 
    return TRUE; 
} 
 
 
// 
//  FUNCTION:  InitInstance(HINSTANCE, int) 
// 
//  PURPOSE:  Saves instance handle and creates main window. 
// 
//  PARAMTERS: 
//    hInstance - The handle to the instance of this application that 
//          is currently being executed. 
//    nCmdShow - Specifies how the main window is to be diplayed. 
// 
//  RETURN VALUE: 
//    TRUE - Success 
//    FALSE - Initialization failed 
// 
//  COMMENTS: 
//    This function is called at initialization time for every instance of 
//    this application.  This function performs initialization tasks that 
//    cannot be shared by multiple instances. 
// 
//    In this case, we save the instance handle in a static variable and 
//    create and display the main program window. 
// 
 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 
{ 
    HWND    hwnd; // Main window handle. 
 
    // Save the instance handle in static variable, which will be used in 
    // many subsequence calls from this application to Windows. 
 
    hInst = hInstance; // Store instance handle in our global variable 
 
    // Create a main window for this application instance. 
    hwnd = CreateWindow(szAppName,           // See RegisterClass() call. 
                        szTitle,             // Text for window title bar. 
                        WS_OVERLAPPEDWINDOW, // Window style. 
                        CW_USEDEFAULT, 0,    // Use default positioning 
                        CW_USEDEFAULT, 0,    // Use default size 
                        NULL,                // Overlapped has no parent. 
                        NULL,                // Use the window class menu. 
                        hInstance,            
                        NULL);                
     
    // If window could not be created, return "failure" 
    if (!hwnd) 
        return FALSE; 
 
    // 
    // **TODO** Call module specific instance initialization functions here. 
    // 
 
    // Make the window visible; update its client area; and return "success" 
    ShowWindow(hwnd, nCmdShow); // Show the window 
    UpdateWindow(hwnd);         // Sends WM_PAINT message 
 
    return TRUE;                // We succeeded... 
}