Erstmal wäre es sinnvoll wenn du mehr als nur diesen Code Schnippsel posten würdest, denn von Checkboxen seh ich da schonmal garnichts. Zu dem was du da gepostet hast:
[autoit]
$msg = GUIGetMsg()
Liefert dir die letzte GUI Nachricht, welche noch nicht zuvor abgefragt wurde (z.B. ein Klick auf einen Button), sofern es keine Nachricht gibt wird 0 zurückgegeben. Da du keine Schleife verwendest um die GUI Nachrichten in sehr kurzen Intevallen abzurufen ist es ziemlich wahrscheinlich, dass du hier an dieser Stelle immer eine 0 zurückbekommen wirst, außer diese Funktion wird in einer Schleife aufgerufen (der Rest des Scriptes fehlt, also keine Aussage hierzu möglich).
[autoit]
$msg = GUIGetMsg()
Switch $msg
Case $msg
Du scheinst den Sinn einer Switch Case Verzweigung nicht verstanden zu haben. Du machst hier folgendes:
1. Du bekommst eine GUI Nachricht $msg (wie oben bereits angedeutet sehr wahrscheinlich nur eine 0)
2. Der Case $msg ist immer erfüllt, völlig egal welchen Wert $msg nun hat, ist ja auch logisch, denn ein "case" einer switch case Verzweigung stellt nur eine if Bedingung von mehreren dar. Solche Verzweigungen sind Sinnvoll wenn man einen Variablen Wert ($msg) mit mehreren verschiedenen konstanten Werten Vergleichen will. So würde es als if Bedingung ausschaun:
$msg = GUIGetMsg()
if $msg = $msg then .... ; das ist immer true!
Du erkennst deinen Fehler?
Poste also bitte mal das ganze Script, dann kann man dir auch Lösungen aufzeigen die eher sinnvoll sind.