Because of the method I used to create buttons on the skins. Any other color depth other than 24 bit, and the results of the visual basic point function were random and unreliable.
It knows which button you hit because it does a "point" call on the mouse position on the skin file. I tried a million ways to read that information in color depths other than 24 bit, and the RGB value returned was totally random unless it was in 24 bit. The problem is totally VB's fault and it's at a lower level than I've got control over.