GUIGetMsg() can work in advanced mode(see autoit help).
I use something like that
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] == $GUI_EVENT_CLOSE
Exit
Case $msg[0] == $StartService_Button And $msg[1] == $Services_GUI
_ServiceStartStop(1)
Case $msg[0] == $StopService_Button And $msg[1] == $Services_GUI
_ServiceStartStop()
EndSelect
WEnd