// 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);
}