PS:
Sieh von solchen Dingen ab
  if( a == true )
das bringt nichts. A ist sowieso bei dir ein bool. Den musst du in C++ 
nicht auf true vergleichen. Nenn lieber die Variable besser.
static bool button1Pressed = false;
...
   if( button1Pressed )
      ....
da haben alle mehr davon, als wie wenn du sinnlose Vergleiche machst. 
Das if interessiert sich nur dafür, ob der Ausdruck in der Klammer true 
oder false ergibt. Ob das jetzt so ist, weil die boolsche Variable 
selbst schon true oder false ist, oder ob du da noch einen Vergleich 
machst, das ist dem if völlig wurscht. Das if interessiert nur, welches 
Ergebnis der Ausdruck insgesamt hat, true oder false. Ob dazu ein 
Vergleiche notwendig ist oder nicht, ist dem if Powidel.
Und noch ein PS:
Du sollst nicht selbst über den Status des Buttons Buch führen, sondern 
den Button selbst befragen, ob er gedrückt ist oder nicht! Dann kann 
auch nie irgdnwas durcheinander kommen. Wenn du dieselbe 'Information' 
wie der Button selbst noch einmal speicherst (denn der Button führt ja 
selber auch darüber Buch ob er gedrückt ist oder nicht, schliesslich 
muss er sich ja anders hinmalen), dann läufst potentiell in das 
Datenbank Dlemma: Speichere dieselbe Information 5 mal ab, und alle 5 
Kopien werden irgendwann nicht mehr übereinstimmen. Man speichert ein 
und dieselbe Information nur ein einziges mal, dann kann da auch nichts 
inkonsistent sein.