Bien trabajado, te iba a proponer esa solución.
Para mí que hay un bug en AutoIt porque leí por algún sitio que
$GUI_BKCOLOR_TRANSPARENT valía para otros controles además de los label, pero ahora no lo encuentro.
He probado otras opciones, por ejemplo hacer checkboxes a partir de botones (porque resulta que un checkbox es un tipo especial de botón) a base de toquitear los estilos, pero el resultado es igual o peor...
Además, aún es más raro porque si intentas cambiar el color del texto del checkbox con
GUICtrlSetColor... ¡sorpresa! sólo cambia el recuadro de puntitos que marca el texto ¡no el texto! Y además de una manera extraña, no pone el color que le pongo sino que parece que hace alguna operación con el de fondo porque el resultado varía si cambio esto último. En los botones normales sí funciona bien...
Conclusión, tu solución es la mejor, además así podrás cambiar el color del texto del label, en el checkbox no he encontrado manera...
Para hacerlo menos engorroso puedes hacerte una función que haga el checkbox, algo así como
Código: Seleccionar todo
Func _miCreateCheckboxTrans(<mismos parámetros que para GUICtrlCreateCheckbox>)
Local $chk = GUICtrlCreateCheckbox(...)
GUICtrlCreateLabel(...)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
;También se podría poner el color del texto con GUICtrlSetColor, para eso habría que añadir el color a los parámetros de la función
Return $chk
EndFunc
Así los creas en una línea, luego para manipularlos ten en cuenta que lo que tienes es la cajita, no el label, para acceder al label o la función devuelve un array con los dos controles, o los asocias de alguna manera, o te creas funciones que manejen totalmente este tipo de "control compuesto". Pero normalmente no habrá que complicarse la vida, la función se usará simplemente para hacer más fácil la creación del control y luego te olvidas.