// A complete windows program shell

#define WIN32_LEAN_AND_MEAN 

#include <windows.h> 

#include <windowsx.h>

#include <stdio.h>

#include <math.h>

 

// defines for windows

#define WINDOW_CLASS_NAME "WINCLASS1"

 

// GLOBALS

HWND main_window_handle = NULL; // save the window handle

 

// FUNCTIONS

LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg,

                            WPARAM wparam, LPARAM lparam)

{ // this is the main message handler of the system

  PAINTSTRUCT   ps;  // used in WM_PAINT

  HDC      hdc; // handle to a device context

 

  switch(msg) // process the message

  { case WM_CREATE: // do initialization stuff here

    { return(0);

    } break;

 

    case WM_PAINT: // simply validate the window

    { hdc = BeginPaint(hwnd,&ps);   

      EndPaint(hwnd,&ps);

      return(0);

    } break;

 

    case WM_DESTROY:  // kill the application  

    { PostQuitMessage(0);

      return(0);

    } break;

 

    default:break;

  }

 

  // process any messages that we didn't take care of

  return (DefWindowProc(hwnd, msg, wparam, lparam));

}

 

// ********************  WINMAIN **************************

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,

              LPSTR lpcmdline, int ncmdshow)

{  WNDCLASS winclass; // holds the class we create

   HWND    hwnd;          // generic window handle

   MSG     msg;      // generic message

 

   // first fill in the window class stucture

   winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW

                  | CS_VREDRAW;

   winclass.lpfnWndProc    = WindowProc;

   winclass.cbClsExtra     = 0;

   winclass.cbWndExtra     = 0;

   winclass.hInstance = hinstance;

   winclass.hIcon    = LoadIcon(NULL, IDI_APPLICATION);

   winclass.hCursor  = LoadCursor(NULL, IDC_ARROW);

   winclass.hbrBackground = GetStockObject(BLACK_BRUSH);

   winclass.lpszMenuName  = NULL;

   winclass.lpszClassName = WINDOW_CLASS_NAME;

 

   // register the window class

   if (!RegisterClass(&winclass))

      return(0);

 

   // create the window

   if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME,

         "SR Empty Win Shell",WS_OVERLAPPEDWINDOW | WS_VISIBLE,

          0,0, 320,200,NULL, NULL, hinstance, NULL)))

        return(0);  // abort

 

   main_window_handle = hwnd; // save window global

 

   // main event loop

   while(1)

   { if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))

     { // test if this is a quit

       if (msg.message == WM_QUIT)

           break;

    

       // translate any accelerator keys

       TranslateMessage(&msg);

 

       // send the message to the window proc

       DispatchMessage(&msg);

     }

   

     // main game processing goes here

 

   } // end event loop

 

   // return to Windows like this

   return(msg.wParam);

}