WinMain()...
...<snip>....
while(!done) // Loop That Runs While done=FALSE
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) // Is There A Message Waiting?
{
if (msg.message==WM_QUIT) // Have We Received A Quit Message?
{
done=TRUE; // If So done=TRUE
}
else // If Not, Deal With Window Messages
{
TranslateMessage(&msg); // Translate The Message
DispatchMessage(&msg); // Dispatch The Message
}
}
else // If There Are No Messages
{
// Draw The Scene. Watch For ESC Key And Quit Messages From DrawGLScene()
if (active) // Program Active?
{
if (keys[VK_ESCAPE]) // Was ESC Pressed?
{
done=TRUE; // ESC Signalled A Quit
}
else // Not Time To Quit, Update Screen
{ tickCount = GetTickCount();
deltaTime = ((float)(tickCount - lastTickCount))/1000;
lastTickCount = tickCount;
timecounter=timecounter+deltaTime;
if (timecounter>1.0)
{
lastcourse=course;
GetGPSData();
deltacourse=(course-lastcourse);
courseincrement=(deltacourse/(1/deltaTime));
timecounter=0;
}
//course has been updated and gldraw shows this rather than incremented ver
lastcourse=lastcourse+courseincrement;
DrawGLScene(); // Draw The Scene
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
}
}
GetGPSData()
void GetGPSData()
{int Code;
char *pend;
// lock data buffer
mgcLockData(1);
// get timestamp
Code = mgcGetData(GPRMC_COURSE,(LPSTR)DataBuffer);
if(Code<0) ShowMGC32Error(Code);
// if(Code>0) course=(LPSTR)DataBuffer;
course=strtod(DataBuffer, &pend);
mgcLockData(0); // Lock Data Buffer
Sleep(200);
} /* end GetGPSData */