I cannot resist to comment something on your programming-style:
You #define in your file Globals.h the constants "true" and "false" as
Did you ever try what your program does when you write
if((5 == 5) == true)
or comparing two variables with the same value as
if((VarA == VarB) == true
or even checking a boolean variable as I frequently see in code
if(BoolVar == true)
Astonishingly the comparision will go wrong and finding the cause for this can cost you some time! The excuse "I do not compare in my code something to true" will help you, but it does not hinder you (or someone else) to do so. I have learnt to do it a little bit different: We all know that a false condition is defined as the value zero, so when using the logic of C we are independent of what value "true" (which in GCC is 1, not -1) is used.
#define false 0 // as we know
#define true !false // whatever the compiler chooses
Sorry, the forum software klobbered your pasted code from your file, it originally red
#define true -1
#define false 0
Even better: just
and use true and false directly...