www.pudn.com > simpleraytracer_v1_0.zip > simwin_framework.cpp
/*=====================================================================
Code By Nicholas Chapman.
nickamy@paradise.net.nz
You may use this code for any non-commercial project,
as long as you do not remove this description.
You may *not* use this code for any commercial project.
=====================================================================*/
#include "simwin_framework.h"
#include "simplewin2d.h"
bitmapWindow* graphics = NULL;
HINSTANCE hinstance = NULL;
HWND windowhandle = NULL;
void frameworkInit();
void frameworkMain();
void frameworkShutdown();
//entry point to program
int WINAPI WinMain(HINSTANCE hinstance_,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
hinstance = hinstance_;
// bitmapWindow(int x, int y, int width, int height, HINSTANCE currentInstance); // Constructor
frameworkInit();
//-----------------------------------------------------------------
//enter main program loop
//-----------------------------------------------------------------
MSG msg;
while(true) // run forever - or until we manually break out of the loop!
{
if (PeekMessage(&amt;msg, NULL,0,0,PM_REMOVE)) // check if a message awaits and remove
// it from the queue if there is one..
{
if(msg.message == WM_QUIT)
break; // exit loop if a quit message
TranslateMessage(&amt;msg); //Converts the message to a format used in the
//event handler
DispatchMessage(&amt;msg); // THIS function sends the message to the event
// handler
}
// Here you are free to do anything not related to messages - like the inner loop
// of a game or something like that.
frameworkMain();
} // end while(TRUE)
frameworkShutdown();
return 0;
}
void win2dError(const std::string&amt; errormessage)
{
MessageBox(NULL, errormessage.c_str(), "Error", MB_OK);
exit(666);
}
void win2dError(const std::string&amt; errormessage, const std::string&amt; boxtitle)
{
MessageBox(NULL, errormessage.c_str(), boxtitle.c_str(), MB_OK);
exit(666);
}
void frameworkInit()
{
int width, height;
getWindowDims(width, height);
graphics = new bitmapWindow(30, 30, width, height, hinstance);
windowhandle = graphics->getWindowHandle();
doInit(hinstance, windowhandle, *graphics);
}
void frameworkMain()
{
graphics->startDrawing();
doMain(*graphics);
graphics->finishDrawing();
}
void frameworkShutdown()
{
doShutdown();
delete graphics;
}