Una opción es que en el evento de pulsar el botón chequees o deschequees según el estado del botón, lo puedes hacer directamente, o creando una variable miembro de control del botón.
bool estado=((CButton*)GetDlgItem(IDC_BOTON1))->GetCheck();
((CButton*)GetDlgItem(IDC_BOTON1))->SetCheck(!estado);
Espero qeu te sirva.